data segment
a db ? x db ?
y db 0
y1 db 0
y2 db 0
per db 10,13,'$'
mesa db 10,13,'input a: $'
mesx db 10,13,'input x: $',10,13
data ends stk segment stack db 128 dup(?) stk ends assume cs:code, ds:data, ss:stk code segment start:
mov ax,data
mov ds,ax
mov dx, offset mesa
mov ah,9 ;приглашение на ввод а
int 21h
mov ah,1 ;считывание нажатого символа
int 21h
mov a,al
mov dx,offset mesx
mov ah,9 ;приглашение на ввод x
int 21h
mov ah,1 ;считывание нажатого символа
int 21h
mov x,al
mov dx,offset per
mov ah,9
int 21h
mov al,a
cmp x,al
jle Lower ;если x<=a, то перейти на метку Lower. Иначе на метку Higher.
jg Higher
Lower:
mov al,a
add al,al
sub al,x
mov y1,al
jmp short m2
Higher:
mov al,a
add al,x
mov y1,al
m2:
mov al,10
cmp x,al
jge Small1;если x<=10, то перейти на метку Small1. Иначе на метку Bigg1.
jl Bigg
Small1:
mov al,x
mov y2,al
jmp short m3
Bigg:
mov al,a
mul x
mov y2,al
m3:
mov al,y1
mov bl,y2
add al,bl mov y,al
;вывод на экран
aam
add ax,3030h
mov dl,ah
mov dh,al
mov ah,02 int 21h
mov dl,dh int 21h
mov ah,0
int 16h
mov ah,4ch
int 21h
code ends end start