1-17_Основы микропроцессорной техники
.rtf
Министерство общего образования Российской Федерации
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)
Кафедра промышленной электроники (ПрЭ)
Контрольная работа
по предмету «Основы микропроцессорной техники»
Вариант 17
Студент
Проверил
Задание:
Записать в массив В (800Н-83FН) МП серии 580 двоично-десятичный код двоичных чисел массива А (900H-93FH, больших числа, набранного на тумблерах порта ввода РС.
Восьмиразрядное двоичное число в двоично – десятичном коде занимает два байта. Запись в массив В будем производить сначала младший байт потом старший.
Программа:
LXI SP,0FFFH;
LXI D,900H ;адрес массива А
LXI B,800H ;адрес массива В
MVI A,89H ;Управляющее слово
OUT 83H ;
IN 82H ;
MVI L,93H ;Счетчик цикла
MOV H,A ;А->H
M1: LDAX D ;загрузказ начения из памяти
CMP H ;сравнение с значением из порта
JC M4 ;переход если нет число меньше
JZ M4 ;переход если числа равные
{Перевод в двоично десятичный код}
PUSH H ;сохранение в стеке пары регистров
MOV L,A ;счетчик цикла
MVI A,0 ;занечение в регистры L и А нулей
MOV H,A ;
M2: ADI 1 ;А=А+1
DAA ;десятичная коррекция
JNZ M3 ;Переход если двично-десятичное число меньше 100
PUSH PSW ;
MOV A,H ;
ACI 0 ;Увеличение сотен в двично-десятичном числе
MOV H,A ;
POP PSW ;
M3: DCR L ;
JNZ M2 ;
;
STAX B ;Запись двочно-десятичного числа в память
INX B ;
MOV A,H ;
STAX B ;
INX B ;
POP H ;Востановление пары регистров из стека
;
M4: ;
INX D ;Увеличение адреса массива на 1
DCR L ;
JNZ M1 ;Переход если не конец массива
Листинг программы:
Ассемблер К580ВМ80, (BFG) v 1.00b 1995.
Листинг кодов команд.
──────────────────────────────────────────────
┌───────────────────────────────────────────────────────────────────┐
│ Адрес Код команды Команда с параметрами │
└─┬──────────────┬──────────────┬───────────────────────────────┬───┘
_ _ _ _
0000 31 LXI SP FF 0F
0003 11 LXI D 00 09
0006 01 LXI B 00 08
0009 3E MVI A, 89
000B D3 OUT 83
000D DB IN 82
000F 2E MVI L, 93
0011 67 MOV H, A
0012 1A LDAX D
0013 BC CMP H
0014 DA JC 35 00
0017 CA JZ 35 00
001A E5 PUSH H
001B 6F MOV L, A
001C 3E MVI A, 00
001E 67 MOV H, A
001F C6 ADI 01
0021 27 DAA
0022 C2 JNZ 2B 00
0025 F5 PUSH PSW
0026 7C MOV A, H
0027 CE ACI 00
0029 67 MOV H, A
002A F1 POP PSW
002B 2D DCR L
002C C2 JNZ 1F 00
002F 02 STAX B
0030 03 INX B
0031 7C MOV A, H
0032 02 STAX B
0033 03 INX B
0034 E1 POP H
0035 13 INX D
0036 2D DCR L
0037 C2 JNZ 12 00