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.
<br> 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.
<br> 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