Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kursovoy_proekt_1_-vychislitelnaya_i_mikroprots...doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
345.6 Кб
Скачать

3.2. Распределение памяти

Весь объем адресуемой памяти (64К) с адресами 0000H…FFFFH, можно распределить следующим образом. Для основной программы будем использовать адреса, начиная с 0000H до FFFFH. Для инициализации портов ввода-вывода зададим их адреса: порт ввода переменной x(t) — 01H; порт ввода y(t-N) — 02H; порт вывода V(t) — 04H (применяется код «1 из 8-ми»).

3.3. Составление структурной схемы алгоритма решения задачи и программ

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

Следует придерживаться естественного хода решения, т. е. линейной структуры с необходимыми метками и циклами (рис. 1).

Программы на ассемблере и в машинных кодах, соответствующие этому алгоритму, приведены в табл. 4.

В приведенном алгоритме решения задачи константа k формируется программным путем, с помощью сдвигов влево, вправо и суммирования результатов. Константа N, а также остальные константы записываются в 16-ричном коде.

Следует обратить внимание, что приступать к выполнению курсового проекта имеет смысл только после изучения теоретических вопросов, посвященных программному обеспечению (программированию на языке ассемблера и в машинных кодах). При этом нужно ориентироваться на рекомендуемую учебную литературу.

6

1

2

Организация очереди

НЕТ

7

8

3

ДА

4

9

Вычисление V(t)

5

Вычисление kx(t)

10

Рис.1. Блок-схема алгоритма

Программы вычислений на языке ассемблера и в машинных кодах

Таблица 4

Ад-рес

Машин-ный код

Метка

Мне-мони-ка

Операнд

Комментарий

Блок начальных директив

ORG

0000H

;Директива начального адреса

PORTX

EQU

01H

;Инициализация портов ввода переменных x(t), y(t), y(t-N) и вывода V(t)

PORTY

EQU

02H

PORTV

EQU

04H

Обнуление ячеек очереди

0000

21 00 80

LXI

H,8000H

;Адрес 1-й ячейки очереди

0003

16 0A

MVI

D,0AH

;N=0A, кол-во ячеек

0005

36 00

M0:

MVI

M,00H

;Обнуление 1-й ячейки

0007

23

INX

H

;Адрес следующей ячейки

0008

15

DCR

D

;Организация цикла

0009

C2 05 00

JNZ

M0

;Переход, если ячейка не последняя

Ввод переменной y(t-N)

000C

21 00 80

LXI

H,8000H

;Адрес 1-й ячейки очереди

000F

16 0A

MVI

D,0AH

;N=0A, кол-во ячеек

0011

3E 00

M1:

MVI

A,00H

;Обнуление аккумулятора

0013

DB 02

IN

PORTY

;Ввод в аккумулятор

0015

00

NOP

;Пустые операции для увеличения длительности такта ввода

0016

00

NOP

0017

00

NOP

0018

00

NOP

0019

77

MOV

M,A

;Пересылка в ячейку памяти

001A

23

INX

H

;Номер следующей ячейки

001B

15

DCR

D

;Организация цикла

001C

C2 11 00

JNZ

M1

;Переход, если ячейка не последняя

001F

21 00 80

LXI

H,8000H

;Номер ячейки памяти, где y(t-N)

Ввод x(t) и вычисление kx²(t)

0022

DB 01

IN

PORTX

;x(t) — в аккумуляторе

0024

00

NOP

;Пустые операции для уве-личения длительности такта ввода

0025

00

NOP

0026

00

NOP

0027

00

NOP

Ад-рес

Машин-ный код

Метка

Мне-мони-ка

Операнд

Комментарий

0028

21 00 00

LXI

H,0000H

;Обнуление регистровой па-ры H, L

002B

16 00

MVI

D,00H

;Обнуление регистров обще-го назначения D и E

002D

5A

MOV

E,D

002E

5F

MOV

E,A

;Копирование x(t) в рег. Е

002F

07

RLC

;2x(t) — в аккумуляторе

0030

A7

ANA

A

;Сброс флага переноса: CY=0

0031

57

MOV

D,A

;Временное запоминание 2x(t) в регистре D

0032

AF

XRA

A

;Подготовка к записи в акку-мулятор x(t)

0033

7B

MOV

A,E

;x(t) — в аккумуляторе

0034

0F

RRC

;Получение 0,5x(t) в аккуму-ляторе

0035

A7

ANA

A

;Сброс флага переноса: CY=0

0036

82

ADD

D

;(A)+(D)=2,5x(t) в аккумуля-торе

0037

CD 5B 00

CALL

MULT

;Вызов подпрограммы умно-жения однобайтных слов; множимое: 2,5x(t) — в рег. А; множитель: x(t) — в рег. Е; произведение: 2,5x2(t) — в H, L

003A

AF

XRA

A

;Подготовка к обнулению регистров

003B

57

MOV

D,A

;Обнуление регистра D

003C

5A

MOV

E,D

;Обнуление регистра E

003D

42

MOV

B,D

;Обнуление регистров B, C

003E

48

MOV

C,B

003F

54

MOV

D,H

;Запоминание 2,5x2(t) в ре-;гистровой паре D, E

0040

5D

MOV

E,L

Обработка логического блока

0041

7E

MOV

A,M

;y(t-N) — в аккумуляторе

0042

47

MOV

B,A

;y(t-N) — в регистре B

0043

0E 00

MVI

C,00H

;Обнуление регистра C

Ад-рес

Машин-ный код

Метка

Мне-мони-ка

Операнд

Комментарий

0045

BF

CMP

A

;y(t-N) — положительное?

0046

F2 4E 00

JP

M2

;При плюсе переход на метку М2

004B

2F

CMA

;INV(y(t-N)) — инверсия

004C

3C

INR

A

;INV(y(t-N))+1 — дополни-тельный код

004D

47

MOV

B,A

;Дополнительный код в ре-гистре B

004E

09

M2:

DAD

B

;Сложение двухбайтовых слов. Результат — в H, L

Вывод результата

004F

AF

XRA

A

;Подготовка к выводу млад-шего байта

0050

7D

MOV

A,L

0051

D3 04

OUT

PORTV

;Вывод младшего байта

0053

AF

XRA

A

;Подготовка к выводу стар-шего байта

0054

7C

MOV

A,H

0055

D3 04

OUT

PORTV

;Вывод старшего байта

0057

C3 00 00

JMP

M0

;Безусловный переход к но-вому циклу вычислений

005A

76

HLT

;Останов

005B

21 00 00

MULT:

LXI

H,0000H

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

005E

06 08

MVI

B,08H

;Начальная установка счет-чика циклов

0060

29

M3:

DAD

H

;Логический сдвиг H, L на разряд влево

0061

07

RLC

;Очередной разряд множи-теля с переносом

0062

D2 66 00

JNC

M4

;Переход на метку М4, если след. разряд нуль

0065

19

DAD

D

;Добавление множимого к частичной сумме

0066

05

M4:

DCR

B

;Счет циклов

0067

C2 71 00

JNZ

M3

;Переход, если вычисления не закончены

Ад-рес

Машин-ный код

Метка

Мне-мони-ка

Операнд

Комментарий

007B

C9

RET

;Возврат в основную про-грамму

END

;Директива достижения кон-ца программы