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

Склад команд управління

Група команд управління складається із набору команд роботи із стеком, введення – виведення інформації, управління МП.

Запис даних в стек

  1. PUSH Rp – записати два байта даних в стек.

{(SP) - 1}  High змішана адресація LXI SP,2000H – адреса вершини стеку

{(SP) - 2}  Low PUSH B

SP  SP - 2 PUSH D на початку п/п

PUSH H

PUSH PSW

… тіло програми

POP PSW

POP H в кінці п/п

POP D

POP B

2. PUSH PSW (program status word) змішана адресація

{(SP) - 1}  A змішана адресація

{(SP) - 2}  F

SP  SP – 2

Читання даних із стеку

3. POP Rp - прочитати два байта даних із стеку

Low  {(SP)} змішана адресація

High  {(SP) + 1}

SP  SP + 2

4. POP PSW

(F)  {(SP)} змішана адресація

(A)  {(SP) + 1}

SP  SP + 2

Команди введення – виведення

5. IN port пряма адресація

A  (port) Команда введення в акумулятор байту даних із порту. Команда двобайтна.

6. OUT port пряма адресація

(port)  A Команда виведення байту даних із акумулятору. Команда двобайтна.

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

7. EI дозвіл переривання неявна адресація

enable interrupt

(ДПР)  1 В тригер дозволу переривання записується 1.

8. DI заборона переривання неявна адресація

disable interrupt

(ДПР)  0 В тригер дозволу переривання записується 0.

9. NOP відсутня операція

no operation адресація відсутня

10. HLT зупинка МП

halt адресація відсутня

Приклад 4.

Під час використання будь-якої ЕОМ виникає проблема обробки даних, довжина яких не співпадає з розміром комірки пам’яті. Тому програмно видаляють біти комірки пам’яті, що не використовуються з метою їх не дії на результат виконання операцій. Таке виділення може бути виконано за допомогою логічної операції “І” і позначається “^” – логічне множення.

Завдання: Нехай число знаходиться в комірці пам’яті за адресою ADDR1. Виділимо 4-ри молодших біта і завантажимо їх в комірку за адресою ADDR2.

(ADDR1) = 4DH – початкове число.

Результат роботи програми повинен бути наступним:

(ADDR2) = 0DH – молодша тетрада початкового числа.

Програма

Адреса

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

Мітка

Команда

Коментарі

ORG 800H

0800

21 09 08

LXI H,ADDR1

;завантажити в HL вказівник ;на комірку, що містить ;початкове число

0803

7E

MOV A,M

;завантажуємо саме число в A

0804

E6 0F

ANI 00001111B

; накладемо на число маску,

; що виділяє молодші 4 біта

; A А ^ 0FH

0806

23

INX H

; обчислюємо значення

; вказівника на комірку ;результату HL HL + 1

0807

77

MOV M,A

; запис результату в комірку

; пам’яті за міткою ADDR2

0808

C9

RET

; повернення

0809

4D

ADDR1:

DB 4DH

;початкове число

080A

00

ADDR2:

DB 0

;

END

Тут адресу результату отримано командою INX (інкрементування).

За допомогою даної програми можна розрізняти стан тумблерів, пускача електродвигуна, перемикача і т.і.

Приклад 5. Поділення слова на частини з використанням масок

Виділимо із слова дві 4 - бітні цифри і розташуємо їх в окремі комірки пам’яті.

Нехай в комірці пам’яті за адресою ADDR1 знаходиться початкове число. Результат роботи програми розмістити за адресами ADDR2 – молодші розряди, ADDR3 – старші розряди.

Алгоритм Програма

ORG 800H

0800

21 13 08

LXI H,ADDR1

;HLADDR1

0803

7E

MOV A,M

;A{(HL)}

0804

47

MOV B,A

;B  A

0805

E6 0F

ANI 00001111B

;AA^0FH

0807

23

INX H

;HLHL+1

0808

77

MOV M,A

;{(HL)}A

0809

78

MOV A,B

;A  B

080A

0F

RRC

;зсув вправо

080B

0F

RRC

;на 4 біти

080C

0F

RRC

080D

0F

RRC

080E

E6 0F

ANI 00001111B

AA^0FH

0810

23

INX H

HLHL+1

0811

77

MOV M,A

{(HL)}A

0812

76

HLT

0813

4A

ADDR1:

DB 4AH

0814

00

ADDR2:

DB 0

0815

00

ADDR3:

DB 0

END

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