Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

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

Задание | Введение | Структурная схема МПС | Структура памяти и распределения данных | Схема алгоритма вычисления выражения |


Читайте также:
  1. Cinematheque Jean Marie Boursicot» «Ночь пожирателей рекламы» Рекламное агентство ТВИН МЕДИА является обладателем прав на показ программы в России и странах СНГ.
  2. II. Основные цели и задачи Программы с указанием сроков и этапов ее реализации, а также целевые индикаторы и показатели, отражающие ход ее выполнения
  3. III. Мероприятия Программы
  4. III. Мероприятия Программы
  5. IV. Обоснование ресурсного обеспечения Программы
  6. SPA- и медицинские программы
  7. SPA-программы

Yn = (9Xn−3Xn-1−5Xn-2+3Xn-3)∕4

;Программа вычисления Yn=(9*Xn-3*Xn_1-5*Xn_2+3*Xn_3)/4 ст. Степанова;Наталья Викторовна

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

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

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

org 500h

XN dw 0;Резервирование места в памяти

XN1 dw 0;для переменных

XN2 dw 0;Xn, Xn_1, Xn_2

XN3 dw 0;Xn_3 и

YN dw 0;результата Yn

 

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

 

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

K EQU 4;Делитель

R1ML EQU 0FFFCh;константе R1ML присвоить значение мл. части

;4*(+Ymax)

R1CT EQU 0001h;константе R1CT присвоить значение ст. части

;4*(+Ymax)

R2ML EQU 0000h;константе R2ML присвоить значение мл. части

;4*(-Ymax)

R2CT EQU 0FFFEh;константе R2CT присвоить значение ст. части

;4*(-Ymax)

 

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

 

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

FILTP proc;начало процедуры с именем FILTP

mov ax,@data;перемещение указателя ds на

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

 

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

 

;Сброс очереди Xn,Xn-1,Xn-2,Xn-3,Y в нуль

sub ax,ax;сброс аккумулятора ax в нуль

mov xn,ax;сброс xn в нуль

mov xn1,ax;сброс xn1 в нуль

mov xn2,ax;сброс xn2 в нуль

mov xn3,ax;сброс xn3 в нуль

mov yn,ax;сброс yn в нуль

 

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

 

;Вычисление w1=9*xn

M1:

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

cwd;расширение ax в dx, т.е. xn в формате двойного слова

mov si,dx;сохранение xn в si:di

mov di,ax;

add ax,ax;вычисление 2*xn (xn+xn)

adc dx,dx;

add ax,ax;вычисление 4*xn (2*xn+2*xn)

adc dx,dx;

add ax,ax;вычисление 8*xn (4*xn+4*xn)

adc dx,dx;

add ax,di;вычисление 9*xn (8*xn+xn)

adc dx,si;

mov bx,ax;сохранение w1 в bp:bx

mov bp,dx;

 

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

 

;Вычисление w2=w1-3*xn1

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

cwd;расширение ax в dx, т.е. xn1 в формате двойного слова

mov si,dx;сохранение xn1 в si:di

mov di,ax;

add ax,ax;вычисление 2*xn1 (xn1+xn1)

adc dx,dx;

add ax,di;вычисление 3*xn1 (2*xn1+xn1)

adc dx,si;

sub bx,ax;вычитание w1-3*xn1 и сохранение w2 в bp:bx

sbb bp,dx;

 

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

 

;Вычисление w3=w2-5*xn2

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

cwd;расширение ax в dx, т.е. xn2 в формате двойного слова

mov si,dx;сохранение xn2 в si:di

mov di,ax;

add ax,ax;вычисление 2*xn2 (xn2+xn2)

adc dx,dx;

add ax,ax;вычисление 4*xn2 (2*xn2+2*xn2)

adc dx,dx;

add ax,di;вычисление 5*xn2 (4*xn2+xn2)

adc dx,si;

sub bx,ax;вычитание w2-5*xn2 и сохранение w3 в bp:bx

sbb bp,dx;

 

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

 

;Вычисление w4=w3+3*xn3

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

cwd;расширение ax в dx, т.е. xn3 в формате двойного слова

mov si,dx;сохранение xn3 в si:di

mov di,ax;

add ax,ax;вычисление 2*xn3 (xn3+xn3)

adc dx,dx;

add ax,di;вычисление 3*xn3 (2*xn3+xn3)

adc dx,si;

add bx,ax;сложение w3+3*xn3 и сохранение w4 в bp:bx

adc bp,dx;

 

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

 

;Выявление переполнения

mov ax,bx;запись w4 в dx:ax в

mov dx,bp;формате двойного слова

mov si,K;запись K в si

 

cmp ax,R1ML;сравнение ax с R1ML (формируется заём)

sbb dx,R1CT;сравнение dx с R1CT (вычитается заём)

jns M2;переход на метку M2, если w4>4*(+Ymax)

 

mov dx,bp;запись ст. части w4 в dx

cmp ax,R2ML;сравнение ax с R2ML (формируется заём)

sbb dx,R2CT;сравнение ax с R2CT (вычитается заём)

js M3;переход на метку M3, если w4<4*(-Ymax)

 

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

 

;Деление dx:ax/si

mov dx,bp;запись ст. части w4 в dx

idiv si;деление на si (частное в ax) dx:ax/si=ax

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

 

M2:

mov ax,7FFFh;yn<(+Ymax)

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

 

M3:

mov ax,8000h;yn<(-Ymax)

 

M4:

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

 

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

 

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

mov ax,xn2;перенос xn2 в ax и запись xn2

mov xn3,ax;через ax в xn3

mov ax,xn1;перенос xn1 в ax и запись xn1

mov xn2,ax;через ax в xn2

mov ax,xn;перенос xn в ax и запись xn

mov xn1,ax;через ax в xn1

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

 

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

 

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

mov ah,4ch;функция DOS

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

FILTP endp;конец процедуры FILTP

end FILTP;конец программы

 

 


Дата добавления: 2015-08-18; просмотров: 43 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Схема алгоритма выявления переполнения и деления на 4 и регистровая модель этой операции| Основные результаты разработки

mybiblioteka.su - 2015-2024 год. (0.011 сек.)