Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лабораторные работы / Вычисление арифметического выражения

.doc
Скачиваний:
44
Добавлен:
21.02.2014
Размер:
91.65 Кб
Скачать

САРАТОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

БАЛАКОВСКИЙ ИНСТИТУТ ТЕХНИКИ, ТЕХНОЛОГИИ И УПРАВЛЕНИЯ

Лабораторная работа №3

по

Микропроцессорным устройствам систем управления

«Вычисление арифметического выражения»

Выполнили: ст гр. УИТ-52

Сысолятин А. С.

Быков Б. Н.

Проверил: преподаватель

Коптенко в.и.

Балаково 2000

Цель работы: ознакомление с назначением и принципом работы учебного микропроцессорного комплекта (умк); исследование выполнения отдельных команд программ; исполь­зование различных методов адресации в программах; запись простых программ.

Задание.

Вычислить с помощью микроэвм выражение:

Решение.

Экспоненту можно представить в виде ряда

Ехр(х)=

А натуральный логарифм:

Ln(х)=

На основе полученных преобразований составим программу в виде таблицы.

Таблица 1

адрес

Машинный код

метка

Мнемокод

комментарий

Основная часть программы

Bo50 - промежуточные вычисления следующее слагаемое разложения

Bo60 - результат

8000

2A 0300

EE

LHLD 0003

XRI

ЗАГРУЗКА ЧИСЛА 3

8004

D2

DCR L

МИНУС 1

8005

010208

LXI B,0802

ВЫЧИСЛЯТЬ ДЛЯ ЗАДАННОЙ СТЕПЕНИ ТОЧНОСТИ 8 РАЗ

8008

800A

800D

8010

2240B0

3A42B0

2250B0

3A52B0

SHLD B040

LDA B042

SHLD B050

LDA B052

ПРИРАЩЕНИЕ СЛАГАЕМОГО

8013

8016

2260B0

3A62B0

SHLD В060

LDA B062

РЕЗУЛЬТАТ

8019

801C

2200B0

3A02B0

SHLD В000

LDA B002

801F

8022

2203B0

3A05B0

SHLD В003

LDA B005

8025

8026

C5

CD 82 81

CIKL

PUSH B

CALL MULT

УМНОЖЕНИЕ

8029

803C

2006B0

3A09B0

LHLD B006

LDA B009

803F

8042

2210B0

3210B0

SHLD B010

STA B010

ДЕЛИМ НА ФАКТОРИАЛ

8045

8046

7A

CD 4C 82

MOV A,D

CALL FACTOR

8048

8048

804B

804C

804D

8050

AF

32 15 B0

C5

E5

22 13 B0

CD 00 82

XRA A

STA B015

PUSH B

POP H

SHLD B013

CALL DIVIS

СТЕПЕТЬ ФАКТОРИАЛА

8052

8055

8058

805B

2A 16 0B

22 50 0B

3A 19 0B

32 52 B0

LHLD B016

SHLD B050

LDA B019

STA B052

ПЕРЕСЫЛКА РЕЗУЛЬТАТА В ПРОМЕЖУТОЧНЫЙ РЕГИСТОР

805E

C1

POP B

805F

AF

XRA A

8060

BA

CMP D

8061

5F

MOV E, A

8062

EC 67 80

JPE L11

ПЕРЕХОД ЕСЛИ НЕЧЕТНО L11:

8065

3C

INR A

8067

5F

L11:

MOV E, A

8068

806A

806D

8070

8073

8076

8079

808C

808F

8092

8095

8098

80A1

80A4

80A7

80AA

80AD

80B0

80B3

80B6

80B9

2A 50 B0

22 30 B0

3A 52B0

32 32 B0

2a 60 B0

22 60 B0

3A 62 B0

32 25 B0

CD 60 82

2A 36 B0

22 60 B0

3A 39 B0

32 63 B0

2A 50 B0

22 00B0

3A 52 B0

32 02 B0

2A 40 B0

22 03 B0

3A 42 B0

32 05 B0

LHLD B050

SHLD B030

LDA B052

STA B032

LHLD B060

SHLD B060

LDA B062

STA B035

CALL ADDIT

LHLD B036

SHLD B060

LDA B039

STA B063

LHLD B050

SHLD B000

LDA B052

STA B002

LHLD B040

SHLD B003

LDA B042

STA B005

