Изучение логических операций

Для выполнения заданий данного пункта необходимо перейти к двоичной форме записи содержания регистров.

1. Выполнить операцию логического умножения чисел101000112 (A316) и 100010112 (8B16) с помощью любой команды: ANA r, ANA M, ANA D8.

Адрес Код Мнемоника Операнд Комментарий

0800 3E A3 MVI A, A3 10100011→A

0802 06 8B MVI B, 8B 10001011→B

0804 A0 ANA B A&B→A

0805 76 HLT Конец

Проверить правильность результата и зафиксировать в отчете содержимое регистров А, F.

2. Спомощью байта-маски 001000012 (2116) сбросить 1 и 4 биты байта 001100112 (3316) с применением одной из команд: ANA r, ANA M, ANA D8.

Адрес Код Мнемоника Операнд Комментарий

0800 21 40 08 LXI H, 0840 08→H, 40→L

0803 3Е 33 MVI A, 33 00110011→A

0805 36 21 MVI M, 21 00100001→M

0807 А6 ANA М A&М→A

0808 76 HLT Конец

Проверить и зафиксировать в отчете содержимое регистров А, M, F.

3. Выполнить операцию логического сложения чисел 101000112 (А316) и 100010112 (8В16) с применением одной из команд: ORA r, ORA M, ORI D8.

Адрес Код Мнемоника Операнд Комментарий

0800 21 40 08 LXI H, 0840 08→H, 40→L

0803 3Е A3 MVI A, A3 10100011→A

0805 36 8B MVI M, 8B 10001011→M

0807 B6 ORA М A+М→A

0808 76 HLT Конец

Проверить и зафиксировать в отчете содержимое регистров А, M, F.

4. С помощью байта-маски 100010002 (8816) установить 3 и 7 биты байта и 001100112 (3316) с применением одной из команд: ORA r, ORA M, ORI D8.

Адрес Код Мнемоника Операнд Комментарий

0800 3E 33 MVI A, 33 00110011→A

0802 0E 88 MVI C, 88 10001000→C

0804 B1 ORA C A&C→A

0805 76 HLT Конец

Проверить и зафиксировать в отчете содержимое регистров А, C, F.

5. С помощью команды СМА инвертировать число 100010102 (8А16).

Адрес Код Мнемоника Операнд Комментарий

0800 3E 8A MVI A, 8A 10001010→A

0802 2F CMA Ā→A

0803 76 HLT Конец

Проверить и зафиксировать в отчете содержимое регистров А, F.

6. Инвертировать флаг переноса регистра F.

Адрес Код Мнемоника Операнд Комментарий

0800 3F CMC С → С

0802 76 HLT Конец

Проверить и зафиксировать в отчете содержимое регистра F до и после выполнения программы.

7. Задан массив чисел: 0А00←0116; 0А01←0516; 0А02←0216; 0А03←0116. Пользуясь командами INX r и DCX r, определить сумму элементов массива. Перед выполнением программы необходимо ввести массив в память.

Адрес Код Мнемоника Операнд Комментарий

0800 21 01 0A LXI H, 0A01 0A→H, 01→L

0803 3A 00 0A LDA A, 0A00 (0A00)→A

0806 86 ADD M A+M→A

0807 23 INX H 0A→H, 02→L

0808 86 ADD M A+M→A

0809 23 INX H 0A→H, 03→L

080A 86 ADD M A+M→A

080B 76 HLT Конец

Адрес Код Мнемоника Операнд Комментарий

0800 21 02 0A LXI H, 0A02 0A→H, 02→L

0803 3A 03 0A LDA A, 0A03 (0A03)→A

0806 86 ADD M A+M→A

0807 2B DCX H 0A→H, 01→L

0808 86 ADD M A+M→A

0809 2B DCX H 0A→H, 00→L

080A 86 ADD M A+M→A

080B 76 HLT Конец

Проверить и зафиксировать в отчете содержимое регистров А, F.

8. Задан массив чисел: 0А00←0116; 0А01←0516; 0А02←0216; 0А03←0116. Пользуясь командами INR M и DCR M уменьшить 1 и 2 элементы массива на единицу, 3 и 4 элементы массива увеличить на единицу. Перед выполнением программы необходимо ввести массив в память МП.

