ВУЗы и колледжи

Помогите решить задачу на ассемблере

Для однобайтных чисел со знаком:

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. Почему бы вопросы по программированию не задавать в соответствующей категории?
Дархан Карим Улы
Дархан Карим Улы
51 590
Лучший ответ