assume cs:codesg,ss:stacksg
stacksg segment
dw 16 dup(0)
stacksg ends
codesg segment
main:mov ax,stacksg
mov ss,ax
mov sp,16
mov ax,3 ;sp+2
mov bx,1 ;sp+2
push ax
push bx
call fun ;调用后ip入栈,sp+2
mov ax,4c00h
int 21h
fun:add sp,2 ;sp指向bx的内存地址
pop di ;di=bx,sp+2
pop si ;si=ax,sp+2
sub si,di ;si=si+di
mov ax,si ;ax=si,ax作为被乘数
mul si ;ax=si*si,因为si是8位,8位除法结果保留在ax中
mul si ;ax=si*si*si
sub sp,6 ;sp-6,使sp指向ip的内存地址
ret ;pop ip
codesg ends
end main