Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсач_ассемблер.doc
Скачиваний:
5
Добавлен:
07.09.2019
Размер:
3.15 Mб
Скачать
  1. Структура памяти, распределение данных

Определим биты адреса для частичной селекции ПЗУ и ОЗУ:

ПЗУ: 4К = — А11-АО — адрес байта ПЗУ,

ОЗУ: 2К = —»А10-А0 - адрес байта ОЗУ.

Бит адреса А12=1 служит для выбора модуля ПЗУ программ, а А12=0 — модуля ОЗУ. Карта памяти модуля ЗУ 6 кБ см. на рис. 4.yi

Карта памяти модуля ЗУ 6 кБ.

Рис. 4.

Расположение адресов модуля ЗУ 6 кБ см. на рис. 5

Расположение адресов модуля ЗУ 6 кБ.

Таблица 1

Адрес

19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Диапазон адресов

Тип ЗУ

Сигнал yi

0 0 0 0 0 0 0

1 1 1 1 1 1 1

0

1

0

X

X X X X X X X X X X X

X X X X X X X X X X X

[00000 – 007FF]

[FF000 – FFFFF]

ОЗУ 2К

ПЗУ 4К

#y0

#y1

Частичная адресация битом А12

Полная адресация битами А19 – А11

Рис. 5.

Функциональная схема подсистемы памяти ёмкостью 6 кБ (ПЗУ 4кБ, ОЗУ 2кБ) изображена на рис. 6. В соответствии с таблицей 1 выражения для сигналов #y0 и #y1 будут иметь вид:

;

Структурная организация подсистемы памяти МПС.

Рис. 6.

Память МП К1810ВМ88 содержит только один банк, вследствие чего в МП отсутствует сигнал #ВНЕ. В данной организации подсистемы памяти МПС применяется вертикальное наращивание модулей ПЗУ. Это вызвано тем, что при проектировании системы не было найдено требуемого объёма ПЗУ(4 кБ) в виде одного модуля. Для получения заданного объема были выбраны два модуля ёмкостью по 2 кБ каждый. Селекция модулей осуществляется с помощью сигналов #y10 и #y11 , которые формируются при подаче на дешифраторы сигнала общего сигнала для ПЗУ #y1 и бита адреса A11.

Расположение адресов у модулей ПЗУ:

Таблица 2

Адрес

19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Диапазон адресов

Тип ЗУ

Сигнал yi

1 1 1 1 1 1 1

1 1 1 1 1 1 1

1

1

0

1

X X X X X X X X X X X

X X X X X X X X X X X

[FF000 – FF700]

[FF800 – FFFFF]

ПЗУ D11

ПЗУ D12

#y10 #y11

#y1

Селекция модулей ПЗУ

В соответствии с таблицей 2 выражения для сигналов #y10 и #y11 будут иметь вид:

;

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

    1. Укрупнённая схема алгоритма функционирования мпс.

Укрупнённая схема алгоритма функционирования МПС.

Рис. 7.

4.2. Схема алгоритма вычисления выражения для цф

Схема алгоритма вычисления выражения для ЦФ

Рис. 8.

4.3. Схема алгоритма вычисления W1 = 10Xn и регистровая модель.

Схема алгоритма вычисления W1

Рис. 9.

Регистровая модель вычисления W1

Рис. 10.

4.4. Схема алгоритма вычисления W2 = W1 +7Xn-1 и регистровая модель.

Схема алгоритма вычисления W2

Рис. 11.

Регистровая модель вычисления W2

Рис. 12.

4.5. Схема алгоритма вычисления W3 = W2 +4Xn-2 и регистровая модель.

Схема алгоритма вычисления W3

Рис. 13.

Регистровая модель вычисления W3

Рис. 14.

4.6. Схема алгоритма вычисления W4 = W3 +1Xn-3 и регистровая модель.

Схема алгоритма вычисления W4

Рис. 15.

Регистровая модель вычисления W4

Рис. 16.

4.7. Схема алгоритма вычисления W5 = W4 -2Xn-4 и регистровая модель.

Схема алгоритма вычисления W5

Рис.17.

Регистровая модель вычисления W5

Рис. 18.

