汇编语言第三版(王爽版)第九章检测点

检测点9.1

(1)assume cs:code

         data segment

          ?

         data ends

         code segment

          start:mov ax,data

                  mov ds,ax

                  mov bx,0

                  jmp word ptr [bx+1]

          code ends

           end start

若要使程序中的jmp指令执行后,CS:IP指向程序的第一条指令,在data段中应定义哪些数据?

解析:jmp word ptr,是转移地址在内存中的作用,是段内转移,即ip变化,CS不变。那么在data段中定义3个0就可以。

 

(2)程序如下

assume cs:code

data segment

dd 12345678H

data ends

code segment

start:mov ax,data

mov ds,ax

mov bx,0

mov [bx],______

mov [bx+2],_____

jmp dword ptr ds:[0]

code ends

end start

补全程序,使jmp指令执行后,CS:IP指向程序的第一条指令

解析:jmp dword ptr 内存单元地址      是段间转移,从内存单元放着两个字,高地址存放的是段地址,低地址存放的是偏移地址

段地址,显然应该为CS,因为要求指向的是指令。偏移地址,显然是0,因为指向第一条指令。

答案:bx;cs

(3)用debug查看内存,结果如下

2000:1000  BE 00 06 00 00 00 ……

则此时,cpu执行指令:

mov ax,2000H

mov es,ax

jmp dword ptr es:[1000H]

后,CS=?    IP=?

解析:不看debug,自己分析如下:

00     01     02      03        04

BE    00      06     00        00 

jmp dword ptr,低地址放偏移地址,高地址放段地址

BE 00为偏移地址,06 00为段地址

CS=0006    IP=00BE

 

检测点9.2

补全编程,利用JCXZ指令,实现在内存2000H段中查找第一个值为0的字节,找到后,将它的偏移地址存储在dx中

assume cs:code

code segment 

start: mov ax,2000H

mov ds,ax

mov bx,0

s:______

________

________

________

jmp short s

ok:mov dx,bx

mov ax,4c00h

int 21h

code ends

end start

解析:jcxz指令是条件转移指令,当cx=0的时候,转移。

现在段地址已经在2000H处,现在只需要改变BX,实现从2000:0开始,寻找值为0的字节。

现在的思路就是,把值放进cx,然后用jcx判断值是否为0

答案:mov cl,[bx]

           mov ch,0

            jcxz ok

            inc bx

 

检测点9.3

补全编程,利用loop指令,实现在内存2000H段中查找第一个值为0的字节,找到后,将它的偏移地址存储在dx中

assume cs:code

code segment 

start:mov ax,2000H

        mov ds,ax

        mov bx,0

s:     mov cl,[bx]

        mov ch,0

        ________

       inc bx 

       loop s

ok:  dec bx

       mov dx,bx

       mov ax,4c00h

       int 21h

code ends 

end start

解析:当我们没找到这个值为0的数时,cx是一个大于0的数,所以这个loop可以执行,当值为0的时候,循环无法继续

所以横线上,我们需要填,inc cx

        

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值