Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лаба 4(3).docx
Скачиваний:
31
Добавлен:
06.06.2017
Размер:
62.96 Кб
Скачать

6. Разработали программу деления двух однобайтных чисел с раздельной записью целого и остатка от деления (таблица 12).

Таблица 12

Адрес

Машинный код

Мнемоника команды

Операнд

Комментарий

0800

16 00

MVI D,

00

Записали в регистр D число 00

0802

1E 00

MVI E,

00

Записали в регистр E число 00

0804

78

MOV A, B

Содержимое регистра B переслали в аккумулятор

0805

B9

CMP C

Вычли из содержимого аккумулятора содержимое регистра С

0806

DA 17 08

JC

0817

Выполнить переход на ячейку памяти М(0817), если признак С=1

0809

91

SUB C

Вычли из содержимого аккумулятора содержимое регистра С, результат записали в аккумулятор

080B

CA 15 08

JZ

0815

Выполнить переход на ячейку памяти М(0815), если признак Z=1

Окончание таблицы 12

080D

DA 14 08

JC

0814

Выполнить переход на ячейку памяти М(0814), если признак С=1

080F

14

INR D

Инкрементировали содержимое регистра D

0812

C3 09 08

JMP

0809

Выполнили переход на ячейку памяти М(0809)

0814

81

ADD C

Сложили содержимое аккумулятора и содержимое регистра С, результат записали в аккумулятор

0815

5F

MOV E, A

Содержимое аккумулятора переслали в регистр Е

0816

14

INR D

Инкрементировали содержимое регистра D

0817

FF

RST 7

Прервали выполнение программы

Перед началом запуска программы делитель нужно записать в регистр B, а делимое нужно записать в регистр C. Целое число записывается в регистр D, а остаток от деления записывается в регистр E. Так же в программе присутствует защита от рационального результата.

7. Разработали программу, включающую в себя три отдельные подпрограммы – изменение знака числа, определение модуля числа, поиск максимального числа в массиве. В основной программе предусмотрел загрузку всех регистров блока POH, A и регистра флагов F данными, их сохранение в стеке и последующее извлечение данных из стека в соответствующие регистры после выполнения указанных подпрограмм. (таблица 13)

Таблица 13

Адрес

Машинный код

Мнемоника команды

Операнд

Комментарий

0800

31 00 09

LXI SP,

0900

Записали в (SP) число 0900

0803

3E 07

MVI A,

07

Записали 07 в аккумулятор

0805

06 1F

MVI B,

1F

Записали в регистр B число 1F

0807

0E 45

MVI C,

45

Записали в регистр C число 45

0809

16 01

MVI D,

01

Записали в регистр D число 01

080B

1E 00

MVI E,

00

Записали в регистр E число 00

Продолжение таблицы 13

080D

F5

PUSH PSW

Загрузили содержимое регистров A и F в стек

080E

C5

PUSH B

Загрузили содержимое регистров B и C в стек

080F

D5

PUSH D

Загрузили содержимое регистров D и E в стек

0810

E5

PUSH H

Загрузили содержимое регистров H и L в стек

0811

CD 60 08

CALL

0860

Безусловный вызов подпрограммы по адресу 0860

0814

CD 70 08

CALL

0870

Безусловный вызов подпрограммы по адресу 0870

0817

CD 90 08

CALL

0890

Безусловный вызов подпрограммы по адресу 0890

081A

E1

POP H

Выгрузили данные из стека в регистры H и L

081B

D1

POP D

Выгрузили данные из стека в регистры D и E

081C

С1

POP B

Выгрузили данные из стека в регистры B и C

081D

F1

POP PSW

Выгрузили данные из стека в регистры A и F

081E

FF

RST 7

Прервали выполнение программы

0860

21 00 0А

LXI H,

0А00

Записали в регистровую пару (HL) число 0А00

0863

7E

MOV A, M

Содержимое ячейки памяти, адрес которой находится в регистровой паре (HL) переслали в аккумулятор

0864

2F

CMA

Инвертировали содержимое аккумулятора

0865

3C

INR A

Инкрементировали содержимое аккумулятора

0866

23

INX H

Инкрементировали содержимое регистровой пары (HL)

0867

77

MOV M, A

Содержимое аккумулятора загрузили в ячейку памяти адрес которой находится в регистровой паре (HL)

0868

C9

RET

Вышли из подпрограммы

Продолжение таблицы 13

0870

21 02 0A

LXI H,

0A02

Записали в регистровую пару (HL) число 0A02

0873

7E

MOV A, M

Содержимое ячейки памяти, адрес которой находится в регистровой паре (HL) переслали в аккумулятор

0874

B7

ORA A

Логически сложили содержимое аккумулятора с содержимым аккумулятор и результат в аккумулятор

0875

F2 7B 08

JP

Выполнить переход на ячейку памяти M(087B) если признак S=0,

0878

2F

CMA

Инвертировали содержимое аккумулятора

0879

3C

INR A

Инкрементировали содержимое аккумулятора

087A

23

INX H

Инкрементировали содержимое регистровой пары (HL)

087B

77

MOV M, A

Содержимое аккумулятора загрузили в ячейку памяти адрес которой находится в регистровой паре (HL)

087C

C9

RET

Вернулись из подпрограммы на ячейку памяти 0817

0890

21 04 0A

LXI H,

0A04

Записали в регистровую пару (HL) число 0A04

0893

0E 06

MVI C,

06

Записали в регистр C число 06

0895

7E

MOV A, M

Содержимое ячейки памяти адрес которой находится в регистровой паре (HL) переслали в аккумулятор

0896

23

INX H

Инкрементировали содержимое регистровой пары (HL)

Окончание таблицы 13

0897

BE

CMP M

Вычли из содержимого аккумулятора содержимое ячейки памяти, адрес которой находится в регистровой паре (HL)

0898

D2 9C 08

JNC

089C

Выполнить переход на ячейку памяти M(089C) если признак C=0

089B

7E

MOV A, M

Содержимое ячейки памяти адрес которой находится в регистровой паре (HL) переслали в аккумулятор

089C

0D

DCR C

Декрементировали содержимое регистра С

089D

C2 96 08

JNZ

Выполнить переход на ячейку памяти М(0896), если признак Z=0

08A0

23

INX H

Инкрементировали содержимое регистровой пары (HL)

08A1

77

MOV M, A

Содержимое аккумулятора загрузили в ячейку памяти адрес которой находится в регистровой паре (HL)

08A2

C9

RET

Вернулись из подпрограммы

Вывод.

Закрепили теоретические знания по изучению различных команд пересылки данных, управление, ввода – вывода, работы со стеком языка программирования ассемблера МП КР580ВМ80А.

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