Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

1-23_Основы микропроцессорной техники / Контрольная работа №1 по основам микропроцессорной техники

.rtf
Скачиваний:
55
Добавлен:
23.06.2014
Размер:
21.05 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ

И РАДИОЭЛЕКТРОНИКИ

Контрольная работа №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

Соседние файлы в папке 1-23_Основы микропроцессорной техники