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

Програма

ORG 800H

800

21 10 08

LXI H,ADDR1

;HL  ADDR1 вказівник на ;кількість

803

46

MOV B,M

;B  {(HL)} завантажуємо ;довжину масиву

804

11 12 08

LXI D,ADDR3-1

807

23

TRUNS:

INX H

; після інкрементування ;регістрових пар HL i DE

;отримуємо доступ до перших ;елементів

808

13

INX D

; адреса, куди надсилаємо дані

809

7E

MOV A,M

;елемент першого масиву

80A

12

STAX D

; {(DE)}  A переміщення

80B

05

DCR B

; зменшення лічильника на 1

80C

C2 07 08

JNZ TRUNS

;якщо зміст В#0 перейти на ;мітку TRUNS

80F

76

HLT

810

02

ADDR1:

DB 2

811

7E 55

ADDR2:

DB 7EH,55H

813

00

ADDR3:

DB 0

END

Приклад 8. Знаходження максимального елементу масиву ( задача сортування ). “Бульбашковий метод”.

Нехай довжина масиву даних знаходиться в пам’яті за адресою ADDR2, а сам масив розміщується, починаючи з адреси ADDR3. Програма повинна знайти максимальне значення і помістити його в комірку за адресою ADDR1 .

( ADDR1) = 0 – max,

(ADDR2) = 3 - розмір масиву (лічильник),

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

(ADDR3+1) = 0F2H - 2-й елемент масиву,

(ADDR3+2) =0C6H - 3-й елемент масиву.

Програма

ORG 800H

800

21 16 08

LXI H,ADDR2

803

46

MOV B,M

804

05

DCR B

805

23

INX H

806

7E

MOV A,M

807

27

MAX:

INX H

808

BE

CMP M

809

D2 0D 08

JNC NOCH

80C

7E

MOV A,M

80D

05

NOCH:

DCR B

80E

C2 07 08

JNZ MAX

811

32 15 08

STA ADDR1

814

76

HLT

815

00

ADDR1:

DB 0

816

03

ADDR2:

DB 03H

817

37 F2 C6

ADDR3:

DB 37H,0F2H,0C6H

END

-32768…32767 2B

-65536…65535 4B

Приклад 9. Арифметика для чисел, які займають декілька комірок пам’яті.

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

(ADDR1) = 3 – довжина чисел,

(ADDR2)=29H (ADDR2+1)=0A4H (ADDR2+2)=50H- перше число,

(ADDR3)=0FBH (ADDR3+1)=37H (ADDR3+2)=28H – друге число.

Результатом є додавання 24 - бітних чисел:

(ADDR2) = 29H + 0FBH = 24 i 1 переносу

(ADDR2+1) = 0A4H + 37H + 1 = 0DCH

(ADDR2+2) = 50H + 28H = 78H 78DC24H

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