Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LEC-ASM80.DOC
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
928.77 Кб
Скачать

Команда виклику підпрограми

10. CALL Addr змішана адресація

  1. {SP-1}  PCH

  2. {SP-2}  PCL

  3. SP  SP –2

  4. PC  Addr

Значення лічильника команд РС передається в стек, а в лічильник команд записується адреса підпрограми.

  1. CALL 210AH

Карта пам’яті SP=2205H

2000

Підпрограма

2001

2002

2003

2204H=20H

2203H=01H PC=210AH SP=2203H

PC=2001H

H L

Умовний виклик підпрограм

11. CC Addr змішана адресація

call on carry якщо Cy=1, то 1,2,3,4

якщо Cy=0, то PC  PC + 3

12. CNC Addr змішана адресація

call on not carry якщо Cy=0, то 1,2,3,4

якщо Cy=1, то PC  PC + 3

13. CZ Addr змішана адресація

call on zero якщо Z=1, то 1,2,3,4

якщо Z=0, то PC  PC + 3

14. CZ Addr змішана адресація

call on not zero якщо Z=0, то 1,2,3,4

якщо Z=1, то PC  PC + 3

15. CP Addr змішана адресація

call on plus якщо S=0, то 1,2,3,4

якщо S=1, то PC  PC + 3

16. CM Addr змішана адресація

call on minus якщо Z=1, то 1,2,3,4

якщо Z=0, то PC  PC + 3

17. CPE Addr змішана адресація

call on parity якщо P=1, то 1,2,3,4

якщо P=0, то PC  PC + 3

18. CPO Addr змішана адресація

call on not parity якщо P=0, то 1,2,3,4

якщо P=1, то PC  PC + 3

Команда повернення із підпрограми

19. RET змішана адресація

return PCL  {(SP)}

PCH  {(SP) + 1}

SP  SP + 2

стек

2202

2203

01

2204

20

2205

PCL=01H PCH=20H PC=2001H SP=2205H

Повернення за умовою (Conditional return)

20. RC, якщо Сy=1, то PCL  {(SP)}

PCH  {(SP) + 1}

SP  SP + 2

якщо Cy=0, то PC  PC +1, тобто наступна команда.

21. RNC Cy=0 (то PCL  {(SP)} PCH  {(SP) + 1} SP  SP + 2 якщо навпаки, то PC  PC +1)

22. RZ Z=1 (то PCL  {(SP)} PCH  {(SP) + 1} SP  SP + 2 якщо навпаки, то PC  PC +1)

23. RNZ Z=0 (то PCL  {(SP)} PCH  {(SP) + 1} SP  SP + 2 якщо навпаки, то PC  PC +1)

24. RP S=0 (то PCL  {(SP)} PCH  {(SP) + 1} SP  SP + 2 якщо навпаки, то PC  PC +1)

25. RM S=1 (то PCL  {(SP)} PCH  {(SP) + 1} SP  SP + 2 якщо навпаки, то PC  PC +1)

26. RPE P=1 (то PCL  {(SP)} PCH  {(SP) + 1} SP  SP + 2 якщо навпаки, то PC  PC +1)

27. RPO P=0 (то PCL  {(SP)} PCH  {(SP) + 1} SP  SP + 2 якщо навпаки, то PC  PC +1)

28. RST N (Re-start) повторний пуск 0 <= N <= 7 N – вектор переривання

{(SP) - 1}  PCH

{(SP) - 2}  PCL

SP  SP - 2 0 7

PC  8 * NNN NNN – 000…111

29. PCHL неявна адресація

move H and L to PC

PCH  H

PCL  L

30. SPHL неявна адресація

move H and L to SP

SP  HL

Приклад 3. Додавання 8-бітних чисел без переносу

Завдання: необхідно додати зміст комірки пам’яті за адресами ADDR1 і ADDR2, і помістити результат в комірку пам’яті з адресою ADDR3.

В цьому прикладі для простоти не будемо враховувати можливість виникнення переносу.

(ADDR1) = 23H – перший доданок

(ADDR2) = 43H – другий доданок

Результатом додавання буде:

(ADDR3) = 23H + 43H = 66H

Алгоритм

Крок 1. Завантаження в акумулятор змісту комірки пам’яті з адресою ADDR1

Крок 2. Зберегти зміст акумулятора в регістрі В

Крок 3. Завантаження в акумулятор змісту комірки пам’яті з адресою ADDR2

Крок 4. Додати зміст акумулятора і регістра В

Крок 5. Переслати зміст акумулятора в комірку пам’яті з адресою ADDR3

Програма

Адреса

Асемблерний код

Мітка

Команда

Коментарі

ORG 800H

0800

3A 0C 08

LDA ADDR1

; Крок 1. A  (ADDR1)

0803

47

MOV B,A

; Крок 2. B  A

0804

3A 0D 08

LDA ADDR2

; Крок 3. A  (ADDR2)

0807

80

ADD B

; Крок 4. A  A + B

0808

32 0E 08

STA ADDR3

; Крок 5. (ADDR3)  A

080B

76

HLT

; зупинка МП

080C

23

ADDR1:

DB 23H

;1-ий доданок

080D

43

ADDR2:

DB 43H

;2-ий доданок

080E

00

ADDR3:

DB 0

;для результату

END

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]