Московский Инженерно – Физический Институт (Государственный Университет)
Работа №1
Изучение структуры однокристального микропроцессора КР580ВМ80А
Выполнила
Студентка Первинкина
Группы Ф6-01н
2006г
Загрузка регистров общего назначения
Задание:
Выполнить загрузку регистров:
а) B:= F0
С:=33
D:= EE
E:=AA
H:=00
L:=19
A:=FF
Адрес ЯП |
Мнемоника команды |
Код |
Комментарий |
0800 0801 |
MVI B, DATA8 |
06 F0 |
Загрузка регистра B B= F0 |
0802 0803 |
MVI C, DATA8 |
0E 33 |
Загрузка регистра C C=33 |
0804 0805 |
MVI D, DATA8 |
16 EE |
Загрузка регистра D D= EE |
0806 0807 |
MVI E, DATA8 |
1E AA |
Загрузка регистра E E=AA |
0808 0809 |
MVI H, DATA8 |
26 00 |
Загрузка регистра H H=00 |
080A 080B |
MVI L, DATA8 |
2E 19 |
Загрузка регистра L L=19 |
080C 080D |
MVI A, DATA8 |
3E FF |
Загрузка регистра A A=FF |
080E |
NOP |
00 |
|
2. Загрузка пары регистров общего назначения 16-разрядными данными
Задание:
Выполнить загрузку пар регистров:
а) BC:=FFFF
DE:=0123
HL:=55AA
Адрес ЯП |
Мнемоника команды |
Код |
Комментарий |
0800 0801 0802 |
LXI BC, DATA16 |
01 FF FF |
Загрузка пары регистров BC=FFFF |
0803 0804 0805 |
LXI DE, DATA16 |
11 23 01 |
Загрузка пары регистров DE=0123 |
0806 0807 0808 |
LXI HL, DATA16 |
21 AA 55 |
Загрузка пары регистров HL=55AA |
0809 |
NOP |
00 |
|
Загрузка указателя стека
Задание:
Выполнить загрузку указателя стека, используя команду непосредственной загрузки:
SP:=0820
Адрес ЯП |
Мнемоника команды |
Код |
Комментарий |
0800 0801 0802 |
LXI SP, DATA16 |
31 20 08 |
Загрузка указателя стека = 0820 |
0803 |
NOP |
00 |
|
Выполнить загрузку указателя стека, используя команду косвенной загрузки:
SP:=0825
Адрес ЯП |
Мнемоника команды |
Код |
Комментарий |
0800 0801 0802 |
LXI HL, DATA16 |
21 25 08 |
Загрузка пары регистров HL=0825 |
0803 |
SPHL |
F9 |
Загрузка указателя стека = HL |
0804 |
NOP |
00 |
|
4. Загрузка счетчика команд
Задание:
Выполнить загрузку счётчика команд путём использования команды косвенной загрузки (переход с адреса 0800 на указанные ниже адреса):
а) 0860
0810
085F
Адрес ЯП |
Мнемоника команды |
Код |
Комментарий |
0800 0801 0802 |
LXI HL, DATA16 |
21 60 08 |
Загрузка пары регистров HL=0860 |
0803 |
PCHL |
E9 |
Загрузка счётчика команд = HL |
0860 0861 0862 |
LXI HL, DATA16 |
21 10 08 |
Загрузка пары регистров HL=0810 |
0863 |
PCHL |
E9 |
Загрузка счётчика команд = HL |
0810 0811 0812 |
LXI HL, DATA16 |
21 5F 08 |
Загрузка пары регистров HL=085F |
0813 |
PCHL |
E9 |
Загрузка счётчика команд = HL |
085F |
NOP |
00 |
|
Пересылка
Задание:
Выполнить указанные ниже пересылки, предварительно загрузив регистры:
а) в B из A (значение 00)
в C из L (значение 21)
в H из B (значение EF)
Адрес ЯП |
Мнемоника команды |
Код |
Комментарий |
0800 0801 |
MVI A, DATA8 |
3E 00 |
Загрузка регистрa A=00 |
0802 |
MOV B,A |
47 |
Пересылка из А в В |
0803 0804 |
MVI L, DATA8 |
2E 21 |
Загрузка регистра L=21 |
0805 |
MOV C,L |
4D |
Пересылка из L в C |
0806 0807 |
MVI B, DATA8 |
06 EF |
Загрузка регистра B=EF |
0808 |
MOV H,B |
60 |
Пересылка из B в H |
0809 |
NOP |
00 |
|
Московский Инженерно – Физический Институт (Государственный Университет)
Работа №2
Элементы программирования микропроцессора КР580ВМ80А
Выполнила
Студентка Первинкина
Группы Ф6-01н
2006г
Команды сложения 8-разрядных чисел
Задание:
1) Запишите в память, начиная с адреса 0800 коды программы, реализующей:
A=A+B+M+5:
a)A:=4A
B:=1B
M:(0900)=33
Адрес ЯП |
Мнемоника команды |
Код |
Комментарий | |
0800 0801 |
MVI A, DATA8 |
3E 4A |
Загрузка регистра A A= 4A | |
0802 0803 |
MVI B, DATA8 |
06 1B |
Загрузка регистра B B=1B | |
0804 |
ADD B |
80 |
A=A+B | |
0805 0806 0807 |
*LXI H, 0900 |
21 00 09 |
Загрузка регистра H H=0900 |
F=16 A=65 |
0808 |
ADD M |
86 |
A=A+M | |
0809 080A |
*ADI 05 |
C6 05 |
A=A+5 |
F=82 A=98 |
080B |
*NOP |
00 |
|
F=82 A=9D |
Проверка:
А = 4А+1В = 65(16)
А = 4А+1В+М(33) = 98
А = 4А+1В+М(33)+5 = 9D
F=16(16)=0001 0110(2)
S = 0 – положительный результат операции
Z = 0 – не нулевой результат операции
0 = 0 – всегда ноль
AC = 1 – наличие переноса из младшего полу-байта в старший
0 = 0 – всегда ноль
P = 1 – чётное число единиц в коде числа( 65(16) = 0110 0101(2))
1 = 1 – всегда 1
C = 0 – нет переноса из старшего разряда и нет заёма в старший разряд
F=82(16)=1000 0010(2)
S = 1 – отрицательный результат операции (т.к. в двоичном коде это число начинается с 1)
Z = 0 – не нулевой результат операции
0 = 0 – всегда ноль
AC = 0 – нет переноса из младшего полу-байта в старший
0 = 0 – всегда ноль
P = 0 –не чётное число единиц в коде числа( 9D(16) = 1001 1101(2) 98(16) = 1001 1000(2))
1 = 1 – всегда 1
C = 0 – нет переноса из старшего разряда и нет заёма в старший разряд
2) Запишите в память начиная с адреса0800 коды программы сложения 16-разрядных чисел, используя команды 8-разрядного сложения:
HL=DE+BC:
a)BC:=4ACE
DE:=1B63
Адрес ЯП |
Мнемоника команды |
Код |
Комментарий | |
0800 0801 0802 |
LXI B, DATA16 |
01 CE 4A |
Загрузка пары регистров BC BC=4ACE
| |
0803 0804 0805 |
LXI D, DATA16 |
11 63 1B |
Загрузка пары регистров DE DE=1B63
| |
0806 |
MOV A,C |
79 |
Пересылка из С в А | |
0807 |
ADD E |
83 |
Сложение младшего байта, установка бита переноса, если переполнение | |
0808 |
MOV L,A |
6F |
Младший байт результата в L | |
0809 |
*MOV A,B |
78 |
|
F=13 А=31 |
080A |
ADC D |
8A |
Сложение старшего байта с учетом переноса | |
080B |
*MOV H,A |
67 |
Старший байт в Н |
F=16 А=66 |
080С |
*NOP |
00 |
|
F=16 L=31 H=66 |
Проверка:
A= CE+63=131(16)
A=4A+1B =65(16)
F=13(16)=0001 0011(2)
S = 0 – положительный результат операции
Z = 0 – не нулевой результат операции
0 = 0 – всегда ноль
AC = 1 – наличие переноса из младшего полу-байта в старший
0 = 0 – всегда ноль
P = 0 – нечётное число единиц в коде числа(31(16) = 0011 0001(2))
1 = 1 – всегда 1
C = 1 – перенос из старшего разряда (CE+63=131(16))
F=16(16)=0001 0110(2)
S = 0 – положительный результат операции
Z = 0 – не нулевой результат операции
0 = 0 – всегда ноль
AC = 1 – наличие переноса из младшего полу-байта в старший
0 = 0 – всегда ноль
P = 1 – чётное число единиц в коде числа( 66(16) = 0110 0110(2))
1 = 1 – всегда 1
C = 0 – нет переноса из старшего разряда и нет заёма в старший разряд