давно
Старший Модератор
31795
6196
14.04.2016, 12:22
общий
это ответ
Здравствуйте, alexee.97!
Смотрите код:
[code lang=asm h=200]model small
.data
dbRes db 10,13,'Result:$'
a dw 14
b dw 48
c dw 26
d dw 3
e dw 44
f dw 6
g dw 37
.stack 100h
.code
start:
mov ax,@data
mov ds,ax;адресуем сегмент данных
mov ah,9
lea dx,dbRes
int 21h;выводим сообщение
;считаем знаменатель
mov di,b;48
mov ax,a;14
shr ax,1;14/2
sub di,ax;48-14/2
;считаем числитель
mov ax,di
mov si,c;26
sub si,d;3
shl si,1;(26-3)*2
mov ax,e;44
xor dx,dx
mul f;44*6
xchg si,ax
sub ax,si;(26-3)*2-44*6
cwd
;считаем дробь и формулу
idiv di;((26-3)*2-44*6)/(48-14/2)
imul a;14*((26-3)*2-44*6)/(48-14/2)
imul d;3*((26-3)*2-44*6)/(48-14/2)
mov bx,g;37
xchg ax,bx
sub ax,bx;37-14*3*((26-3)*2-44*6)/(48-14/2)
;выводим результат
mov si,10;счисления
xor di,di;флаг минуса
xor cx,cx;счетчик цифр
test ax,8000h;проверяем минус
jz @@01
not ax;меняем знак
inc ax
inc di;взводим флаг
@@01: xor dx,dx
div si;поразядно получаем цифры
push dx;сохраняем их в стеке
inc cx;считаем кол-во
or ax,ax;пока не ноль
jnz @@01
or di,di;проверяем флаг
jz @@02
mov al,'-'
int 29h;выводим минус
@@02: pop ax;извлекаем из стека
add al,'0';преобразовываем в символ
int 29h;выводим
loop @@02
mov ah,4Ch;выход
int 21h
end start
[/code]
ps:вопросы задавайте в мини-форуме.
Удачи!
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.