Программирование в двоичных кодах
Адреса памяти.
001 200 B2 мл. байт памяти.
002 000 В3 ст. байт памяти.
003 001 LXIB Запись исходных данных
в регистры В и С
004 001 В2 В2((С)
005 010 В3 В3((В)
006 160 MOV M,B Запоминание (В)
007 043 INX H Формирование следующего
адреса памяти.
010 161 MOV M,C Запоминание (С)
011 166 HLT Останов.
После выполнения программы сегмент
данных будет иметь следующий
вид:
Адрес Содержимое
200. 001
201. 010
Программа №2
Позволяет занести содержимое регистров В и С в стек(выбранный участок
памяти).
Адреса Команды Мнемоника команд Комментарии
000 061 LXI SP Установка указателя
стека.
001 202 В2 мл.байт адреса.
002 000 В3 ст.байт адреса.
003 001 LXI B Запись исходных данных
в регистры В и С.
004 001 В2
005 010 В3
006 305 PUSH B Запоминание содержимого
регистров В и С в стеке.
007 166 HLT Останов.
Содержимое ячеек после выполнения программы:
Адрес Содержимое
200. 001
201. 010
Программа №3
Извлечение данных из стека, их изменение и занесение обратно в стек.
Запишем в стек (H=000, L=200 и H=000, L=201 ) числа 001 и 200 .
Адрес Команды Мнемоника команд Комментарии
000 061 LXI SP
001 200 В2
002 000 В3
003 301 POP B Извлечение данных
из стека и загрузка их
в регистровую пару В и С
004 004 INR B Увеличение на единицу
регистра В
005 015 DCR C Уменьшение на единицу
содержимого регистра С
006 305 PUSH B Запоминание в стеке
007 166 HLT
Содержимое ячеек до выполнения программы:
|Адре|Содержимое|
|с | |
|200 |001 |
|201 |200 |
Содержимое ячеек после выполнения программы:
|Адре|Содержимое|
|с | |
|200 |000 |
|201 |201 |
Программа №4
Сложение содержимого регистра с содержимым ячейки памяти
|Адреса |Команды |Мнемоника команд|Комментарии |
|000 |041 |LXI H | |
|001 |200 |B2 | |
|002 |000 |B3 | |
|003 |076 |MVI A |Непосредственная загрузка А |
| | | |одним |
| | | |одним из слагаемых |
|004 |010 |B2 | |
|005 |206 |ADD M |Сложение содержимого А с |
| | | |содержимым ячейки памяти |
|006 |167 |MOV M,A | |
|007 |166 |HLT | |
Содержимое ячеек до выполнения программы:
|Адре|Содержимое|
|с | |
|200 |100 |
Содержимое ячеек после выполнения программы:
|Адре|Содержимое|
|с | |
|200 |110 |
Программа №4.1
Сложение двоично-десятичных чисел.
|Адреса |Команды |Мнемоника команд |Комментарии |
|000 |041 |LXI H | |
|001 |200 |B2 | |
|002 |000 |B3 | |
|003 |076 |MVI A | |
|004 |010 |B2 | |
|005 |206 |ADD M |(A)+(M)((A) |
|006 |047 |DAA |Десятичная |
| | | |коррекция |
|007 |167 |MOV M,A | |
|010 |166 |HLT | |
Содержимое ячеек до выполнения программы:
|Адре|Содержимое|
|с | |
|200 |051 (29) |
Содержимое ячеек после выполнения программы:
|Адре|Содержимое|
|с | |
|200 |067 (37) |
Программа №4.2
Вычитание двоично-десятичных чисел
|Адрес|Команд|Мнемоника |
|а |ы |команд |
|000 |041 |LXI H |
|001 |200 |B2 |
|002 |000 |B3 |
|003 |006 |MVI B |
|004 | |B2 |
|005 |076 |MVI A |
|006 |231 |99 |
|007 |220 |SUB B |
|010 |074 |INR A |
|011 |206 |ADD |
|012 |047 |DAA |
|013 |167 |MOV M,A |
|014 |166 |HLT |
Содержимое ячеек до выполнения программы:
|Адре|Содержимое|
|с | |
|200 |045 (25) |
Содержимое ячеек после выполнения программы:
|Адре|Содержимое|
|с | |
|200 |007 (07) |
Программа №5
Логическая операция, сдвиг числа и запоминание слова состояния
|Адрес|Команды |Мнемоника команд |Комментарии |
|а | | | |
|000 |006 |MVI B | |
|001 |200 |B2 | |
|002 |076 |MVI A | |
|003 |001 |B2 | |
|004 |250 |XRA |Сложение по mod2 содержимого А и|
| | | |В. |
|005 |027 |RAL |Циклический сдвиг влево через |
| | | |перенос. |
|006 |061 |LXI SP | |
|007 |202 |B2 | |
|010 |000 |B3 | |
|011 |365 |PUSH PSW |Запоминание в стеке Слова |
| | | |Состояния Программы. |
|012 |166 |HLT | |
Анализ значений Слова Состояния Программы
|Мнемоника |Значение PSW |
|команды | |
| |(A) |РгF |
|MVI B 200 |xxxxxxx|xx0x0x1|
| |x |x |
|MVI A 001 |0000000|xx0x0x1|
| |1 |x |
|XRA B |1000000|1000011|
| |1 |0 |
|RAL |0000001|1000011|
| |0 |1 |
|LXI SP 202 000 |0000001|1000011|
| |0 |1 |
|PUSH PSW |0000001|1000011|
| |0 |1 |
|HLT |0000001|1000011|
| |0 |1 |
Содержимое ячеек после выполнения программы:
|Адре|Содержимое|
|с | |
|200 |207 |
|201 |002 |
Программа №6
Обнуление области памяти. Программа пересылает нулевое содержимое какого
либо регистра в ячейку памяти.
|Адрес|Команды |Мнемоника команд |Комментарий |
|а | | | |
|000 |227 |SUB A |Обнуление А |
|001 |041 |LXI H | |
|002 |011 |B2 | |
|003 |000 |B3 | |
|004 |167 |MOV M,A |Обнуление ячейки памяти по |
| | | |адресу HL |
|005 |043 |INX H |Адрес следующей ячейки |
|006 |303 |JMP |Безусловный переход по адресу |
|007 |004 |B2 |мл.байт |
|010 |000 |B3 |ст.байт |
Содержимое ячеек до выполнения программы:
|Адре|Содержимое|
|с | |
|011 |Xxx |
|... |Xxx |
|040 |Xxx |
Содержимое ячеек после выполнения программы:
|Адре|Содержимое|
|с | |
|011 |000 |
|... |000 |
|040 |000 |
Программа №7
Режим задания команд с клавиатуры
|Адреса |Команды |Мнемоника команд |
|100 200 |166 |HLT |
Задание с клавиатуры
|Команд|Мнемоника |
|ы |команд |
|303 |JMP |
|200 |B2 |
|100 |B3 |
Программа №8
Условные переходы. Программа позволяет изучить действие условных переходов.
По адресу H=000,L=200 запишем число 002(соответствует нулевому значению
всех флагов в регистре признаков), а по адресу H=000,L=004 – число 302(код
команды условного перехода по ненулевому результату JNZ).
|Адрес|Команды |Мнемоника команд |Комментарии |
|а | | | |
|000 |061 |LXI SP | |
| | скачать работу |
Программирование в двоичных кодах |