Вычислить значение выражения - Assembler (223024)
Формулировка задачи:
Вычислить условный целочисленный выражение в форматах Integer и Word, используя команды сравнения. Результат проверить на область допустимых значений.
Я думаю,что а и b запрашивать с консоли и проверять на то являетьсяли это числом.
Решение задачи: «Вычислить значение выражения»
textual
Листинг программы
; b/a+2,a>b ;X=-11,a=b ; (a-8)/b,a<b model tiny .code org 100h begin: mov ax,a mov bx,b cmp ax,bx jg @01 jl @02 ;equ mov ax,-11 mov bx,1 jmp OutNum a dw 3 b dw 6 ;b/a+2=(b+2a)/a @01: xchg ax,bx add ax,bx add ax,bx;b+a+a jmp OutNum ;a-8 @02: sub ax,8 OutNum: mov di,10 cwd idiv bx push dx push ax or ax,dx pop ax jns on1 not ax inc ax push ax mov al,'-' int 29h pop ax on1: xor cx,cx on2: xor dx,dx div di push dx inc cx or ax,ax jnz on2 on3: pop ax or al,'0' int 29h loop on3 pop ax or ax,ax jz on6 jns on4 not ax inc ax on4: push ax mov al,'.' int 29h mov cx,20 on5: pop ax or ax,ax jz on6 dec cx jz on6 xor dx,dx mul di div bx push dx or al,'0' int 29h jmp on5 on6: ret end begin
Объяснение кода листинга программы
- Объявление переменных a и b со значениями 3 и 6 соответственно:
a dw 3
,b dw 6
. - Сравнение значений a и b:
cmp ax, bx
. - Если a > b, то устанавливается значение X = -11:
mov ax, -11
. - Если a < b, то вычисляется выражение (a - 8) / b:
sub ax, 8
. - Перевод числа в строку для вывода на экран:
mov di, 10
,cwd
,idiv bx
,push dx
,push ax
. - Проверка знака числа и добавление знака минус, если число отрицательное:
or ax, dx
,jns on1
,not ax
,inc ax
,push ax
,mov al, '-'
,int 29h
. - Преобразование числа из двоичной системы счисления в десятичную и вывод на экран:
xor cx, cx
,xor dx, dx
,div di
,push dx
,inc cx
,or ax, ax
,jnz on2
,pop ax
,or al, '0'
,int 29h
,loop on3
. - Если преобразованная часть числа не равна нулю, то вычисляется десятичная дробная часть:
or ax, ax
,jz on6
,jns on4
,not ax
,inc ax
,push ax
,mov al, '.'
,int 29h
,mov cx, 20
,dec cx
,xor dx, dx
,mul di
,div bx
,push dx
,or al, '0'
,int 29h
,jmp on5
. - Возврат из подпрограммы и завершение программы:
ret
,end begin
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д