ПОДГОТОВКА СЛЕДУЮЩЕГО ШАГА ЦИКЛА

80 BC

80BD

80BE

31

0D

C2 25 80

INR D

DCR C

JNZ CIKL

80C2

80 C3

80 C6

80 C7

80 C8

80 C9

80 CA

80 CD

80D0

80D3

80D6

80D9

EE

32 12 B0

6F

3E 53

0F

67

22 10 B0

2A 60 B0

22 13 B0

3A 62 B0

32 15 B0

CD00 82

XRI

STA B012

Mov l, a

MVI a, 53

Rrc

Mov h, a

SHLD BO10

LHLD B060

SHLD B013

LDA B062

STA B015

CALL DIV

ДЕЛИМ 53 НА LN(х)*2

80DB

80DE

80E1

80E4

2A 16 B0

22 40 B0

3A 19 B0

32 42 B0

LHLD B016

SHLD B040

LDA B019

STA B042

РЕЗУЛЬТАТ ДРОБИ

80E7

80EA

80ED

80F0

2A 40 B0

3A 42 B0

2A 50 B0

32 52 B0

LHLDB040

LDA B042

SHLD B050

STA B052

ПРИРАЩЕНИЕ СЛАГАЕМОГО

80F3

80F6

2A 60 B0

3A 62 B0

SHLD В060

LDA B062

РЕЗУЛЬТАТ

80F9

80FC

2A 00 B0

3A 02 B0

SHLD В000

LDA B002

80FF

8102

2A 03 B0

3A 05 B0

SHLD В003

LDA B005

8105

8106

D5

CD 82 81

M11

PUSH D

CALL MULT

8109

810C

2A 06 B0

3A 09 B0

LHLD BOO6

LDA B009

810E

8111

2A 10 B0

3A 01 B0

SHLD B010

STA B010

ДЕЛИМ НА ФАКТОРИАЛ

8114

8115

7A

CD 4C 82

MOV A,D

CALL FACTORIAL

8118

8119

811C

811D

811E

8121

EE

3A 15 B0

C5

E1

22 13 B0

CD 0082

XRI

STA B015

PUSH B

POP H

SHLD B013

CALL DIVIS

СТЕПЕНЬ ФАКТОРИАЛА

8124

8127

812A

8132

2A 16 B0

22 50 B0

3A 19 B0

3A 52 B0

LHLD B016

SHLD B050

LDA B019

STA B052

ПЕРЕСЫЛКА РЕЗУЛЬТАТА В ПРОМЕЖУТОЧНЫЙ РЕГИСТР

8135

1E 0

MVI E,0

ВСЕГДА СКЛАДЫВАТЬ

8138

C3 05 81

JNP M11

813B

3C

INR A

813C

5F

MOV E, A

813D

8140

8143

8146

8149

814C

814F

8152

8155

8158

815B

815E

8161

8164

8167

816A

816D

8170

8173

8176

8179

2A 50 B0

22 30 B0

3A 52 B0

3A 32 B0

2A 60 B0

22 33 B0

3A 62 B0

32 35 B0

CD 82 60

2A 36 B0

22 60 B0

3A 39 B0

32 63 B0

2A 50 B0

22 00 B0

3A 52 B0

32 02 B0

2A 40 B0

22 03 B0

3A 42 B0

32 05 B0

LHLD B050

SHLD B030

LDA B052

STA B032

LHLD B060

SHLD B033

LDA B062

STA B035

CALL ADDIT

LHLD B036

SHLD B060

LDA B039

STA B063

LHLD B050

SHLD B000

LDA B052

STA B002

LHLD B040

SHLD B003

LDA B042

STA B005

ПОДГОТОВКА СЛЕДУЮЩЕГО ШАГА ЦИКЛА

817C

817D

817E

13

0D

C2 05 81

INR D

DCR C

JNZ M11

8181

C9

RET

КОНЕЦ

РЕЗУЛЬТАТ В B060,B062

ПРОЦЕДУРА УМНОЖЕНИЯ

ПЕРВЫЙ МНОЖИТЕЛЬ – ПО АДРЕСУ B000 ВТОРОЙ МНОЖИТЕЛЬ –B003;

РЕЗУЛЬТАТ БУДЕТ В B006

PROC MULTIPLIC

ЗАГОЛОВОК ПРОЦЕДУРЫ

