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

Така задача виникає при аналізі станів сукупності тумблерів, пускачів, перемикачів або індикаторів.

Приклад 6. Визначення суми ряду чисел

Довжина ряду зберігається в комірці за адресою ADDR2 і сам ряд розміщується, починаючи з комірки ADDR3. Припустимо, що загальна сума не перевищує 127 і для її зберігання достатньо однієї комірки з адресою ADDR1.

(ADDR1) – результат,

(ADDR2) = 3 – розмір масиву

(ADDR3) = 35H – 1-й елемент масиву

(ADDR3 + 1) = 72 H – 2-й елемент масиву

(ADDR3 + 2) = 1DH – 3-й елемент масиву

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

ORG 800H

0800

97

SUB A

;Обнулення А

0801

21 10 08

LXI H,ADDR2

;адреса розм.

0804

46

MOV B,M

;B  розмір

0805

23

SUM:

INX H

;наст. комірка

0806

86

ADD M

;додав. елем.

0807

05

DCR B

;змен. розмір

0808

C2 05 08

JNZ SUM

;цикл, В# 0

080B

32 0F 08

STA ADDR1

;запис резул.

080E

76

HLT

080F

00

ADDR1:

DB 0

0810

03

ADDR2:

DB 3

0811

35 72 1D

ADDR3:

DB 35H,72H,1DH

END

Ні

Так

Тема 13. Псевдокоманди мп кр580вм80

Тип псевдокоманди

Псевдокоманда

DATA

DB (Define byte) - 8 бітні дані

DW (Define word) - 16 бітні дані

DEFINE

EQU

SET

END

END

ORIGIN

ORG

RESERVE

DS (Define store)

Асемблер автоматично присвоює значення іменам, які визначені як мітки команд. Ці значення визначають в процесі асемблювання команди і вони дорівнюють значенню лічильника команд. Але в програмі можна визначити інші імена і присвоїти їм значення, використовуючи директиви EQU і SET. Імена, що визначені директивою EQU не можуть бути перевизначені під час асемблювання. Якщо ім’я визначено директивою SET, то воно може бути перевизначене.

  1. ONES EQU 0FFH

  2. KRIST SET 5; визначення імені KRIST

ADI KRIST

KRIST SET 10H-6Q; перевизначення KRIST

ADI KRIST

Для визначення даних використовують оператори DB та DW.

Специфіковані оператором DB дані розміщуються послідовно в пам’яті, починаючи з адреси, що вказана в лічильнику команд.

Синтаксична конструкція

<ім’я >: DB < список виразів або рядків >

до 8 виразів і (або) рядків, розділених комами.

Значення виразів повинно знаходиться в межах від –127 до 128 включно. Рядок символів може містити до 128 символів в коді ASCII, що заключено в апострофи.

54 49 4D 45 ONES: DB ‘TIME’

A3 TWO: DB 0A3H

FD 0A CONST: DB –3,5*2

Оператор DW визначає в пам’яті 16 - бітові значення із списку виразів поля операнда, починаючи з поточного значення лічильника команд.

Синтаксис

<ім’я >: DW < список виразів або рядків >

8 елементів

Нехай COMP та FILL – мітки, що визначені раніше в програмі COMP=3B1CH FILL=3EB4H, тоді

1С 3В ADDR: DW COMP

B4 3E FILL: DW FILL

41 00 42 41 STRING: DW ‘A’, ‘AB’

04 00 FOUR: DW 4

Оператор DW використовують в програмі для запам’ятовування адрес.

Оператор DS використовують для визначення областей пам’яті, що використовуються для розміщення даних в ході виконання програми.

Синтаксис оператора DS

<ім’я >: DS < вираз >

Значення виразу визначає кількість байт в пам’яті . Будь-яке ім’я, повинно бути попередньо визначено в ході асемблювання до використання оператору DS.

BUFF: DS 72

Директива ORG встановлює лічильник команд у відповідність із значенням виразу в полі її операнда.

Синтаксис директиви ORG

<ім’я > : ORG < вираз >

Ім’я, що входить в вираз, визначають попередньо.

Нехай поточне значення лічильника команд 0880H.

PAG1: ORG 0FF34H

Мітці PAG1 присвоюється значення 0880H і наступна команда або байт даних будуть розміщені за адресою 0FF34H.

Директива END фіксує кінець програми і завершує процес огляду асемблером тексту програми на мові асемблера.

Синтаксис

< ім’я >: END

Приклад 7. Пересилання даних

Дана задача являє собою пересилку даних з одного місця пам’яті в інше.

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

(ADDR1)=2 - розмір масиву,

(ADDR2)=7EH – 1-й елемент масиву,

(ADDR2+1)=55H – 2-й елемент масиву.

В результаті: зміст комірки за адресою ADDR2 необхідно надіслати в комірку за адресою ADDR3, а зміст комірки за адресою ADDR2+1 – в комірку за адресою ADDR3+1.

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