;-----------------------------------@ y5, y1si,y5di,a0MULT ; y5 = y5*a0@ y4, y5 ; y4 = y5@ y5, y2si,y5di,a1MULT ; y5 = y5*a1si,y4di,y5FSUMMA ; y4 = y4+y5@ y5, y3si,y5di,a2MULT ; y5 = y5*a2si,y4di,y5FSUMMA ; y4 = y4+y5di,ynt ; üsi,y4 ; ô
; add di,index ;ýcx,2 ; | y(nT) = y4movsw ; þ
;start
;===============================================
MULT PROC FAR
; Первый операнд X находится в регистрах BX:SI,
; второй Y в регистрах DX:DI, произведение
; возвращается в регистрах BX:SI.
; При возникновении особого случая CF=1
;
; lea si,X ; в нашем случае не используются
; lea di,Y ; в нашем случае не используются
;bx,[si+2]si,[si]dx,[di+2]di,[di]: ; Проверить операнды на нульax,bx ; Проверить на 0ax,si ; первый операнд@@M1 ; Произведение равно 0ax,dx ; Проверить на 0ax,di ; второй операндMULF1 ; Операнды не равны 0bx,dx ; Произведение равно 0si,di
@@M1: jmp MULF8
;
; Операнды не нулевые, можно умножать.
; Образовать знак произведения, восстановить мантиссы.: mov ch,bh ; Знак произведенияch,dh ; в регистре CHbx,1 ; Восстановить скрытый бит; мантиссы первого операндаbl,1dx,1 ; Восстановить скрытый бит; мантиссы второго операндаdl,1
; Сложить порядки.al,bh ; Сложить в ALal,dh ; смещенные порядкиMULF2 ; Возник переносal,127 ; Вычесть смещениеMULF3 ; Можно умножатьMULF8 ; Возникло антипереполнение: add al,129 ; Учесть потерю 256 из-за переносаMULF3 ; Можно умножатьMULF8 ; Возникло переполнение
; Можно умножать мантиссы.: mov bh,al ; Порядок произведения в BHdh,dh ; Подготовить местоax,ax ; для произведенияcl,dl ; Освободить регистр DX
; Здесь начинается цикл умножения: mov ax,si ; Умножить младшиеdi ; слова мантиссWORD PTR TEMP,dx ; Сохранить старшую часть
;произведенияal,blah,0diWORD PTR TEMP,ax ; Учесть результатNEXT ; в полном произведенииdx: mov WORD PTR TEMP+2,dxal,cl ; Умножить следующиеah,0 ; части мантиссsiWORD PTR TEMP,axNEXT1dx: add dx,WORD PTR TEMP+2al,bl ; Умножить старшиеcl ; байты мантиссax,dx ; Образовать полное произведениеbl,ah ; и разместить егоah,al ; в регистрах BL:SIal,BYTE PTR TEMP+1si,ax
; Проверить нарушение нормализации влево.: or bl,bl ; Проверить старший бит мантиссыMULF7 ; Нарушения нормализации нетbh ; Увеличить порядок на 1; CF=1MULF8 ; Возникло переполнениеMULFA ; Переполнения нет: shl si,1 ; Сдвинуть мантиссуbl,1 ; влево на один бит
; Формирование результата: add ch,ch ; Знак во флаге переносаbh,1 ; Знак числа на местеch,1 ; Младший бит порядка в CHch,7fh ; Образовать маскуbl,ch ; Образовать 2-й байт произведенияdi,Z[di],si[di+2],bx: ret
MULT ENDP
;=================================================
; подпрограмма сложения чисел в формате ПЗ
;======================================================PROC FAR
; 1. Сравнение порядков для определения большего
@S:cl,[si+2] ; Занесение в регистр CXch,[si+3] ; двух старших байтов числа X в ФПЗ.dl,[di+2] ; Занесение в регистр DXdh,[di+3] ; двух старших байтов числа Y в ФПЗ.
; ДЛЯ ВЫЧИТАНИЯ НАДО В СТРОКЕ 30 УДАЛИТЬ
;ТОЧКУ С ЗАПЯТОЙ
; XOR DH,80H
;cx,1 ; Занесение порядка числа X в CHcl,1 ; (и знака в бит 23).dx,1 ; Занесение порядка числа Y в DHdl,1 ; (и знака в бит 23).
;ch,dh ; Сравнение порядков X и Y@L1 ; Переход, если (CH) < (DH) (Px < Py).
Читайте также
Проект внутризоновой ВОЛП на участке Новосибирск—Карасук
Научно-технический
прогресс во многом определяется скоростью передачи информации и ее объемом.
Возможность резкого увеличения объемов передаваемой информации наиболее полно
реализуется ...
Проектирование мобильного включателя
В данном курсовом проекте разрабатывается мобильный
включатель, который предназначен для дистанционного заблаговременного включения
подогрева моторного отсека автомобиля, при хранении ав ...
Организация сети широкополосного доступа Комсомольского микрорайона г. Краснодара
Сегодня
потребность пользователей Интернет в передаче большого объема данных на высокой
скорости стремительно растет. Это связано с увеличением качества используемых
данных, и как резул ...