8182

3A 02 B0

LDA B002

СЛОЖЕНИЕ ПОКАЗАТЕЛЕЙ СТЕПЕНИ

8185

8188

2A 02 B0

86

LHLD B005

ADD M

8189

32 08 B0

STA B008

РЕЗУЛЬТАТ СТЕПЕНИ

818C

2A0000

LHLD 0000

818F

22 06 B0

SHLD B0006

ОЧИСТКА МАНТИССЫ РЕЗУЛЬТАТА

8192

2A 00 B0

LHLD B000

8195

8196

8197

44

4D

03

MOV B,H

MOV C,L

INX B

ПРОВЕРКА НА 0

ДЕКРИМЕНТ Bc - первый множитель

8198

819B

819C

2A 03 B0

EB

0B

LOOP2:

LHLD B0003

XCHG

DCX B

ВТОРОЙ МНОЖИТЕЛЬ В DE

819D

C8

RZ

ВЫХОД , ЕСЛИ МНОЖЕТЕЛЬ =0

819E

2A06 B0

LHLD B006

81A1

19

DAD D

СЛОЖЕНИЕ ВТОРОГО МНОЖИТЕЛЯ

81A2

D2 06 81

JNC LOOP1

81A5

3A 09 B0

LDA B009

81A8

3C

INR A

81A9

32 09 B0

STA B009

81AC

7C

MOV A,H

КОРРЕКЦИЯ ПОКАЗАТЕЛЯ СТЕПЕНИ И МАНТИССЫ, ЕСЛИ ПЕРЕПОЛНЕНИЕ

81AD

1F

RAR

81AE

67

MOV H,A

81AF

7D

MOV A,L

81B0

1F

RAR

81B1

7C

MOV A,H

MOV A,H

81B2

0F

RRC

RRC

81B3

67

MOV H,A

MOV H,A

81B4

7D

MOV A,L

MOV A,L

81B5

1F

RAR

RRC

81B6

7C

MOV A,H

81B7

0F

RRC

81B8

67

MOV H,A

81B9

7D

MOV A,L

81BA

1F

RAR

81BB

7C

MOV A,H

81BC

0F

RRC

81BD

67

MOV H,A

81BE

7D

MOV A,L

81BF

1F

RAR

81C0

22 06 B0

LOOP1

SHLD B006

81C3

FA DC 81

JM LOOP2

ПРОЦЕДУРА ДЕЛЕНИЯ

ДЕЛИМОЕ – ПО АДРЕСУ B010 ДЕЛИТЕЛЬ –B013;

РЕЗУЛЬТАТ БУДЕТ В B016

PROC DIVIS

ЗАГОЛОВОК ПРОЦЕДУРЫ

8200

3A 12 B0

LDA B015

ВЫЧИТАНИЕ ПОКАЗАТЕЛЕЙ СТЕПЕНИ

8203

8204

8207

47

3A 12 B0

90

MOV B, A

LDA B012

SUB B

8208

32 18 B0

STA B018

РЕЗУЛЬТАТ СТЕПЕНИ

820B

21 00 00

LXI 0000

820E

22 16 B0

SHLD B0016

ОЧИСТКА МАНТИССЫ РЕЗУЛЬТАТА

8211

2A 13 B0

LHLD BO13

HL- ДЕЛИТЕЛЬ

8214

8215

8216

8219

821C

821D

8220

8221

8222

8223

8224

8225

8226

8228

8228

822A

822B

822C

822D

822E

8230

8233

8234

8235

AF

BC

CA 19 B0

3A 19 B0

3C

32 19 B0

7C

1F

67

7D

1F

6F

0E 02

7C

0F

67

7D

1F

6F

0D

C2 28 82

AF

4F

47

L19

M33

XRA A

CMP H

JZ M33

LDA B019

INR A

STA B019

MOV A, H

RAR

MOV H,A

MOV A,L

RAR

MOV L,A

MVI E, 2

MOV A,H

RRC

MOV H, A

MOV A, L

RAR

MOV L, C

DCR C

JNZ L19

XRA

MOV C,A

MOV B, A

ДЛЯ ПОЛУЧЕНИЯ ЗАДАННОЙ ТОЧНОСТИ СДВИГАЕМ ЗНАЧЕНАТЕЛЬ

8236

8237

8238

8239

823A

03

79

32

7A

32