Адрес Код Мнемоника Операнд Комментарий

0800 21 00 0A LXI H, 0A00 0A→H, 00→L

0803 35 DCR M M-1→M

0804 23 INX H 0A→H, 01→L

0805 35 DCR M M-1→M

0806 23 INX H 0A→H, 02→L

0807 34 INR M M+1→M

0808 23 INX H 0A→H, 03→L

0809 34 INR M M+1→M

080A 76 HLT Конец

Проверить правильность выполнения программы. Записать исходный и модифицированный массивы данных.

9. Определите сумму трех однобайтных чисел, находящихся по адресам 0921 (0316), 0В44 (0516), 0D88 (0116), пользуясь командой сложения содержимого регистровых пар DAD r. Предварительно необходимо записать числа в память МП.

Адрес Код Мнемоника Операнд Комментарий

0800 21 21 09 LXI H, 0921 09→H, 21→L

0803 86 ADD M A+M→А

0804 01 23 02 LXI B, 0223 02→B, 23→C

0807 09 DAD B 0B→H, 44→L

0808 86 ADD M A+M→А

0809 11 44 02 LXI D, 0244 02→D, 44→E

080C 19 DAD D 0D→H, 88→L

080D 86 ADD M A+M→А

080E 76 HLT Конец

Проверить правильность выполнения программы. Записать содержимое регистров A, F, M, регистровых пар HL, BC, DE.

10. Найти сумму двух десятичных однобайтных чисел 77 и 18.

Адрес Код Мнемоника Операнд Комментарий

0800 3E 77 MVI A, 77 77→A

0802 C6 18 ADI 18 18+A→A

0804 27 DAA A16→A10

0805 76 HLT Конец

Проверить и зафиксировать в отчете содержимое регистров А, F.

Изучение команд переходов

1. Для исследования команд JMP A16, CALL A16, RZ, NOP и HLT записать и пошагово выполнить подпрограмму, которая представляет собой подпрограмму умножения двух 8-разрядных двоичных чисел без знака.

Адрес Код Метка Мнемоника Операнд Комментарий

0850 31 C0 0B START LXI SP, 0BC0 Начало стековой области

определить адресом 0BC0

0853 00 NOP

0859 CD 60 08 CALL 0860 Перейти к команде по

адресу 0860

085C 00 NOP

085F 76 HLT

0860 21 00 00 MULT LXI H, 0000 Обнулить регистровую

пару HL

0863 4A MOV C, D Множимое загрузить в

младший байт регистровой

пары ВС

0864 06 00 MVI B, 00 Пара ВС содержит множимое

0866 7B CYCLE MOV A, E Множитель загрузить в

аккумулятор

0867 A7 ANA A Множитель равен нулю?

0868 C8 RZ Если да, то возврат по адресу

085С

0869 09 DAD B Если нет, то прибавить

множимое

086A 1D DCR E Вычесть 1 из множителя

086B C3 66 08 JMP 0866 Перейти по адресу 0866

В данной программе подпрограмма умножения MULT представляется в виде подпрограммы, вызываемой командой CALL А16, при обращении к которой множимое должно находиться в регистре D, а множитель – в регистре Е микропроцессора КР580ИК 80А. Результат умножения, который может быть уже 16-разрядным числом, получается в регистровой паре HL. Поэтому для выполнения данной программы предварительно в регистры D и Е нужно занести множимое и множитель в виде двоичных (шестнадцатеричных) чисел.

2. Исследовать команды управления PCHL и JZ. Для этого предыдущую программу умножения изменить с использованием данных команд и выполнить ее в режиме трассировки.

Адрес Код Метка Мнемоника Операнд Комментарий

0850 21 5A 08 START LXI H, 085A

0853 00 NOP

0854 00 NOP

0855 E9 PCHL

0856 00 NOP

0857 00 NOP

0858 00 NOP

0859 76 HLT

085A 21 00 00 MULT LXI H, 0000

085D 4A MOV C, D

