【王爽-汇编语言】第九章检测题分析

来源:互联网 发布:手机管理路由器软件 编辑:程序博客网 时间:2024/04/27 21:53

 

下列能够改变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