ВУЗ:
Составители:
26
extrn des:word
public ascbin
;------------------------------------------------------------;
cseg segment para public 'code' ;
ascbin proc far ; с ;
assume cs:cseg ; ;
push bx ; Сохранение содержимого ; е ;
push cx ; рабочих регистров ; ;
push si ; ; г ;
Продолжение прил.
mov ax,0 ; ; ;
mov bx,0 ; Подготовка цикла ; м ;
mov cx,3 ; ; ;
povt1: ; е ;
imul des ; ax:=ax*10 ; ;
inc si ; Формирование в bl ; н ;
mov bl,[si] ; двоичного эквивалента ; ;
and bl,0fh ; i-го разряда числа ; т ;
add ax,bx ; ax:=ax+bl (bh содерж. 0); ;
loop povt1 ; ; ;
pop si ; Восстановление si ; ;
cmp byte ptr [si],'+' ; формирование ; ;
je pos ; знака двоичного ; к ;
neg ax ; эквивалента числа ; ;
pos: ; о ;
pop cx ; Восстановление содержимого ; ;
pop bx ; рабочих регистров ; д ;
ret ; Возврат в вызывающую программу ; ;
ascbin endp ; а ;
;------------------------------------------------------- ;
cseg ends ;
;------------------------------------------------------------;
end
Подпрограмма func
Обеспечивает вычисление функции y=(a+b)*c/d, где a,b,c,d дво-
ичные знаковые числа в формате слова. Перед запуском
func в
регистр
bx должен быть помещен адрес начала таблицы, содержа-
щей адреса аргументов a,b,c,d и адрес результата
y.
Используемые регистры:
ax,bx,dx,si.
extrn des:word public ascbin ;------------------------------------------------------------; cseg segment para public 'code' ; ascbin proc far ; с ; assume cs:cseg ; ; push bx ; Сохранение содержимого ; е ; push cx ; рабочих регистров ; ; push si ; ; г ; Продолжение прил. mov ax,0 ; ; ; mov bx,0 ; Подготовка цикла ; м ; mov cx,3 ; ; ; povt1: ; е ; imul des ; ax:=ax*10 ; ; inc si ; Формирование в bl ; н ; mov bl,[si] ; двоичного эквивалента ; ; and bl,0fh ; i-го разряда числа ; т ; add ax,bx ; ax:=ax+bl (bh содерж. 0); ; loop povt1 ; ; ; pop si ; Восстановление si ; ; cmp byte ptr [si],'+' ; формирование ; ; je pos ; знака двоичного ; к ; neg ax ; эквивалента числа ; ; pos: ; о ; pop cx ; Восстановление содержимого ; ; pop bx ; рабочих регистров ; д ; ret ; Возврат в вызывающую программу ; ; ascbin endp ; а ; ;------------------------------------------------------- ; cseg ends ; ;------------------------------------------------------------; end Подпрограмма func Обеспечивает вычисление функции y=(a+b)*c/d, где a,b,c,d дво- ичные знаковые числа в формате слова. Перед запуском func в регистр bx должен быть помещен адрес начала таблицы, содержа- щей адреса аргументов a,b,c,d и адрес результата y. Используемые регистры: ax,bx,dx,si. 26
Страницы
- « первая
- ‹ предыдущая
- …
- 25
- 26
- 27
- 28
- 29
- …
- следующая ›
- последняя »