【王爽-汇编语言】测试题不解,请大家帮忙指点,附分析过程
对于指令jmp dword ptr [bx+0dh]的说法错误的是______。
1、 该指令能够实现段间转移。
2、 该指令转移的目的地址是在指令明确给出的。
3、 该指令转移的目的地址被存放在内存空间中。
4、 该指令中运用的寻址方式是寄存器相对寻址。
在我的机器上debug“jmp dword ptr [bx+0dh]”显示为'FF670D',运行后CS不变、IP变为 [bx+0dh]的内容,2错误。但1似乎也不对。这个指令按P169的定义是段间转移,但是理论上CS=[DS:(BX+d+2)],IP=[DS:(BX+d)],这里为什么CS不变呢?
对于如下程序:
assume cs:code
data segment
?
data ends
code segment
start:mov ax,data
mov ds,ax
mov bx,0
jmp dword ptr [bx+2]
code ends
end start
若在指令jmp dword ptr [bx+2]执行后,要使程序再次从第一条指令开始执行,下列对data段中的数据的定义更合理的是______。 3
1、 dd 0,0,0
2、 dw 0,0,0
3、 dw 0,0,seg code
4、 dw 0,0,offset code
编译显示3.4都能满足要求,无论数据是“dw 0,0,seg code”还是“dw 0,0,offset code”时,debug将“jmp dword ptr [bx+2]”其解析为"jmp far [bx+2]",二进制为FF6F02。
那么3和4哪个数据定义更加合理?why?
下列能够改变CS:IP所指位置并能通过编译的指令是______。4
1、 jmp short [bx]
2、 jne [bx]
3、 loop byte ptr [bx]
4、 jmp [bx]
1和4在debug中最后都被编译成"jmp [bx]",二进制形式都为"FF27"效果也一致。为什么选4?