1-23_Основы микропроцессорной техники / Контрольная работа №1 по основам микропроцессорной техники
.rtfМИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ
И РАДИОЭЛЕКТРОНИКИ
Контрольная работа №1
по основам микропроцессорной техники.
Выполнил: ColWer
Вариант: V = (40 * 58) * div 100 = 23.
Проверил:.
Реализовать на микропроцессоре K580BM80A программу, фиксирующую в ячейках 800h-801h наибольшее положительное число из массива двухбайтовых чисел со знаком (850h-880h), представленных в прямом коде.
Решение:
Данные, предсталены в прямом коде. Первые 2 числа на входе– представляют одно двухбайтовое число. Т.е. 1-е число – старший байт идет в регистр С, 2-е число – младший байт идет в регистр D.
В программе присутствует проверка на знак. Т.е. анализируется старший байт(его восьмой разряд). Если содержимое старшего байта (регистра С) больше 80h, то двухбайтовое число отрицательно. Результат нахождения максимального числа фиксируется в регистре А(старший байт) и регистре Е(младший байт), а также в ячейках 800h и 801h.
Из того массива, что представлен в примере, выявлено максимальное число: 1100011b,1001b, т.е 639h.
lxi h,850h ;начало массива
xra a
mvi b,24 ;счетчик по количеству двухбайтовых чисел
m0: mov c,m
push b ;в стек b
mvi b,80h
push h ;в стек h
mov h,a ;запоминаем предыдущее макс. число
mov a,c
cmp b ;проверка на знак
jnc m5
mov a,h ;возвращаем предыдущее макс число
pop h ;восстанавливаем указатель адреса массива и счетчик
pop b
inx h ;след. байт 2-х байтового числа
mov d,m
cmp c ;сравнение предыд. Максимального числа с текущим
jnc m1
jc m4
m1: inx h ;предыд. Число было максимумо =>наращиваем адрес
dcr b ;и начало программы
jnz m0
lxi h,800h ;если прошли по всем элементам массива, то выводим
mov M,a ;результат в ячейки 800h-801h
inx h
mov M,e
hlt
m4: mov a,c ;если предыд. Макс. Чило меньше текущего, то
mov e,d ;запоминаем его в регистрах а и е
inx h
dcr b
jnz m0 ;на начало программы
lxi h,800h ;если прошли по всем элементам массива, то выводим
mov M,a ;результат в ячейки 800h-801h
inx h
mov M,e
hlt
m5: mov a,h ;если число отрицательное, то восстанавливаем
pop h ;предыдущий макс. и наращиваем адрес и на начало
pop b ;программы
inx h
dcr b
jnz m0
lxi h,800h ;если прошли по всем элементам массива, то выводим
mov M,a ;результат в ячейки 800h-801h
inx h
mov M,e
hlt
org 850h
db 1011b,10110b,11111111b,10001b,1011101b,10010b,10011b,1101b,1100b,101110b,111b,10101b,110101b,10110b,1111b,10001b,101101b,10110b,1100011b,1001b,1011b,1110b,11b,101b
2500 A.D. 8085 Macro Assembler - Version 4.02a
------------------------------------------------
Input Filename : 23.asm
Output Filename : 23.obj
1 0000 21 50 08 lxi h,850h
2 0003 AF xra a
3 0004 06 18 mvi b,24
4 0006 4E m0: mov c,m
5 0007 C5 push b
6 0008 06 80 mvi b,80h
7 000A E5 push h
8 000B 67 mov h,a
9 000C 79 mov a,c
10 000D B8 cmp b
11 000E D2 37 00 jnc m5
12 0011 7C mov a,h
13 0012 E1 pop h
14 0013 C1 pop b
15 0014 23 inx h
16 0015 56 mov d,m
17 0016 B9 cmp c
18 0017 D2 1D 00 jnc m1
19 001A DA 29 00 jc m4
20 001D 23 m1: inx h
21 001E 05 dcr b
22 001F C2 06 00 jnz m0
23 0022 21 00 08 lxi h,800h
24 0025 77 mov M,a
25 0026 23 inx h
26 0027 73 mov M,e
27 0028 76 hlt
28 0029 79 m4: mov a,c
29 002A 5A mov e,d
30 002B 23 inx h
31 002C 05 dcr b
32 002D C2 06 00 jnz m0
33 0030 21 00 08 lxi h,800h
34 0033 77 mov M,a
35 0034 23 inx h
36 0035 73 mov M,e
37 0036 76 hlt
38 0037 7C m5: mov a,h
39 0038 E1 pop h
40 0039 C1 pop b
41 003A 23 inx h
42 003B 05 dcr b
43 003C C2 06 00 jnz m0
44 003F 21 00 08 lxi h,800h
45 0042 77 mov M,a
46 0043 23 inx h
47 0044 73 mov M,e