Организация эвм и систем контрольная
Задача 1
13EE:0100 A14806 MOV AX,[0648] //записать в АХ данные из ячейки памяти с адресом 0648
13EE:0103 B102 MOV CL,02 //занести в CL число 2
13EE:0105 F6F1 DIV CL //содержимое АХ разделить на содержимое CL и результат
записать в АХ
13EE:0107 8B164006 MOV DX,[0640] //записать в DХ данные из ячейки памяти с адресом 0640
13EE:010B 03164406 ADD DX,[0644] //прибавить к содержимому DX число, находящееся в ячейке
памяти с адресом 0644
13EE:010F 29C2 SUB DX, AX //вычесть из DX AX
13EE:0111 F4 HLT // прекращение работы программы
Решение задачи 1:
-r
AX=0000 BX=0000 CX=0011 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=13E9 ES=13E9 SS=13E9 CS=13E9 IP=0100 NV UP EI PL NZ NA PO NC
13E9:0100 A14806 MOV AX,[0648] DS:0648=0000
-e 0640
13E9:0640 00.43
-e0644
13E9:0644 00.2
-e 0648
13E9:0648 00.18
-d0640
13E9:0640 43 00 00 00 02 00 00 00-18 00 00 00 00 00 00 00 C……………
-g 111
AX=000C BX=0000 CX=0002 DX=0039 SP=FFFE BP=0000 SI=0000 DI=0000
DS=13E9 ES=13E9 SS=13E9 CS=13E9 IP=0111 NV UP EI PL NZ AC PE NC
13E9:0111 0000 ADD [BX+SI],AL DS:0000=CD
Рисунок 1 — Алгоритм работы программы для решения задачи 1
Задача 2
13E2:0100 B80000 MOV AX,0000 \обнуление регистра
13E2:0103 BB0000 MOV BX,0000 \обнуление регистра
13E2:0106 B90000 MOV CX,0000 \обнуление регистра
13E2:0109 BA0000 MOV DX,0000 \обнуление регистра
13E2:010C BB6609 MOV BX,0966 \занесение адреса ячейки памяти с данными в регистр ВХ
13E2:010F 8A07 MOV AL,[BX] \занесение в регистр BL данных из ячейки с адресом [Bx]
13E2:0111 8A4F02 MOV CL,[BX+02] \занесение в регистр CL данных из ячейки с адресом [Bx+2]
13E2:0114 38C8 CMP AL, CL \сравнение AL и BL
13E2:0116 7410 JZ 0128 \если равно, перейти по адресу 128
13E2:0118 7F0A JG 0124 \если больше, перейти по адресу 124
13E2:011A B203 MOV DL,03 \занести число 3 в регистр DL
13E2:011C F6E2 MUL DL \AX:=AX*DL
13E2:011E 29C1 SUB CX, AX \CX:=CX-AX
13E2:0120 89C8 MOV AX, CX \занести в АХ значение регистра СХ
13E2:0122 EB06 JMP 012A \преёти по адресу 12А
13E2:0124 31C8 XOR AX, CX \сложение по модулю 2 АХ и СХ
13E2:0126 EB02 JMP 012A \перейти по адресу 12А
13E2:0128 00C8 ADD AL, CL \сложить AL и CL
13E2:012A F4 HLT \конец программы
Для проверки работоспособности программы запустить в отладчике DEBUG файл DEN_Z2.com
Рисунок 2 — Алгоритм работы программы для решения задачи 2
Задача 3
13E1:0100 B80100 MOV AX,0001 \занести 1 в АХ
13E1:0103 BB0004 MOV BX,0400 \адрес первой ячейки с данными в ВХ
13E1:0106 8B0F MOV CX,[BX] \количество элементов массива в СХ
13E1:0108 8B7F02 MOV DI,[BX+02] \эл-т массива в DI
13E1:010B 83FF00 CMP DI,+00 \сравнение элемента массива с 0
13E1:010E 7F07 JG 0117 \если больше то перейти по адресу 117
13E1:0110 83C302 ADD BX,+02 \в BX адрес следующего элемента массива
13E1:0113 E2F3 LOOP 0108 \сx:=cx-1; если сх>0, то перейти по адресу 108
13E1:0115 EB07 JMP 011E \переход на завершение работы программы
13E1:0117 F7E7 MUL DI \Ax умножить на положит элемент массива
13E1:0119 83C302 ADD BX,+02 \в BX адрес следующего элемента массива
13E1:011C E2EA LOOP 0108 \сx:=cx-1; если сх>0, то перейти по адресу 108
13E1:011E F4 HLT \завершение работы программы
-d400
13E1:0400 07 00 01 00 FE FF 07 00-04 00 FB FF FD FF 01 00 …………….
13E1:0410 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 …………….
-r
AX=0000 BX=0000 CX=001F DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=13E1 ES=13E1 SS=13E1 CS=13E1 IP=0100 NV UP EI PL NZ NA PO NC
-g 11f
AX=001C BX=040E CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0001
DS=13E1 ES=13E1 SS=13E1 CS=13E1 IP=011F NV UP EI PL NZ NA PO NC
Рисунок 3 — Алгоритм работы программы для решения задачи 3
Задача 4
1398:0100 BB0004 MOV BX,0400 \ввод в ВХ адреса ячейки памяти с переменной К
1398:0103 B90700 MOV CX,0007 \7 в СХ
1398:0106 E8F700 CALL 0130 \вызов подпрограммы
1398:0109 BE0000 MOV SI,0000 \обнуление SI
1398:010C 87C6 XCHG AX, SI \обмен занчениями между AX и SI
1398:010E 8B0F MOV CX,[BX] \К в СХ
1398:0110 E8ED00 CALL 0130 \вызов подпрограммы
1398:0113 BF0000 MOV DI,0000 \обнуление DI
1398:0116 87C7 XCHG AX, DI \обмен значениями между AX и DI
1398:0118 89D9 MOV CX,[BX] \К в СХ
1398:011A 83C102 ADD CX,+02 \K+2 в СХ
1398:011D E8E000 CALL 0130 \вызов подпрограммы
1398:0120 29F0 SUB AX, SI \(К+2)!-7!
1398:0122 BA0000 MOV DX,0000 \обнуление DХ
1398:0125 F7F7 DIV DI \(К+2)!-7!/К!
1398:0127 F4 HLT \завершение работы программы
подпрограмма вычисления факториала
1398:0130 mov ax,1 \1 в АХ
1398:0133 mul cx \АХ умножить на СХ
1398:0135 loop 133 \СХ:=CX-1; если сх>0, то перейти по адресу 133
1398:0137 ret \возврат из подпрограммы
Решение
-d400
13E2:0400 03 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 …………….
-r
AX=0000 BX=0000 CX=0038 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=13E2 ES=13E2 SS=13E2 CS=13E2 IP=0100 NV UP EI PL NZ NA PO NC
-g128
AX=2776 BX=0400 CX=0000 DX=0004 SP=FFFE BP=0000 SI=13B0 DI=0006
DS=13E2 ES=13E2 SS=13E2 CS=13E2 IP=0128 NV UP EI NG NZ NA PO CY
13E2:0128 F4 HLT
Рисунок 4 — Алгоритм работы программы для решения задачи 4
Рисунок 5 — Алгоритм работы подпрограммы вычисления факториала