Смекни!
smekni.com

Программирование в двоичных кодах (стр. 2 из 3)


Адреса Команды Мнемоника команд Комментарии

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 xxxxxxxx xx0x0x1x
MVI A 001 00000001 xx0x0x1x
XRA B 10000001 10000110
RAL 00000010 10000111
LXI SP 202 000 00000010 10000111
PUSH PSW 00000010 10000111
HLT 00000010 10000111

Содержимое ячеек после выполнения программы:

Адрес Содержимое
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
001 200 B2
002 000 B3
003 361 POP PSW Извлечение из стека ССП
004 * * (JNZ,JZ,JNC,JC,JPO,JPE,JP,JM)
005 000 B2
006 000 B3
007 166 HLT
200 ** -
201 000 -

Варианты выполнения программы

Признак Данные по адресу 004 Данные по адресу 200 Переход к адресу 000
302 (JNZ) 002 (z=0) Есть
ноль 302 (JNZ) 102 (z=1) Нет
312 (JZ) 102 (z=1) Есть
322 (JNC) 002 (c=0) Есть
перенос 322 (JNC) 003 (c=1) Нет
332 (JC) 003 (c=1) Есть
342 (JPO) 002 (p=0) Есть
Четность 342 (JPO) 006 (p=1) Нет
352 (JPE) 006 (p=1) Есть
362 (JP) 002 (s=0) Есть
Знак 362 (JP) 202 (s=1) Нет
372 (JM) 202 (s=1) Есть

Программа №12

Выбор максимального элемента массива.

Адрес Команда Мнемоника команды Комментарий
000 041 LXI H
001 100 B1
002 000 B2
003 016 MVI C Загрузка переменной цикла
004 005 B2
005 176 MOV A,M Загрузка в А первого элемента
006 043 INX H Переход к следующему элементу
007 276 CMP M Если А>М С=0 А<М С=1
010 332 JC Если А<М меняем местами
011 014 B2
012 000 B3
013 176 MOV A,M Перенос в А нового максимума
014 015 DCR C Уменьшение переменной цикла
015 302 JNZ Если переменная цикла не равна 0 то все сначала
016 006 B2
017 000 B3
020 062 STA Сохранение результата в памяти
021 150 B2
022 000 B3
023 166 HLT Конец

2.Выполнение индивидуальных заданий