Для однобайтных чисел со знаком:
section code
..start:
mov si,data
mov ds,si
mov es,si
mov si,stack
mov ss,si
mov sp,st_head
mov si,c_data
mov di,x
mov cx,4
rep movsb
mov al,[x]
imul byte [a]
mov bx,ax
mov al,[b]
cbw
add ax,bx
cmp byte [x],5
jle OutResult
mov bx,ax
mov al,[x]
cbw
imul bx
mov bx,ax
mov al,[c]
cbw
add ax,bx
OutResult:
cwd
xor ax,dx
sub ax,dx
push ax
and dl,0Dh
or dl,20h
mov al,dl
int 29h
pop ax
call WriteInt
xor ah,ah
int 16h
mov ah,4Ch
int 21h
WriteInt:
push dx
mov bx,10
cwd
div bx
test ax,ax
jz WI2
call WriteInt
WI2:
mov al,dl
or al,30h
int 29h
pop dx
ret
section stack stack
resw 100h
st_head:
section data
c_data db 6,-2,3,5
absolute 300h
x resb 1
a resb 1
b resb 1
c resb 1
P.S. Есть ограничение на исходные данные. Результат не должен превышать 16 двоичных разрядов.
P.P.S. Почему бы вопросы по программированию не задавать в соответствующей категории?