4.8. Схема алгоритма вычисления W6 = W5 -5Xn-5 и регистровая модель.

Схема алгоритма вычисления W6

Рис.19.

Регистровая модель вычисления W6

Рис. 20.

4.9. Схема алгоритма выявления переполнения Yn .

Схема алгоритма выявления переполнения Yn

Рис.21.

4.10. Схема алгоритма деления на 15 и регистровая модель.

Схема алгоритма деления на 15

Рис.22.

Регистровая модель деления на 15

Рис. 23.

4.11. Схема алгоритма очереди и регистровая модель.

Схема алгоритма очереди

Рис.24.

Регистровая модель очереди

Рис. 25.

5. Разработка программы вычисления

.

;Программа вычисления Yn=(10Xn+7Xn-1+4Xn-2+Xn-3-2Xn-4-5Xn-5)/15

.model small ;модель памяти SMALL

.stack 64 ;модель стека 64

.data ;начало сегмента данных

xn dw 0 ;резервирование

xn1 dw 0 ;места в памяти

xn2 dw 0 ;под переменные

xn3 dw 0 ;xn,xn1,xn2,xn3

xn4 dw 0 ;xn4

xn5 dw 0 ;xn5

yn dw 0 ;yn

;************************************************************************

;

;Константы для деления и выявления переполнения

;

r1m equ 7ff1h ;константа r1m примет значение k(+ymax)мл

r1c equ 0007h ;константа r1c примет значение k(+ymax)ст

r2m equ 8000h ;константа r2m примет значение k(-ymax)мл

r2c equ 0fff8h ;константа r2c примет значение k(-ymax)ст

k equ 15 ;делитель

;************************************************************************

;

;Программа вычисления выражения

.code ;начало кодового сегмента

filtr proc ;начало процедуры filtr

mov ax,@data ;указание регистра DS

mov ds,ax ;сегмент данных

;************************************************************************

;

;Сброс переменных xn,xn1,xn2,xn3,xn4,xn5,yn

sub ax,ax ;сброс аккумулятора AX

mov xn,ax ;сброс xn

mov xn1,ax ;сброс xn1

mov xn2,ax ;сброс xn2

mov xn3,ax ;сброс xn3

mov xn4,ax ;сброс xn4

mov xn5,ax ;сброс xn5

mov yn,ax ;сброс yn

;************************************************************************

;Вычисление W1=10xn

M1: mov ax,xn ;запись xn в AX

cwd ;расширение слова до двойного слова

add ax,ax ;получим 2Xnмл и сохраним в AX

adc dx,dx ;получим 2Xnст и сохраним в DX

mov di,ax ;запомним 2Xnмл в DI

mov si,dx ;запомним 2Xnст в SI

add ax,ax ;вычисление 4Xnмл и запись в AX

adc dx,dx ;вычисление 4Xnст и запись в DX

add ax,ax ;вычисление 8Xnмл и запись в AX

adc dx,dx ;вычисление 8Xnст и запись в DX

add ax,di ;вычисление 10Xnмл и запись в AX

adc dx,si ;вычисление 10Xnст и запись в DX

mov bx,ax ;сохранение

mov bp,dx ;результатов в BP:BX

;************************************************************************

;

;Вычисление W2=W1+7xn1

mov ax,xn1 ;запись xn1 в аккумулятора

cwd ;расширение xn1 до двойного слова

mov di,ax ;запомним Xn1мл в DI

mov si,dx ;запомним Xn1ст в SI

add ax,ax ;вычисление 2Xn1мл и сохраним в AX

adc dx,dx ;вычисление 2Xn1ст и сохраним в DX

add ax,ax ;вычисление 4Xn1мл и запись в AX

adc dx,dx ;вычисление 4Xn1ст и запись в DX

add ax,ax ;вычисление 8Xn1мл и запись в AX

adc dx,dx ;вычисление 8Xn1ст и запись в DX

sub ax,di ;вычисление 7Xn1мл и запись в AX

sbb dx,si ;вычисление 7Xn1ст и запись в DX

add bx,ax ;вычисление младшей части 10xn+7xn1

adc bp,dx ;вычисление старшей части 10xn+7xn1

