汇编网首页登录博客注册
mengxinjinglong的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
最新留言
好友圈
友情链接

[2008-11-01 09:11] 第六章检测终于通过了,留个纪念

第一次做检测题的时候觉得很没有逻辑,不知道什么是对什么是错,但是经过3次的再学习,终于将自己不明白的部分弄明白了,还有也让自己发现做题是的粗心,明明是明白的却因为一个小疏忽错了好几次。以下是转的,顺便带点自己的想法:
一、在Intel8086环境下,下列说法合理的是_____。 3 
 1、 汇编语言程序载入内存后处于64K空间以外的数据和指令将无法使用和执行。  
 2、 一个数据段命名为data,此标号代表这个数据段在内存中的起始地址。  
 3、 如果载入的程序没有返回语句,那么当程序代码执行完毕,将继续读取后续内存空间  
    存储的指令到CPU内部作为指令执行下去,直到遇到返回指令为止。  
 4、 用DW和DD定义进行的数据,只能够以字为单位访问。  
注解:1、不清楚,欢迎指点 
      2、见课本P121最下面,一个数据段命名为data,仅在源程序中存在,CPU并不知道,只有在code段中使用指令mov ax,data,mov ds,ax后CPU才把data段中的内容当数据来使用。 
      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 (这个也可以参考我的实验5的解答)。
    
三、 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)后就会明白这点。程序加载后,数据段、栈段和代码段的段地址有数值上的加减关系,主要与数据段、栈段和代码段的位置有关系。
评论次数(5)  |  浏览次数(949)  |  类型(默认类型) |  收藏此文  | 

[  游客   发表于  2008-11-01 09:13  ]

恭喜啦

[  bpo   发表于  2008-11-01 19:15  ]

我今天晚上要过第6章,沾下你的光

[  bpo   发表于  2008-11-03 02:39  ]

楼主分析得很好,特别是第4题默认stack
和end s 这个入口点,第一次做时我没注意,
直接从start开始计算的

[  pascale   发表于  2008-12-04 00:20  ]

我感觉你对第一题的第二问回答的不对。
我感觉是因为一个数据段的段名只是这个段的段地址而不是地址

[  dragon-zn   发表于  2009-10-19 15:41  ]

1、 汇编语言程序载入内存后处于64K空间以外的数据和指令将无法使用和执行。(可用JMP指令跳转到64K空间以外来执行程序)

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码