马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 trump 于 2014-6-29 21:49 编辑
(1) 下面的程序执行后,ax中的数值为多少?(注意:用call指令的原理来分析,不要在Debug中单步跟踪来验证你的结论。对于此程序,在Debug中单步跟踪的结果,不能代表CPU的世纪执行结果。)assume cs:codesg
stacksg segment
dw 8 dup (0)
stacksg ends
codesg segment
start:
mov ax,stacksg
mov ss,ax
mov sp,16
mov ds,ax
mov ax,0
call word ptr ds:[0EH]
inc ax
inc ax
inc ax
mov ax,4c00h
int 21h
codesg ends
end start
"call word ptr ds:[0EH]"执行后(ss:[0eh])=0011h("inc ax"内存地址偏移量)。即(ds:[0eh]=0011h。
因此,ax中的数值为3。
(2) 下面的程序执行后,ax和bx中的数值为多少?assume cs:codesg
stacksg segment
dw 8 dup (0)
stacksg ends
codesg segment
start:
mov ax,stacksg
mov ss,ax
mov sp,16
mov word ptr ss:[0],offset s
mov ss:[2],cs
call dword ptr ss:[0]
nop
s:
mov ax,offset s
sub ax,ss:[0ch]
mov bx,cs
sub bx,ss:[0eh]
mov ax,4c00h
int 21h
codesg ends
end start
"mov word ptr ss:[0] offset s"执行后(ss:[0])=001ah。
"call dword ptr ss:[0]"执行后(ss:[0ch])=0019h("nop"内存地址偏移量),(ss:[0eh])=(cs)。
"sub ax,ss:[0ch]"执行后(ax)=1。
"sub bx,ss:[0eh]"执行后(bx)=0。
|