检测点10.5
本帖最后由 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:
inc ax
inc ax
inc ax
mov ax,4c00h
int 21h
codesg ends
end start"call word ptr ds:"执行后(ss:)=0011h("inc ax"内存地址偏移量)。即(ds:=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:,offset s
mov ss:,cs
call dword ptr ss:
nop
s:
mov ax,offset s
sub ax,ss:
mov bx,cs
sub bx,ss:
mov ax,4c00h
int 21h
codesg ends
end start"mov word ptr ss: offset s"执行后(ss:)=001ah。
"call dword ptr ss:"执行后(ss:)=0019h("nop"内存地址偏移量),(ss:)=(cs)。
"sub ax,ss:"执行后(ax)=1。
"sub bx,ss:"执行后(bx)=0。
检测点10.5太难了 篮球火 发表于 2014-12-8 19:40
检测点10.5太难了
Keep on 刚把得 太难了 有点乱
页:
[1]