ВУЗ:
Составители:
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
- …
- следующая ›
- последняя »
