Читайте также:
|
|
1 Аппаратурные затраты: на разработку МПС на базе МП К1810ВМ86 было затрачено 17 микросхем.
2 Программа заняла в памяти 155 байт.
3 Время выполнения программы (1 проход): 354 такта.
Расчёт времени выполнение программы:
Мнемоника | Вид адресации | Число тактов на выполнение команды |
mov dx,ax | Регистровая | |
mov di,ax | Регистровая | |
mov xn,ax | Прямая | |
mov ax,xn | Прямая | |
cwd | - | |
add ax,ax | Регистровая | |
adc dx,dx | Регистровая | |
mov bx,ax | Регистровая | |
mov bp,ax | Регистровая | |
sub bx,dx | Регистровая | |
sbb bp,dx | Регистровая | |
cmp ax,R1ML | Непосредственная | |
sbb dx,R1CT | Непосредственная | |
jns M2 | Относительная | |
js M3 | Относительная | |
jmp M4 | Прямая | |
mov yn,7FFFh | Прямая | 10+EA = 10+6 = 16 |
mov yn,ax | Прямая | |
mov ax,8000h | Непосредственная | |
mov ah,4ch | Непосредственная | |
int 21h | - | |
idiv si | Регистровая |
Отладка программы
1) При Xn > 0, Xn = 1016
Xn | ||||
Xn-1 | ||||
Xn-2 | ||||
Xn-3 | ||||
Yn |
2) При Xn < 0, Xn = -1016
Xn | FFF0 | FFF0 | FFF0 | FFF0 |
Xn-1 | FFF0 | FFF0 | FFF0 | |
Xn-2 | FFF0 | FFF0 | ||
Xn-3 | FFF0 | |||
Yn | FFDC | FFE8 | FFFC | FFF0 |
3) При возникновении положительного переполнения Xn = Xmax = 215-1 = 7FFF16
Xn | 7FFF | 7FFF | 7FFF | 7FFF |
Xn-1 | 7FFF | 7FFF | 7FFF | |
Xn-2 | 7FFF | 7FFF | ||
Xn-3 | 7FFF | |||
Yn | 7FFF | 7FFF | 1FFF | 7FFF |
4) При возникновении отрицательного переполнения Xn = Xmax = -215 = 800016
Xn | ||||
Xn-1 | ||||
Xn-2 | ||||
Xn-3 | ||||
Yn | E000 |
Листинг программы
Turbo Assembler Version 4.1 07/05/11 21:18:33 Page 1
progr6.asm
1;Программа вычисления Yn=(9*Xn-3*Xn_1-5*Xn_2+3*Xn_3)/4 ст. Степанова Наталья Викторовна
2 0000.MODEL small;модель памяти small
3 0000.STACK 64;модель стека 64
4 0000.DATA;начало сегмента данных
5 org 500h
6 0500 0000 XN dw 0;Резервирование места в памяти
7 0502 0000 XN1 dw 0;для переменных
8 0504 0000 XN2 dw 0;Xn, Xn_1, Xn_2
9 0506 0000 XN3 dw 0;Xn_3 и
10 0508 0000 YN dw 0;результата Yn
12;******************************************************************
14;Константы для деления и выявления переполнения
15 =0004 K EQU 4;Делитель
16 =FFFC R1ML EQU 0FFFCh;константе R1ML присвоить значение мл. части
17;4*(+Ymax)
18 =0001 R1CT EQU 0001h;константе R1CT присвоить значение ст. части
19;4*(+Ymax)
20 =0000 R2ML EQU 0000h;константе R2ML присвоить значение мл. части
21;4*(-Ymax)
22 =FFFE R2CT EQU 0FFFEh;константе R2CT присвоить значение ст. части
23;4*(-Ymax)
25;******************************************************************
27 050A.CODE;начало сегмента кодов
28 0000 FILTP proc;начало процедуры с именем FILTP
29 0000 B8 0000s mov ax,@data;перемещение указателя ds на
30 0003 8E D8 mov ds,ax;сегмент данных
32;******************************************************************
34;Сброс очереди Xn,Xn-1,Xn-2,Xn-3,Y в нуль
35 0005 2B C0 sub ax,ax;сброс аккумулятора ax в нуль
36 0007 A3 0500r mov xn,ax;сброс xn в нуль
37 000A A3 0502r mov xn1,ax;сброс xn1 в нуль
38 000D A3 0504r mov xn2,ax;сброс xn2 в нуль
39 0010 A3 0506r mov xn3,ax;сброс xn3 в нуль
40 0013 A3 0508r mov yn,ax;сброс yn в нуль
42;******************************************************************
44;Вычисление w1=9*xn
45 0016 M1:
46 0016 A1 0500r mov ax,xn;запись xn в аккумулятор ax
47 0019 99 cwd;расширение ax в dx, т.е. xn в формате двойного слова
48 001A 8B F2 mov si,dx;сохранение xn в si:di
49 001C 8B F8 mov di,ax;
50 001E 03 C0 add ax,ax;вычисление 2*xn (xn+xn)
51 0020 13 D2 adc dx,dx;
52 0022 03 C0 add ax,ax;вычисление 4*xn (2*xn+2*xn)
53 0024 13 D2 adc dx,dx;
54 0026 03 C0 add ax,ax;вычисление 8*xn (4*xn+4*xn)
55 0028 13 D2 adc dx,dx;
56 002A 03 C7 add ax,di;вычисление 9*xn (8*xn+xn)
57 002C 13 D6 adc dx,si;
Turbo Assembler Version 4.1 07/05/11 21:18:33 Page 2
progr6.asm
58 002E 8B D8 mov bx,ax;сохранение w1 в bp:bx
59 0030 8B EA mov bp,dx;
61;******************************************************************
63;Вычисление w2=w1-3*xn1
64 0032 A1 0502r mov ax,xn1;запись xn1 в аккумулятор ax
65 0035 99 cwd;расширение ax в dx, т.е. xn1 в формате двойного слова
66 0036 8B F2 mov si,dx;сохранение xn1 в si:di
67 0038 8B F8 mov di,ax;
68 003A 03 C0 add ax,ax;вычисление 2*xn1 (xn1+xn1)
69 003C 13 D2 adc dx,dx;
70 003E 03 C7 add ax,di;вычисление 3*xn1 (2*xn1+xn1)
71 0040 13 D6 adc dx,si;
72 0042 2B D8 sub bx,ax;вычитание w1-3*xn1 и сохранение w2 в bp:bx
73 0044 1B EA sbb bp,dx;
75;******************************************************************
77;Вычисление w3=w2-5*xn2
78 0046 A1 0504r mov ax,xn2;запись xn2 в аккумулятор ax
79 0049 99 cwd;расширение ax в dx, т.е. xn2 в формате двойного слова
80 004A 8B F2 mov si,dx;сохранение xn2 в si:di
81 004C 8B F8 mov di,ax;
82 004E 03 C0 add ax,ax;вычисление 2*xn2 (xn2+xn2)
83 0050 13 D2 adc dx,dx;
84 0052 03 C0 add ax,ax;вычисление 4*xn2 (2*xn2+2*xn2)
85 0054 13 D2 adc dx,dx;
86 0056 03 C7 add ax,di;вычисление 5*xn2 (4*xn2+xn2)
87 0058 13 D6 adc dx,si;
88 005A 2B D8 sub bx,ax;вычитание w2-5*xn2 и сохранение w3 в bp:bx
89 005C 1B EA sbb bp,dx;
91;******************************************************************
93;Вычисление w4=w3+3*xn3
94 005E A1 0506r mov ax,xn3;запись xn3 в аккумулятор ax
95 0061 99 cwd;расширение ax в dx, т.е. xn3 в формате двойного слова
96 0062 8B F2 mov si,dx;сохранение xn3 в si:di
97 0064 8B F8 mov di,ax;
98 0066 03 C0 add ax,ax;вычисление 2*xn3 (xn3+xn3)
99 0068 13 D2 adc dx,dx;
100 006A 03 C7 add ax,di;вычисление 3*xn3 (2*xn3+xn3)
101 006C 13 D6 adc dx,si;
102 006E 03 D8 add bx,ax;сложение w3+3*xn3 и сохранение w4 в bp:bx
103 0070 13 EA adc bp,dx;
105;******************************************************************
107;Выявление переполнения
108 0072 8B C3 mov ax,bx;запись w4 в dx:ax в
109 0074 8B D5 mov dx,bp;формате двойного слова
110 0076 BE 0004 mov si,K;запись K в si
112 0079 3D FFFC cmp ax,R1ML;сравнение ax с R1ML (формируется заём)
113 007C 83 DA 01 sbb dx,R1CT;сравнение dx с R1CT (вычитается заём)
114 007F 79 11 jns M2;переход на метку M2, если w4>4*(+Ymax)
Turbo Assembler Version 4.1 07/05/11 21:18:33 Page 3
progr6.asm
116 0081 8B D5 mov dx,bp;запись ст. части w4 в dx
117 0083 3D 0000 cmp ax,R2ML;сравнение ax с R2ML (формируется заём)
118 0086 83 DA FE sbb dx,R2CT;сравнение ax с R2CT (вычитается заём)
119 0089 78 0D js M3;переход на метку M3, если w4<4*(-Ymax)
121;******************************************************************
123;Деление dx:ax/si
124 008B 8B D5 mov dx,bp;запись ст. части w4 в dx
125 008D F7 FE idiv si;деление на si (частное в ax) dx:ax/si=ax
126 008F EB 0A 90 jmp M4;переход на метку M4
128 0092 M2:
129 0092 B8 7FFF mov ax,7FFFh;yn<(+Ymax)
130 0095 EB 04 90 jmp M4;переход на метку M4
132 0098 M3:
133 0098 B8 8000 mov ax,8000h;yn<(-Ymax)
135 009B M4:
136 009B A3 0508r mov yn,ax;запись результатов в yn
138;******************************************************************
140;Формирование очереди
141 009E A1 0504r mov ax,xn2;перенос xn2 в ax и запись xn2
142 00A1 A3 0506r mov xn3,ax;через ax в xn3
143 00A4 A1 0502r mov ax,xn1;перенос xn1 в ax и запись xn1
144 00A7 A3 0504r mov xn2,ax;через ax в xn2
145 00AA A1 0500r mov ax,xn;перенос xn в ax и запись xn
146 00AD A3 0502r mov xn1,ax;через ax в xn1
147 00B0 E9 FF63 jmp M1;переход на метку M1
149;******************************************************************
151;Окончание программы
152 00B3 B4 4C mov ah,4ch;функция DOS
153 00B5 CD 21 int 21h;выхода из программы
154 00B7 FILTP endp;конец процедуры FILTP
155 end FILTP;конец программы
Turbo Assembler Version 4.1 07/05/11 21:18:33 Page 4
Symbol Table
Symbol Name Type Value
??DATE Text "07/05/11"
??FILENAME Text "progr6 "
??TIME Text "21:18:33"
??VERSION Number 040A
@32BIT Text 0
@CODE Text _TEXT
@CODESIZE Text 0
@CPU Text 0101H
@CURSEG Text _TEXT
@DATA Text DGROUP
@DATASIZE Text 0
@FILENAME Text PROGR6
@INTERFACE Text 000H
@MODEL Text 2
@STACK Text DGROUP
@WORDSIZE Text 2
FILTP Near _TEXT:0000
K Number 0004
M1 Near _TEXT:0016
M2 Near _TEXT:0092
M3 Near _TEXT:0098
M4 Near _TEXT:009B
R1CT Number 0001
R1ML Number FFFC
R2CT Number FFFE
R2ML Number 0000
XN Word DGROUP:0500
XN1 Word DGROUP:0502
XN2 Word DGROUP:0504
XN3 Word DGROUP:0506
YN Word DGROUP:0508
Groups & Segments Bit Size Align Combine Class
DGROUP Group
STACK 16 0040 Para Stack STACK
_DATA 16 050A Word Public DATA
_TEXT 16 00B7 Word Public CODE
Заключение
В результате выполнения курсовой работы на основе МП К1810ВМ86, работающего в максимальном режиме, произведена разработка микропроцессорной системы, выполняющей функцию цифровой фильтрации.
Построен алгоритм выполнения ЦФ и реализован на языке Assembler. В режиме отладки исследованы особенности ЦФ. Рассчитано время выполнения программы в числе тактов. Представлена функциональная схема полученной МПС.
Разработанная МПС соответствует требованиям задания, в том числе условию минимизации длины программы и времени вычисления.
Список использованной литературы
1 Локтюхин В.Н. «Микропроцессорные системы. Проектирование аппаратных и программных средств: учеб. пособие», Рязан. гос. радиотехн. акад, - Рязань, 1998. – 100с.
2 Локтюхин В.Н. «Микропроцессорные системы. Проектирование процессора и памяти: учеб. пособие», Рязан. гос. радиотехн. ун-т, - Рязань, 2008. – 40с.
3 Локтюхин В.Н. «Архитектура компьютера: учебное пособие: в 2 кн. – Кн.2: Основы программирования на ассемблере IBM PC», Ряз. гос. ун-т им. С.А.Есенина. – Рязань, 2008. – 100 с.
4 Лю Ю. Чжен, Гибсон Г. «Микропроцессоры семейства 8086/8088. Архитектура, программирование и проектирование микрокомпьютерных систем: Пер. с англ.», М.: «Радио и связь», 1987.
5 Нефедов А.В. «Интегральные микросхемы и их зарубежные аналоги», изд. М.:«КУбК-а», тома 2,4,5,11, 1996-2001.
6 «Справочник конденсаторы» под ред. Четверткова И.И., Дьяконова М.Н., М.: «Радио и связь», 1993. – 392с.
7 «Справочник по полупроводниковым диодам» под ред. Николаевского И.Ф., М.: «Связь», 1979. – 432с.
8 «Справочник резисторы» под ред. Четверткова И.И., Терехова В.М., М.: «Радио и связь», 2-е изд., переработанное и дополненное, 1991.
9 Тарабрин Б.В. «Интегральные микросхемы. Справочник», изд.: М. «Радио и связь», 1983. – с.267-269, 310-312, 525-526.
10 Номенклатура и аналоги отечественных микросхем - http://www.radiotexnika.ru/spravochnik/adv/advh10.php
11 Chipinfo – электронные компоненты. Микросхемы отечественные - http://www.chipinfo.ru/dsheets/ic/
Дата добавления: 2015-08-18; просмотров: 46 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Разработка программы вычисления выражения | | | Введение |