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

一、在Intel8086环境下,下列说法合理的是_____。 3
 1、 汇编语言程序载入内存后处于64K空间以外的数据和指令将无法使用和执行。 
 2、 一个数据段命名为data,此标号代表这个数据段在内存中的起始地址。 
 3、 如果载入的程序没有返回语句,那么当程序代码执行完毕,将继续读取后续内存空间 
      存储的指令到CPU内部作为指令执行下去,直到遇到返回指令为止。 
 4、 用DW和DD定义进行的数据,只能够以字为单位访问。 

 


注解:1、可以的执行。我们有段间跳转啊。同时修改cs,ip就能在各段见穿梭了。
        2、见课本P121最下面,一个数据段命名为data,仅在源程序中存在,CPU并不知道,只有在code段中使用指令mov ax,data,mov ds,ax后CPU才把data段中的内容当数据来使用。

这个解释本身没有什么问题,但是好像不是对于这道题的分析方向。
我觉得段名只是代表了段地址而已,偏移地址每个段默认开始都是0,这个段名应该没有必要代表。

      3、一个程序结束后,将CPU的控制权交还给使它得以运行的程序,我们称这个过程为程序返回。程序返回依靠两句汇编指令“mov ax,4c00H,int 21H”。如果没有返回指令,程序就不把CPU的控制权交还给使它得以运行的程序,而是继续运行下去,直到遇到返回指令为止。
      4、对数据的操作,应该只和指令有关,和数据的单位无关。【个人理解】

 

 

二、在某程序中,定义了262B的数据段data,那么程序载入内存,该段实际占用的内存空间是____B。 3
 1、 256 
 2、 262 
 3、 272 
 4、 512 


注解:262=16*16+6,段最小16K,且是16的倍数,系统为多余的6个字节申请16个字节的空间,所以实际占用空间为256+16=272B
   
三、 assume cs:code  
    code segment  
    start: mov ax,3 
    jmp s1 
    s: mov bx,0 
    mov ax,bx 
    s1: mov cx,3 
    s2: add ax,2 
    loop s2 
    s3: mov ax,4c00h 
    int 21h 
    code ends 
    end s  
    上面代码执行s3处的指令之前,ax的值是_____。 2
 1、 9 
 2、 6 
 3、 5 
 4、 2 


注解:本题只需注意最后一句“end s”,即入口点是s,而不是start。

 

四、assume cs:codesg 
    codesg segment 
    dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h 
    start:mov ax,0 
    mov ds,ax 
    mov bx,0 
    mov cx,8 
    s:________ 
    add bx,2 
    loop s 
    mov ax,4c00h 
    int 21h 
    codesg ends 
    end start 
    要实现一次用内存0:0--0:15单元中的数据改写程序中定义的数据,添加到空白处的指令序列不能是____。 (1)

  
 1、 mov cs:[bx],ds:[bx] 
 2、 mov dx,[bx] 
        mov cs:[bx],dx 
 3、 push [bx] 
        pop cs:[bx] 
 4、 mov ax,[bx] 
        mov cs:[bx],ax 

 


注解:

         1、mov指令不支持两个操作数都是内存单元的操作。
         2、3、4都是正确的。可能有人会疑惑为什么程序没有设置栈段,其实程序在载入时就有个默认的栈段了,debug下载入程序时默认的SS和SP,就分别是这个栈段的段地址和偏移地址。

 

 

 

五、某程序有数据段、栈段和代码段三部分,如果加载后代码段的段地址为X,那么下列说法正确的是___。 4
 1、 可以断定数据段的段地址是X-2。 
 2、 可以断定栈段的段地址是X-1。 
 3、 可以断定程序PSP区的段地址是X-10。 
 4、 确定数据段和栈段的段地址与X的关系,要视其大小和在其在源程序中定义的位置关系。 

 

 
注解:完成P123页的试验5的(1)(2)(3)后就会明白这点。程序加载后,数据段、栈段和代码段的段地址有数值上的加减关系,主要与数据段、栈段和代码段的位置有关系。

 

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值