Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая работа.doc
Скачиваний:
26
Добавлен:
02.05.2014
Размер:
5.53 Mб
Скачать

4.2.3 Код Ассемблера процессора i8086

.MODEL small ;Модель памяти

.STACK 100h ;Стек

.DATA ;Сегмент данных

mas dw 13,11,0,4,2; Массив

sum db 3 dup(?)

.CODE ;Сегмент кода

main:

mov ax, @data ;Инициализация среды

mov ds, ax

mov cx, 0005h ;Цикл

mov di, offset mas ;Смещение массива

xor ax, ax

xor dx, dx

add:

mov bx, [di] ;Перемещение в аккумулятор исходного

;значения

add ax, bx ;Сложение

adc dx, 0000h ;Учет переноса

inc di ;Инкремент указателя

loop add ;Конец цикла

mov bx, offset sum ;Смещение суммы

mov [bx], al ;В память младший разряд

mov [bx+1], ah ;В память старший разряд

mov [bx+2], dl ;Перенос в память

mov ax, ac00h ;Конец программы

int 21h

end main

4.3 Операция №3 Переход к подпрограмме с передачей параметров через стек

4.3.1 Блок- схема

4.3.2 Псевдокод гипотетического процессора

Код программы приведем в виде таблицы из четырех столбцов, содержащих адрес ячейки, машинный код, символический код и при необходимости комментарии.

Адрес ячейки

Машинный код

Псевдокод

Комментарии

Инициализация переменных

2200

6E

LRI RE

В RE постоянную единицу

2201

01

01

2202

6B

LRI RB

2203

22

22

2204

6C

LRI RC

RB:RC адрес начала массива

2205

A4

A4

Операция №3

2206

60

LRI R0

Определяем адрес

первого слагаемого

2207

08

08

R0=08(5 элемент)

2208

3B

MOV r1 from RB

2209

5C

MOV r2 from RC

220A

82

ADD R2

220B

02

MOV r0 to R2

220C

E0

XOR R0

220D

91

ADC R1

220E

01

MOV r0 to R1

220F

1F

MOV r0 from RF

R3:R4 первый элемент

2210

03

MOV r0 to R3

2211

F5

IHL

2212

1F

MOV r0 from RF

2213

04

MOV r0 to R4

2214

60

LRI R0

Определяем адрес

второго слагаемого

2215

02

02

R0=02(2 элемент)

2216

3B

MOV r1 from RB

2217

5C

MOV r2 from RC

2218

82

ADC R2

2219

02

MOV r0 to R2

221A

E0

XOR R0

221B

91

ADC R1

221C

01

MOV r0 to R1

221D

1F

MOV r0 from RF

R5:R6 второй элемент

221E

05

MOV r0 to R5

221F

F5

IHL

2220

1F

MOV r0 from RF

2221

06

MOV r0 to R6

2222

3B

MOV r1 from RB

Указатель в начало массива

2223

5C

MOV r2 from RC

2224

7F

JMS

Переход

2225

22

на подпрограмму

2226

2227

JMP

Переход на конец

2228

22

после возврата

2229

3D

222A

60

LRI R0

Подпрограмма:

Определяем адрес суммы

222B

0A

0A

222C

91

ADD R2

222D

01

MOV r0 to R2

222E

E0

XOR R0

222F

91

ADC R1

2230

01

MOV r0 to R1

2231

14

MOV r0 from R4

Сложение младших байтов

2232

86

ADD R6

2233

0F

MOV r0 to RF

Младший байт в память

2234

F5

IHL

2235

13

MOV r1 from R3

Сложение старших байтов

2236

95

ADC R5

с учетом переноса

2237

0F

MOV r0 to RF

Старший байт в память

2238

F5

IHL

2239

E0

XOR R0

223A

90

ADC R0

Перенос в третий байт,

если перенос существует

223B

0F

MOV r0 to RF

223С

F8

RET

Возврат

223D

Конец операции