Составление программ на ассемблере, блок-схема и алгоритм, страница 7

B=3

A=1


Задание 7.

Составить программу вычисления следующего выражения:

N=(a+b)-(c*d)

Числа однобайтные. При составлении программы использовать команду обращения к подпрограммам, а в качестве подпрограммы – программу из задания 5.

 


Адрес ОЗУ

Команда

Параметры команды

HEX

Описание

0000

0001

MVI

A,E2

3E

E2

;в регистр A заносится шестнадцатеричное значение E2

0002

0003

MVI

B,E4

06

E4

;в регистр B заносится шестнадцатеричное значение E4

0004

ADD

B

80

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

0005

0006

0007

CC

adr

DC

20

00

;переход программы по адресу, если произошло переполнение регистра, т.е. если флаг ;C принял значение 1. Адрес перехода устанавливается путем конкатенации значений ;второго и третьего адреса команды

0008

MOV

H,C

61

;поместить в регистр H значение регистра C

0009

MOV

L,A

6F

;поместить в регистр L значение регистра A

000A

000B

000C

CALL

adr

CD

00

30

;безусловный переход. Адрес следующей команды вычисляется путем конкатенации ;второго и третьего байта команды

000D

MOV

C,B

48

;поместить в регистр C значение регистра B

000E

MOV

D,A

57

;поместить в регистр D значение регистра A

000F

MOV

A,L

7D

;поместить в регистр A значение регистра L

0010

SUB

D

92

;вычесть из регистра A значение регистра D. Результат записывается в регистр A

0011

0012

0013

CM

adr

FC

60

00

;переход программы по адресу, при отрицательном значении регистра, т.е. если флаг S ;принял значение 1. Адрес перехода устанавливается путем конкатенации второго и ;третьего байта данной команды

0014

MOV

L,A

6F

;поместить в регистр L значение регистра A

0015

MOV

A,H

7C

;поместить в регистр A значение регистра H

0016

SUB

C

91

;вычесть из регистра A значение регистра D. Результат записывается в регистр A

0017

MOV

H,A

67

;поместить в регистр H значение регистра A

0018

HLD

76

;завершение работы программы

0020

INR

C

0C

;увеличение значения регистра C на единицу

0021

RET

C9

;завершение работы процедуры, вызванной командой перехода

0030

0031

MVI

A,0

3E

00

;в регистр A заносится шестнадцатеричное значение 00

0032

0033

MVI

C,13

0E

13

;в регистр C заносится шестнадцатеричное значение 13

0034

0035

MVI

D,12

16

12

;в регистр D заносится шестнадцатеричное значение 12

0036

0037

MVI

B,0

06

00

;в регистр B заносится шестнадцатеричное значение 00

0038

ADD

D

82

;прибавляет к содержимому регистра A содержимое регистра D

0039

003A

003B

CC

adr

DC

50

00

;переход программы по адресу, если произошло переполнение регистра, т.е. если флаг ;C принял значение 1. Адрес перехода устанавливается путем конкатенации значений ;второго и третьего адреса команды

003C

DCR

C

0D

;уменьшить значение регистра C на единицу

003D

003E

003F

CNZ

adr

C4

38

00

;вызов по ненулевому результату, т.е. осуществляется переход, если флаг Z принимает ;значение 1. Адрес перехода устанавливается путем конкатенации второго и третьего ;байта данной команды

0040

RET

C9

;завершение работы процедуры, вызванной командой перехода

0050

INR

B

04

;увеличение значения регистра B

0051

RET

C9

;завершение работы процедуры, вызванной командой перехода

0060

DCR

H

25

;уменьшение значения регистра H

0061

RET

C9

;завершение работы процедуры, вызванной командой перехода