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

4. Описание операций

В начале программы определяем некоторые константы. К ним относятся:

1) Постоянная единица в регистре RE служит для упрощения увеличения или уменьшения счетчиков.

2) В паре регистров RB:RC хранится адрес начала массива, будем считать, что данные в оперативной памяти располагаются сразу после кода программы.

Данные в массиве двухбайтовые, целые и положительные числа.

  1. Операция №1, умножение двух элементов массива.

Из-за отсутствия у теоретического процессора команды умножения будем производить умножение в цикле. Счетчик цикла равен первому множителю, при каждом шаге цикла прибавляем к сумме второй множитель. Регистры R3:R4 используются для хранения первого множителя, регистры R5:R6 для хранения второго множителя. Произведение записывается в оперативную память после массива. Блок-схема и коды приведены на странице 10

  1. Операция №2, сложение всех элементов массива.

Результаты суммирования будут находится в тройке регистров R3:R4:R5, в регистр R6 используется как счетчик. Результат записывается в память после массива. Блок-схема и коды приведены на странице 14

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

Как пример используем подпрограмму сложения двух элементов массива.

Регистры R3:R4 используются для хранения первого слагаемого, регистры R5:R6 для хранения второго слагаемого. Результат сложения записывается в оперативную память после массива.

Блок-схема и коды приведены на странице 17

4.1 Операция №1 Умножение двух элементов массива

4.1.1 Блок-схема

4.1.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

Операция №1

2206

60

LRI R0

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

первого множителя

2207

04

04

R0=04(3 элемент)

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

06

06

R0=06(4 элемент)

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

60

LRI R0

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

произведения

2225

0A

0A

2226

91

ADD R4

2227

01

MOV r0 to R4

2228

E0

XOR R0

2229

91

ADC R3

222A

01

MOV r0 to R3

В аккумуляторе находится

значение R3:R4

222B

1F

MOV r0 from RF

Начало цикла

222C

86

ADD R6

Сложить аккумулятор с R6

222D

0F

MOV r0 to RF

Обратно в память

222E

F5

IHL

Увеличение указателя

222F

1F

MOV r0 from RF

2230

95

ADC R5

Сложить аккумулятор с R5

и переносом

2231

0F

MOV r0 to RF

2232

F5

IHL

Увеличение указателя

2233

15

MOV r0 from R5

2234

AE

SUB RE

Вычесть из аккумулятора RE

2235

05

MOV r0 to R5

2236

7D

JAN

Если Асс не ноль то на

2237

22

22

начало цикла

2238