下列能够改变CS:IP所指位置并能通过编译的指令是______。 ( 4 )
1、 jmp short [bx]
2、 jne [bx]
3、 loop byte ptr [bx]
4、 jmp [bx]
分析:
我在masm5.0上输入以上命令,只有1、4通过
[bx]中的数,放到jmp short [bx]中可能会出现越界情况
故,选4
对于如下程序:
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
分析:
seg code指的是code段的段地址,
offset code指的是code段的偏移地址。
jmp dword ptr 内存单元地址是段间转移指令,低地址处的字存放的是转移的目的偏移地址,高地址处存放的是转移的目的段地址。
故,选3
有如下程序段,填写2条指令,使程序在运行中将s处的一条指令复制到s0处。 ( 1 )
assume cs:code
code segment
s: mov ax,bx
mov si,offset s
mov di,offset s0
_______________
_______________
s0: nop
nop
code ends
end s
1、 mov ax,cs:[si]
mov cs:[di],ax
2、 mov ax,cs:[di]
mov cs:[si],ax
3、 mov ax,[si]
mov [di],ax
4、 mov ax,ds:[di]
mov ds:[si],ax
分析:
欲复制程序指令,须使用cx作为段地址,排除3、4选项
2和1刚好反了,正确答案为1
mov cx,0
s: mov ax,bx
loop s
以上指令序列执行后mov ax,bx被执行了多少次_____。 ( 4 )
1、 0
2、 256
3、 65535
4、 65536
分析:
cx决定了loop指令的循环次数。
0-1 = 65535
共被执行65535 + 1 = 65536次
注意不要被loop是段内段转移迷惑
对于指令jmp dword ptr [bx+0dh]的说法错误的是______。 ( 2 )
1、 该指令能够实现段间转移。
2、 该指令转移的目的地址是在指令明确给出的。
3、 该指令转移的目的地址被存放在内存空间中。
4、 该指令中运用的寻址方式是寄存器相对寻址。
分析:
2错误,转移的目的地址没有在指令中明确给出。
mov ax,2
mov cx,3
s: add ax,2
s1:loop s
mov di,offset s1
mov si,offset s3
mov ax,cs:[di]
mov cs:[si],ax
mov ax,1
mov cx,3
s2: add ax,2
s3: nop
nop
所有指令执行完后ax的值为_____。
1、 15
2、 7
3、 11
4、 3
分析:
程序中标记绿色的地方,功能是将s:add ax 2这句指令复制到s3中,在这个指令之前计算的ax值和最终结果没关系
将s3处用add ax,2替换,最终计算得到ax = 7