汇编语言 王爽的 10.5(2)
检测点10.5(2)下面的程序执行后,ax和bx中的数值为多少?
assume cs:codesg
stack segment
dw 8 dup(0)
stack ends
codesg segment
start:
mov ax,stack
mov ss,ax
mov sp,10h
mov word ptr ss:,offset s ;(ss:)=1ah
mov ss:,cs ;(ss:)=cs
call dword ptr ss: ;cs入栈,ip=19h入栈,转到cs:1ah处执行指令
;(ss:)=cs,(ss:)=ip
nop
s:mov ax,offset s ;ax=1ah
sub ax,ss: ;ax=1ah-(ss:)=1ah-19h=1
mov bx,cs ;bx=cs=0c5bh
sub bx,ss: ;bx=cs-cs=0
mov ax,4c00h
int 21h
codesg ends
end start
但是NOP起什么作用呢
BS我算出来了是0
AX是怎么算的? Nop占一个字节 这题ax其实就是s的地址-nop的地址=1
执行sub ax,ss:前ss栈的内容ss:0e=cs ss:0c=call 后面一条指令的地址(即nop的地址) nop CPU不执行,只起到占位数的作用:big
页:
[1]