;************************************************************************

;;Вычисление W3=W2+4xn2

mov ax,xn2 ;запись xn2 в аккумулятора

cwd ;расширение xn2 до двойного слова

add ax,ax ;вычисление 2Xn2мл и сохраним в AX

adc dx,dx ;вычисление 2Xn2ст и сохраним в DX

add ax,ax ;вычисление 4Xn2мл и запись в AX

adc dx,dx ;вычисление 4Xn2ст и запись в DX

add bx,ax ;вычисление младшей части 10xn+7xn1+4xn2

adc bp,dx ;вычисление старшей части 10xn+7xn1+4xn2

;************************************************************************

;Вычисление W4=W3+1xn3

mov ax,xn3 ;запись xn3 в аккумулятора

cwd ;расширение xn3 до двойного слова

add bx,ax ;вычисление младшей части 10xn+7xn1+4xn2+1xn3

adc bp,dx ;вычисление старшей части 10xn+7xn1+4xn2+1xn3

;************************************************************************

;

;Вычисление W5=W3-2xn4

mov ax,xn4 ;запись xn4 в аккумулятора

cwd ;расширение xn4 до двойного слова

add ax,ax ;вычисление 2Xn4мл и сохраним в AX

adc dx,dx ;вычисление 2Xn4ст и сохраним в DX

sub bx,ax ;вычисление младшей части 10xn+7xn1+4xn2+1xn3-2xn4

sbb bp,dx ;вычисление старшей части 10xn+7xn1+4xn2+1xn3-2xn4

;************************************************************************

;

;Вычисление W6=W5-5xn5

mov ax,xn5 ;запись xn5 в аккумулятора

cwd ;расширение xn5 до двойного слова

mov di,ax ;запомним Xn5мл в DI

mov si,dx ;запомним Xn5ст в SI

add ax,ax ;вычисление 2Xn5мл и сохраним в AX

adc dx,dx ;вычисление 2Xn5ст и сохраним в DX

add ax,ax ;вычисление 4Xn5мл и запись в AX

adc dx,dx ;вычисление 4Xn5ст и запись в DX

add ax,di ;вычисление 5Xn5мл и запись в AX

adc dx,si ;вычисление 5Xn5ст и запись в DX

sub bx,ax ;вычисление младшей части 10xn+7xn1+4xn2+1xn3-;2xn4-5xn5

sbb bp,dx ;вычисление старшей части 10xn+7xn1+4xn2+1xn3-;2xn4-5xn5

;************************************************************************

;Проверка на переполнение

mov ax,bx ;передача делимого W6

mov dx,bp ;в DX:AX

cmp ax,r1m ;сравнение ax с r1m

sbb dx,r1c ;сравнение dx с r1c

jns m2 ;переход на метку m2 если W5>15(+ymax)

mov dx,bp ;восстановить DX

cmp ax,r2m ;сравнить ax c r2m

sbb dx,r2c ;сравнить dx с r2c

js m3 ;переход на метку m3 если W5<15(-ymax)

;************************************************************************

;Деление DX:AX на k=15

mov dx,bp ;восстановить dx

mov si,k ;запись делителя k в si

idiv si ;ax <- dx:ax/si

mov yn,ax ;запись результата деления в yn

jmp m4 ;переход на метку m4

m2: mov yn,7FFFh ;запись в yn константы 7FFFh

jmp m4 ;переход на метку m4

m3: mov yn,8000h ;запись в yn константы 8000h

jmp m4 ;переход на метку m4

;************************************************************************

;Формирование очереди

m4:

mov ax,xn4 ;передать xn4

mov xn5,ax ;на место xn5

mov ax,xn3 ;передать xn3

mov xn4,ax ;на место xn4

mov ax,xn2 ;передать xn2

mov xn3,ax ;на место xn3

mov ax,xn1 ;передать xn1

mov xn2,ax ;на место xn2

mov ax,xn ;передать xn

mov xn1,ax ;на место xn1

jmp M1 ;переход на метку M1

;************************************************************************

;

;Окончание программы

mov AH,4CH ;функция DOS

int 21H ;выход из программы

filtr ENDP ;конец процедуры filtr

END filtr ;конец программы