Ниже приведена таблица, в которой дано подробное описание программы 2 на языке Ассемблера в машинных кодах, а также мнемокод, описание и комментарий к каждой команде.
Таблица 3.
Метки | Адрес | Данные | Мнемокод | Описание команды | Комментарий к команде |
М1 | 0800 0801 | 26 00 | MVI H,01 | (H) (00) запись данных 00h в регистор Н | |
0802 0803 | DB 01 | IN 01 | (A) (01) Ввод в порт по адресу 01h входных данных | ||
0804 | 47 | MOV B,A | (B) (A) сохранение аккумулятора в регистре В | ||
0805 0806 | 1Е 52 | MVI E,52 | (E) 52hзапись данных 52h в регистр E | ||
0807 | A3 | ANA Е | (A) (A) (Е) логическое умножение аккумулятора и данных в регистре Е | ||
0808 | 93 | SUB E | (A) (A) - (Е) Вычитание из аккумулятора содержимого регистра Е | ||
0809 | 4F | MOV С,A | (C) (A) сохранение аккумулятора в регистре C | ||
080A 080B | 3Е 00 | MVI A,00 | (A) 00hзапись данных 00h в аккумулятор | ||
080C | В9 | CMP C | If (А) = (С) then | Сравнение содержимого регистраС с аккумулятором | |
080D 080E 080F | C2 15 08 | JNZ M2 | JMP if Z=0 | Переход при выполнении условия Z=0 | |
0810 0811 | 26 01 | MVI H,01 | (H) 01hзапись данных 01h в регистор Н | ||
0812 0813 0814 | CA 45 08 | JZ M5 | JMP if Z=1 | Переход при выполнении условия Z=1 | |
M2 | 0815 | 78 | MOV A,B | (A) (B) загрузка данных с регистра В в аккумулятор | |
0816 0817 | 1Е 50 | MVI E,50 | (E) 00hзапись данных 50h в регистр E | ||
0818 | A3 | ANA Е | (A) (A) (Е) логическое умножение аккумулятора и данных в регистре Е | ||
0819 | 93 | SUB E | (A) (A) - (Е) Вычитание из аккумулятора содержимого регистра Е | ||
081A | 4F | MOV С,A | (C) (A) сохранение аккумулятора в регистре C | ||
081B 081C | 3Е 00 | MVI A,00 | (A) 00hзапись данных 00h в аккумулятор | ||
081D | В9 | CMP C | If (А) = (С) then | Сравнение содержимого регистраС с аккумулятором | |
081E 081F 0820 | C2 26 08 | JNZ M3 | JMP if Z=0 | Переход при выполнении условия Z=0 | |
0821 0822 | 26 01 | MVI Н,01 | (Н) 01hзапись данных 01h в регистор Н | ||
0823 0824 0825 | CA 45 08 | JZ M5 | JMP if Z=1 | Переход при выполнении условия Z=1 | |
M3 | 0826 | 78 | MOV A,B | (A) (B) загрузка данных с регистра В в аккумулятор | |
0827 0828 | 1Е 58 | MVI E,58 | (E) 58hзапись данных 58h в регистр E | ||
0829 | A3 | ANA Е | (A) (A) (Е) логическое умножение аккумулятора и данных в регистре Е | ||
082A | 93 | SUB E | (A) (A) - (Е) Вычитание из аккумулятора содержимого регистра Е | ||
082B | 4F | MOV С,A | (C) (A) сохранение аккумулятора в регистре C | ||
082C 082D | 3Е 00 | MVI A,00 | (A) 00hзапись данных 00h в аккумулятор | ||
082E | В9 | CMP C | If (А) = (С) then | Сравнение содержимого регистраС с аккумулятором | |
082F 0830 0831 | C2 37 08 | JNZ M4 | JMP if Z=0 | Переход при выполнении условия Z=0 | |
0832 0833 | 26 01 | MVI Н,01 | (Н) 01hзапись данных 01h в регистор Н | ||
0834 0835 0836 | CA 45 08 | JZ M5 | JMP if Z=1 | Переход при выполнении условия Z=1 | |
M4 | 0837 | 78 | MOV A,B | (A) (B) загрузка данных с регистра В в аккумулятор | |
0838 0839 | 1Е 40 | MVI E,40 | (E) 40hзапись данных 40h в регистр E | ||
083A | A3 | ANA Е | (A) (A) (Е) логическое умножение аккумулятора и данных в регистре Е | ||
083B | 93 | SUB E | (A) (A) - (Е) Вычитание из аккумулятора содержимого регистра Е | ||
083C | 4F | MOV С,A | (C) (A) сохранение аккумулятора в регистре C | ||
083D 083E | 3Е 00 | MVI A,00 | (A) 00hзапись данных 00h в аккумулятор | ||
083F | В9 | CMP C | If (А) = (С) then | Сравнение содержимого регистраС с аккумулятором | |
0840 0841 0842 | C2 4E 08 | JNZ M5 | JMP if Z=0 | Переход при выполнении условия Z=0 | |
0843 0844 | 26 01 | MVI Н,01 | (Н) 01hзапись данных 01h в регистор Н | ||
M5 | 0845 | 78 | MOV A,B | (A) (B) загрузка данных с регистра В в аккумулятор | |
0846 0847 | 1Е 13 | MVI E,13 | (E) 13hзапись данных 13h в регистр E | ||
0848 | A3 | ANA Е | (A) (A) (Е) логическое умножение аккумулятора и данных в регистре Е | ||
0849 | 93 | SUB E | (A) (A) - (Е) Вычитание из аккумулятора содержимого регистра Е | ||
084A | 4F | MOV С,A | (C) (A) сохранение аккумулятора в регистре C | ||
084B 084C | 3Е 00 | MVI A,00 | (A) 00hзапись данных 00h в аккумулятор | ||
084D | В9 | CMP C | If (А) = (С) then | Сравнение содержимого регистраС с аккумулятором | |
084E 084F 0850 | C2 59 08 | JNZ M6 | JMP if Z=0 | Переход при выполнении условия Z=0 | |
0851 0852 | 3E 02 | MVI A,02 | (A) 02hзапись данных 02h в аккумулятор | ||
0853 | В4 | ORA H | (A) (A) (H) логическое сложение аккумулятора и данных в H | ||
0854 0855 | D3 80 | OUT 80 | (80) (A) Вывод в порт по адресу 80h выходных данных | ||
0856 0857 0858 | C3 00 08 | JMP M1 | JMP | Безусловный переход на метку М1 | |
M6 | 0859 | 78 | MOV A,B | (A) (B) загрузка данных с регистра В в аккумулятор | |
085A 085B | 1Е 23 | MVI E,23 | (E) (23) запись данных 23h в регистр E | ||
085C | A3 | ANA Е | (A) (A) (Е) логическое умножение аккумулятора и данных в регистре Е | ||
085D | 93 | SUB E | (A) (A) - (Е) Вычитание из аккумулятора содержимого регистра Е | ||
085E | 4F | MOV С,A | (C) (A) сохранение аккумулятора в регистре C | ||
085F 0860 | 3Е 00 | MVI A,00 | (A) 00hзапись данных 00h в аккумулятор | ||
0861 | В9 | CMP C | If (А) = (С) then | Сравнение содержимого регистраС с аккумулятором | |
0862 0863 0864 | C2 6D 08 | JNZ M7 | JMP if Z=0 | Переход при выполнении условия Z=0 | |
0865 0866 | 3E 02 | MVI A,02 | (A) 02hзапись данных 02h в аккумулятор | ||
0867 | В4 | ORA H | (A) (A) (H) логическое сложение аккумулятора и данных в H | ||
0868 0869 | D3 80 | OUT 80 | (80) (A) Вывод в порт по адресу 80h выходных данных | ||
086A 086B 086C | C3 00 08 | JMP M1 | JMP if Z=1 | Безусловный переход на начало программы | |
M7 | 086D | 7C | MOV A,H | (A) (H) загрузка данных с регистра H в аккумулятор | |
086E 086F | D3 80 | OUT 80 | (80) (A) Вывод в порт по адресу 80h выходных данных | ||
0870 0871 0872 | C3 00 08 | JMP M1 | JMP | Безусловный переход на начало программы |
|
|
|
|
Блок-схема 3