Практическая часть. Задание № 3.1.Разработать программу (по вариантам), реализующую указанную формулу, исполнить программу в отладчике Debug с двумя наборами исходных данных

Задание № 3.1.Разработать программу (по вариантам), реализующую указанную формулу, исполнить программу в отладчике Debug с двумя наборами исходных данных, проверить правильность результатов.

1. Х = -4А + (В + С)/4 + 2 5. X = - (С + 2А + 4В + 8 )
2. X = (А - В) / 4 - 2С + 5 6. X = -А/2 + 4( В + 1 ) - ЗС
3. X = (А/2 + В)/4 + С-1 7. X = А - 5( В - 2С ) + 2
4. X = (7А - 2В - 100) / 2 + С 8. Х = 6A + (В-С + 1)/2

Заполните таблицу (значения параметров по вариантам):

Вариант A B C X
dec hex dec hex dec hex dec hex
1. D1 h 5C h A2 h    
2. F1 h 3A h E2 h    
3. 7A h 8D h 7C h    
4. 1C h 5E h 3D h    
5. 6D h 2F h 9E h    
6. 7E h D4 h F5 h    
7. B h A7 h 2B h    
8. D2 h B3 h 4A h    

В процессе трассировки программы заполнить таблицу (для одного набора данных):

Номер шага Команда AX BX CX DX CS IP DS
                 

Контрольные вопросы и задания.

1. Напишите необходимые команды для перемещения чисел 1, 2, и 3 в регистры AX, BX, и CX.

2. Покажите, как хранится в памяти байты 16-разрядного числа 0A6Bh.

3. Какая из команд приведенного ниже фрагмента кода программы записана с ошибкой? Объясните, в чем это ошибка заключается.

; описание данных

var1 DW 0

var2 DW 6

var3 DB 5

; фрагмент кода программы

MOV AX, BX

MOV var2, AL

MOV AX, BL

MOV BH, 4A6FH

MOV DX, 3

MOV AL, var3

MOV CS, 0

MOV IP, AX

MOV var1, var2

MOV DS, 1000H

MOV DS, ES

4. Дан фрагмент программы. Отметьте команды в которых необходимо использовать оператор PTR.

; описание данных

val_1 DB 10h, 20h

val_2 DW 1000h

; фрагмент кода программы

MOV AL, val_1

MOV DL, [BX]

MOV AL, val_1

MOV CL, val_2

5. Какое будет 16-разрядное значение в операнде получателе после выполнения каждой из ниже следующих команд. Если некоторые команды неправильные, запишите в ответе слово «ошибка».

; фрагмент кода программы

; код программ значение перед значение после

MOV AX, BX ; AX = 0023, BX = 00A5 AX = ?

MOV AH, 3 ; AX = 06AF AX = ?

MOV DL, count ; DX = 8F23, count = 1A DL = ?

MOV BL, AX ; BX = 00A5, AX = 4000 DL = ?

MOV DI, 100h ; DI = 06B9 DI = ?

MOV DS, CX ; DS = 0FB2, CX = 0020 DS = ?

MOV var1, BX ; BX = A000, var1 = ?

MOV count, AX ; count = 25, AX = 4000 count = ?

MOV var1, var2 ; var1 = 0400, var2 = 0500 var1 = ?

6. Определите тип адресации операнда, используемого в каждой из следующих команд:

a. MOV AL, 20 ;

b. MOV BX, OFFSET mes ;

7. Какой будет абсолютный первого слова, помещенного в стек, если указатель SP инициализирован значением 0100, а сегмент кода загружен по абсолютному адресу 18400h?

8. В каждой из команд приведенного фрагмента кода программы отметьте те, где необходимо использовать оператор PTR. Свой выбор обоснуете.

; описание данных

bval DB 10h, 20h

wval DW 1000h

; фрагмент кода программы

MOV AL, bval ;

MOV DL, [BX] ;

MOV CL, wval ;

9. В предположении, что array имеет смещение – 0120, заполните значения регистров, указанных с правой стороны, после выполнения каждой из команд приведенного фрагмента кода программы.

; описание данных

array DW 10h, 20h

val1 DW array

val2 DW 0

; фрагмент кода программы

MOV AX, @data ;

MOV DS, AX ; DS = ?

MOV AX, val1 ; AX = ?

MOV BX, array ; BX = ?

XCHG AX, BX ; AX = ?

MOV val2, BX ; val2 = ?

10. Из каких полей состоит строка программы на ассемблере ?

11. Какие поля обязательны, а какие можно опустить ?

12. Назначение директив stack, dataseg и codeseg.

13. Назначение директив db, dw.

14. Назначение оператора dup в директивах db, dw.

15. Назначение директивы end.

16. В чем различие между командами:

mov АХ, ВХ;

mov AX, [ВХ];

mov [АХ], ВХ ?

17. Какая директива завершает текст программы?

18. В чем различие между командой mov А, 1 и директивой A dw 1 ?

19. Пусть имя файла исходной программы - LAB.ASM . Что будут содержать файлы: LAB.OBJ, LAB.LST, LAB.EXE?

20. Какое значение будет в регистре AX после выполнения следующих команд ?

mov ax, 22h

mov cl, 2

mul cl

21. Какое значение будет в регистрах AX и DX после выполнения следующих команд?

mov dx, 0

mov ax, 222h

mov cx, 100h

mul cx

22. Какое значение будет в регистре AX после выполнения следующих команд ?

mov ax, 63h

mov bl, 10h

div bl

23. Какое значение будет в регистрах AX и DX после выполнения следующих команд ?

mov ax, 1234h

mov dx, 0

mov bx, 10h

div bx

24. Какое значение будет в регистрах AX и DX после выполнения следующих команд ?

mov ax, 4000h

mov dx, B00

mov bx, 10h

div bx

25. Напишите команды для умножения числа –5 на 3 и сохраните результат в 16-разрядной переменной val_1.

26. Напишите команды для деления числа –276 на 10 и сохраните результат в 16-разрядной переменной val_2.