LOOP22

INX B

MOV A,C

STA B016

MOV A,D

STA B017

ЗАНОСИМ РЕЗУЛЬТАТ

823B

823E

3A 10 B0

95

LDA B010

SUB L

ВЫЧИТАНИЕ

823F

8240

8243

4F

3A 11 B0

9C

MOV C, A

LDA B011

SBB H

8244

8245

8246

8247

D8

32

79

32 16 B0

RC

STA B017

MOV A,C

STA B016

ЗАНОСИМ ДЕЛИМОЕ

824A

C3 36 82

JMP LOOP22

ФАКТОРИАЛ РЕГИСТРА А, РЕЗУЛЬТАТ В ВС

824C

824D

824E

824F

A8

A9

AC

57

FACTO

XRA B

XRA C

XRA H

MOV D,A

8250

5A

LOOP2

MOV E,D

8251

79

LOOP1

MOV A,C

8252

8253

83

57

ADD E

MOV E,A

8254

7A

MOV A,D

8255

8256

8C

57

ADC H

MOV D, A

8257

1D

DCR E

8258

C4 51 82

JNZ LOOP1

825B

15

DCR D

825C

C8

RZ

825D

C3 50 82

JMP LOOP2

PROC ADDIT

ЗАГОЛОВОК ПРОЦЕДУРЫ

B030 ПЕРВОЕ СЛОГАЕМОЕ

B033 ВТОРОЕ СЛОГАЕМОЕ

B036 СУММА ЕСЛИ Е=0 СЛОЖЕНИЕ

8260

3A 35 B0

LDA B035

СРАВНЕНИЕ ПОКАЗАТЕЛЕЙ СТЕПЕНИ

8263

8264

47

3A 32 B0

MOV B,A

LDA B032

8267

8268

57

80

MOV D, A

SUB B

8269

826A

826B

07

07

4F

RLC

RLC

MOV C,A

УМНОЖАЕМ НА 4

826C

3A 33 B0

M6

LDA B033

ЗАГРУЖАЕМ ВТОРОЕ СЛАГАЕМОЕ И ПРОИЗВОДИМ КОРРЕКЦИЮ СТЕПЕНИ

826F

8270

8273

8276

8277

827A

827B

07

32 22 B0

3A 34 B0

1F

32 34 B0

0D

C2

RRC

STA B033

LDA B034

RAR

STA B034

DCR C

JNZ M6

827C

7A

MOV A, D

827D

32

STA B0039

ЗАПИСЬ РЕЗУЛЬТАТА СТЕПЕНИ

827E

8271

8272

8275

8276

8277

8278

8279

827C

827D

827E

827F

8282

8283

8284

8285

8286

8287

8288

8289

828A

828B

828C

828D

828E

828F

8290

8291

2A 30 B0

E3

2A 33 B0

AF

BB

C2

19

22 36 B0

D8

7A

3C

32 39 B0

7C

17

67

7D

17

6F

0E 2

7C

07

67

7D

17

6F

0D

C2

C9

M9

LHLD B030

XCHG

LHLD B033

XRA A

CMP E

JNZ M7

DAD D

SHLD B036

RC

MOV A,D

INR A

STA B039

MOV A, H

RAL

MOV H,A

MOV A,L

RAL

MOV L,A

MVI C,2

MOV A,H

RLC

MOV H, A

MOV A, L

RAL

MOV L, C

DCR C

JNZ M9

RET

ВЫХОД

8292

8293

8296

8297

8298

8299

82A2

82A3

82A4

82A5

82A6

82A7

82A8

82AA

82AB

82AC

82AD

82AF

82B0

82B1

82B2

82B5

92

22 36 B0

D8

7A

3D

32 39 B0

7C

1F

67

7D

1F

6F

0E 02

7C

0F

67

7D

1F

6F

0D

C2 A8 82

C9

M7

Md9

SUB D

SHLD B036

RC

MOV A,D

DCR A

STA B039

MOV A, H

RAR

MOV H,A

MOV A,L

RAR

MOV L,A

MVI C, 2

MOV A,H

RRC

MOV H, A

MOV A, L

RAR

MOV L, A

DCR C

JNZ Md9

RET

ВЫХОД

КОРРЕКЦИЯ РЕЗУЛЬТАТОВ СТЕПЕНИ, ЕСЛИ ЗАЕМ