Вычислить значение выражения - 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д