![]() |
#2
zklhp2012-09-29 09:18
|

assume cs:code, ss:stack
stack segment
dw 0,0,0,0,0,0,0,0
stack ends
code segment
start:
mov ax, 0 ;0,1,2
call far ptr s ;3,4,5,6,7 前面共占7字节,可是call后栈中的IP却为8.为什么.?
;call指令相当于push cs , push ip , jmp far ptr 标号.
;也就是说会把当前cs,ip压入栈中,可为什么ip入栈后是8... = =#怎么感觉这个问题这么弱智。。。
inc ax
s :
pop ax
add ax, ax
pop bx
add ax, bx
mov ax, 4c00h
int 21h
code ends
end start
stack segment
dw 0,0,0,0,0,0,0,0
stack ends
code segment
start:
mov ax, 0 ;0,1,2
call far ptr s ;3,4,5,6,7 前面共占7字节,可是call后栈中的IP却为8.为什么.?
;call指令相当于push cs , push ip , jmp far ptr 标号.
;也就是说会把当前cs,ip压入栈中,可为什么ip入栈后是8... = =#怎么感觉这个问题这么弱智。。。
inc ax
s :
pop ax
add ax, ax
pop bx
add ax, bx
mov ax, 4c00h
int 21h
code ends
end start