085E 06 00 MVI B, 00

0860 7B CYCLE MOV A, E

0861 A7 ANA A

0862 CA 58 08 JZ 0858

0865 09 DAD B

0866 1D DCR E

0867 C3 60 08 JMP 0860

3. Исследовать команды работы со стеком PUSH H, POP H, XTHL, SPHL. Для этого предыдущую программу умножения изменить с использованием данных команд и выполнить ее в режиме трассировки.

Адрес Код Метка Мнемоника Операнд Комментарий

0850 21 57 08 START LXI H, 0857

0853 E9 PCHL

0854 00 NOP

0856 76 HLT

0857 21 90 08 MULT LXI H, 0890

085A F9 SPHL

085B 00 NOP

085C 4A MOV C, D

085D 06 00 MVI B, 00

085F 21 00 00 LXI H, 0000

0862 E3 XTHL

0863 21 00 00 LXI H, 0000

0866 E1 CYCLE POP H

0867 7B MOV A, E

0868 A7 ANA A

0869 CA 54 08 JZ 0854

086C 09 DAD B

086D 1D DCR E

086E E5 PUSH H

086F C3 66 08 JMP 0866

Работа с прерываниями

1. Найти код буквы g, цвет буквы – синий

. 1) находим в таблице букву g 2) движемся по вертикали вверх, находим код синего цвета - 4*. 3) движемся по горизонтали влево, находим номер символа – 67. Т. о. код буквы gМы получили– 4*67. Т. к. 3 байт кода символа (*) безразличен, примем его равным 1. Т. о. код буквы g– 4167 Изучение логических операций - student2.ru

4. Написать программу для вывода на экран монитора КР580 слово joker. Цвет букв голубой.

адрес код команды метка мнемоника и операнд комментарии  
 
3E   MVI A,61 61 => A, A=61  
    {цвет символа в Акк}  
D3   OUT 00 A->PORT 00,PORT 00=61  
    {цвет символа в порт монитора}  
3E   MVI A,6A 6A => A, A=6A  
6A     {номер символа в Акк, j->A}  
D3   OUT 00 A =>PORT 00,PORT 00=6A  
    {номер символа в порт монитора}  
3E   MVI A, 61 61 => A, A=61  
    {цвет символа в Акк}  
000A D3   OUT 00 A =>PORT 00,PORT 00=61  
000B     {цвет символа в порт монитора}  
000C 3E   MVI A, 6F 6F => A, A=6F  
000D 6F     {номер символа в Акк, o->A}  
000E D3   OUT 00 A->PORT 00,PORT 00=6F  
000F     {номер символа в порт монитора}  
3E   MVI A, 61 61 => A, A=61  
    {цвет символа в Акк}  
D3   OUT 00 A =>PORT 00,PORT 00=61  
    {цвет символа в порт монитора}  
3E   MVI A,6B 6B => A, A=6B  
6B     {номер символа в Акк, k->A}  
D3   OUT 00 A =>PORT 00,PORT 00=6B  
    {номер символа в порт монитора}  
3E   MVI A, 61 61 => A, A=61  
    {цвет символа в Акк}  
001A D3   OUT 00 A =>PORT 00,PORT 00=61  
001B     {цвет символа в порт монитора}  
001C 3E   MVI A,65 65 => A, A=65  
001D     {номер символа в Акк, e->A}  
001E D3   OUT 00 A =>PORT 00,PORT 00=65  
001F     {номер символа в порт монитора}  
3E   MVI A, 61 61 => A, A=61  
    {цвет символа в Акк}  
D3   OUT 00 A =>PORT 00,PORT 00=61  
    {цвет символа в порт монитора}  
3E   MVI A, 72 72 =>A, A=72  
    {номер символа в Акк, r->A}  
D3   OUT 00 A =>PORT 00,PORT 00=65  
    {номер символа в порт монитора}  
  HLT останов  

В результате на экране должно появиться такое изображение:

Изучение логических операций - student2.ru

5. Вывести на экран монитора КР580 свою фамилию и имя. Записать программу в отчет вместе с кодами команд и комментариями.

Наши рекомендации