model small
stack 256
.data
y dw ?
y1 dw ?
y2 dw ?
a dw 2
x dw 1
.code
main:
mov ax,@data
mov ds,ax
push a
push x
push y1
push y2
call w1
call w2
mov ax,[BP+6]
mov y1,ax
mov bx,[BP+8]
mov y2,bx
add ax,bx
mov y,ax
mov ax,4c00h
int 21h
w1 proc
mov BP,SP
mov ax,[BP+2] ;a
mov bx,[BP+4] ;x
cmp bx,ax
jBE M1
mov al,[BP+2]
mov cx,2
mul cx
sub al,[BP+4]
mov [BP+6],al
jmp M2
M1:
mov al,[BP+2]
add al,[BP+4]
mov [BP+6],al
ret
w1 endp
w2 proc
M2:
mov bp,sp
mov ax,[BP+4]
cmp ax,10
jBE M3
mov al,[BP+4]
mov [BP+8],al
M3:
mov al,[BP+2]
mul x
mov [BP+8],al
ret
w2 endp
end main
процедуры assembler
Код вроде верно написан
y=y1+y2
y1=a+x, если x>a
y1=
y1=2*a-x,если x<=a
a*x,если x>10
y2=
x,если x<=10
Код:
а чего вы то al используете, то ax? и отдалите процедуры друг от друга и от остального кода, вынесите метки на 0-ю позицию строки