汇编网第六章检测题
1、在Intel8086环境下,下列说法合理的是___。
1、 汇编语言程序载入内存后处于64K空间以外的数据和指令将无法使用和执行。
2、 一个数据段命名为data,此标号代表这个数据段在内存中的起始地址。
3、 如果载入的程序没有返回语句,那么当程序代码执行完毕,将继续读取后续内存空间存储的指令到CPU内部作为指令执行下去,直到遇到返回指令为止。
4、 用DW和DD定义进行的数据,只能够以字为单位访问
分析:首先题目的正确答案是3. 1,4不做讨论,对于2,标号代表的应该是数据段在内存中的段地址。对于3,这个问题比较有意思。貌似不怎么经得起推敲
1、 汇编语言程序载入内存后处于64K空间以外的数据和指令将无法使用和执行。
2、 一个数据段命名为data,此标号代表这个数据段在内存中的起始地址。
3、 如果载入的程序没有返回语句,那么当程序代码执行完毕,将继续读取后续内存空间存储的指令到CPU内部作为指令执行下去,直到遇到返回指令为止。
4、 用DW和DD定义进行的数据,只能够以字为单位访问
分析:首先题目的正确答案是3. 1,4不做讨论,对于2,标号代表的应该是数据段在内存中的段地址。对于3,这个问题比较有意思。貌似不怎么经得起推敲
网上有一种说法是:“不一定遇到返回指令,还可能遇到死循环,或者是错误指令,不是一定能返回,实际情况往往多数是不能遇到结束程序的指令导致程
序无响应了。”
对这种说法我持怀疑态度。我用debug加载一个一般的程序,去掉int 21h后单步执行了很多遍也没有遇到死循环或者是错误指令。但是也不是出现不了死循环, 比如你程序本身是这样s:mov ax,1 mov ds,ax jmp short s或者程序本身将这段程序拷贝到程序后面的内存单元中也可能导致死循环,对于错误指令也是这样。
2.在某程序中,定义了262B的数据段data,那么程序载入内存,该段实际占用的内存空间是____B。
1、 256
2、 262
3、 272
4、 512
分析:初次看到这个题目无疑选3。原因就是段地址吗,16的整数倍。术语好像说是“节对齐”。但是貌似也不怎么经得起推敲。比如说:一般情况下程序段为最后一个 段,它的实际占用内存和其翻译成机器码的字节数是相等的。也就是说如果我把data段在程序的最后定义,那么它就占262字节。可以在debug下实验之。
对这种说法我持怀疑态度。我用debug加载一个一般的程序,去掉int 21h后单步执行了很多遍也没有遇到死循环或者是错误指令。但是也不是出现不了死循环, 比如你程序本身是这样s:mov ax,1 mov ds,ax jmp short s或者程序本身将这段程序拷贝到程序后面的内存单元中也可能导致死循环,对于错误指令也是这样。
2.在某程序中,定义了262B的数据段data,那么程序载入内存,该段实际占用的内存空间是____B。
1、 256
2、 262
3、 272
4、 512
分析:初次看到这个题目无疑选3。原因就是段地址吗,16的整数倍。术语好像说是“节对齐”。但是貌似也不怎么经得起推敲。比如说:一般情况下程序段为最后一个 段,它的实际占用内存和其翻译成机器码的字节数是相等的。也就是说如果我把data段在程序的最后定义,那么它就占262字节。可以在debug下实验之。