8.串处理指令有什么特殊规定? 答:在串处理指令中,源串默认在数据段中,但允许使 用段跨越前缀来修改,源操作数用SⅠ寻址;目的串只能在附 加段中,目的操作数用DⅠ寻址。SI与DI有自动增、减量的功 能,可完成正向或反向、字节操作或字操作的串处理。 9.条件转移指令和无条件转移指令有什么不同? 答:条件转移指令的位移量只允许8位,即目标地址应 在本条转移指令的下一条指令地址的-128+127个字节的 范围之内,因此它只能实现段内转移;无条件转移指令则没 有此限制,它能够实现段内和段间两种转移,段内转移可使 用8位或16位位移量
8. 串处理指令有什么特殊规定? 答:在串处理指令中,源串默认在数据段中,但允许使 用段跨越前缀来修改,源操作数用SI寻址;目的串只能在附 加段中,目的操作数用DI寻址。SI与DI有自动增、减量的功 能,可完成正向或反向、字节操作或字操作的串处理。 9.条件转移指令和无条件转移指令有什么不同? 答:条件转移指令的位移量只允许8位,即目标地址应 在本条转移指令的下一条指令地址的-128 ~ +127个字节的 范围之内,因此它只能实现段内转移;无条件转移指令则没 有此限制,它能够实现段内和段间两种转移,段内转移可使 用8位或16位位移量
第四章 1.指令和伪指令有什么区别? 答:指令是在程序运行期间由计算机来执行的,而伪指令(伪操作 )是在汇编程序对源程序进行汇编时处理的操作,完成诸如数据定义、 存储器分配、指示程序开始结束等功能。 2.汇编语言源程序中的变量和标号有哪些属性? 答:源程序中的变量和标号都有三种属性:段、偏移及类型。变量 在除代码段以外的其他段中定义,段地址存放在段寄存器中,偏移地址 存放在基址或变址寄存器中,变量的类型可以是BYTE(字节)、WORD( 字)、 DWORD(双字)等;标号指示指令的地址,它的段地址总在CS中 ,偏移地址在IP中,标号的类型可以是NEAR(近)或FAR(远)。 3.指令 AND AL, OPRI AND0FFH中的两个AND有什么区别? 答:第一个A№是操作码,表明这是一条逻辑运算指令,完成逻辑 与运算;第二个AN是一个按位操作的逻辑操作符,它只能用于数字表 达式
第四章 1. 指令和伪指令有什么区别? 答:指令是在程序运行期间由计算机来执行的,而伪指令(伪操作 )是在汇编程序对源程序进行汇编时处理的操作,完成诸如数据定义、 存储器分配、指示程序开始结束等功能。 2. 汇编语言源程序中的变量和标号有哪些属性? 答:源程序中的变量和标号都有三种属性:段、偏移及类型。变量 在除代码段以外的其他段中定义,段地址存放在段寄存器中,偏移地址 存放在基址或变址寄存器中,变量的类型可以是BYTE(字节)、WORD( 字)、DWORD(双字)等;标号指示指令的地址,它的段地址总在CS中 ,偏移地址在IP中,标号的类型可以是NEAR(近)或FAR(远)。 3.指令AND AL, OPR1 AND 0FFH中的两个AND有什么区别? 答:第一个AND是操作码,表明这是一条逻辑运算指令,完成逻辑 与运算;第二个AND是一个按位操作的逻辑操作符,它只能用于数字表 达式
第五章 1.在把二进制数以十六进制数的形式在屏幕上显示出来的程序中,关 于显示字符的 aScii码是如何调整的? 答:在使用DS功能调用(INT21H)显示单个字符时,必须得到要 显示字符的ASCI码。字符’0到9的ASCI码为30H到39H,因此只要把0 到9加上3OH就可以了;但字符A’到F的ASCI码为41H到46H,OAH到OFH 除了加上30H之外,还要再加上7。 2.为什么说循环结构是分支结构的特例? 答:循环结构在满足循环条件时实行循环,这实际上是多次走同 个分支,当不满足循环条件时,就走另一个分支,因此循环结构是一种 特殊的分支结构。 3.多重循环程序如何编写? 答:可以利用LOOP指令和转移指令
第五章 1. 在把二进制数以十六进制数的形式在屏幕上显示出来的程序中,关 于显示字符的ASCII码是如何调整的? 答:在使用DOS功能调用(INT 21H)显示单个字符时,必须得到要 显示字符的ASCII码。字符'0'到'9'的ASCII码为30H到39H,因此只要把0 到9加上30H就可以了;但字符'A'到'F'的ASCII码为41H到46H,0AH到0FH 除了加上30H之外,还要再加上7。 2. 为什么说循环结构是分支结构的特例? 答:循环结构在满足循环条件时实行循环,这实际上是多次走同一 个分支,当不满足循环条件时,就走另一个分支,因此循环结构是一种 特殊的分支结构。 3. 多重循环程序如何编写? 答:可以利用LOOP指令和转移指令
第六章 1.子程序调用和返回指令完成哪些操作? 答:子程序调用指令首先把子程序的返回地址(即调用程序中CAL指 令的下一条指令的地址)存入堆栈,然后转移到子程序的入口地址去执行 ,它又分为段内调用和段间调用;返回指令的操作是返回地址出栈送IP寄 存器(段内或段间)和CS寄存器(段间) 2.将过程定义为FAR属性,可以段内调用吗? 答:不能。如果所定义的过程是FAR属性,那么对它的调用和返回一定 都是FAR属性;如果所定义的过程是FAR属性,那么对它的调用和返回一定 都是FAR属性。因此只需在定义时考虑它的属性,而CAL和RET的属性由汇 编程序来确定。 3.在用堆栈传参的子程序设计中,为什么常用带常数的返回指令? 答:在用堆栈传参时,主程序中要把参数的地址压入堆栈,子程序中 通过BP寄存器访问堆栈单元取出参数的地址,而不是用出栈的方法。因此 为使返回到主程序后堆栈能恢复原始状态不变,要用带常数的返回指令调 整SP的值
第六章 1. 子程序调用和返回指令完成哪些操作? 答:子程序调用指令首先把子程序的返回地址(即调用程序中CALL指 令的下一条指令的地址)存入堆栈,然后转移到子程序的入口地址去执行 ,它又分为段内调用和段间调用;返回指令的操作是返回地址出栈送IP寄 存器(段内或段间)和CS寄存器(段间)。 2. 将过程定义为FAR属性,可以段内调用吗? 答:不能。如果所定义的过程是FAR属性,那么对它的调用和返回一定 都是FAR属性;如果所定义的过程是FAR属性,那么对它的调用和返回一定 都是FAR属性。因此只需在定义时考虑它的属性,而CALL和RET的属性由汇 编程序来确定。 3.在用堆栈传参的子程序设计中,为什么常用带常数的返回指令? 答:在用堆栈传参时,主程序中要把参数的地址压入堆栈,子程序中 通过BP寄存器访问堆栈单元取出参数的地址,而不是用出栈的方法。因此 为使返回到主程序后堆栈能恢复原始状态不变,要用带常数的返回指令调 整SP的值
4.在用堆栈传参的子程序设计中,为什么要 PUSH BP? 答:这是因为子程序中要用到BP寄存器。在子程序中, 为了取得从堆栈传递过来的参数,必须访问堆栈,这就要 用到BP寄存器,而BX、SⅠ、DI等寄存器都不能用来访问堆 栈。 5.堆栈段定义时,其变量名所指的是堆栈中的哪个位置 ? 答:栈底。(P206) 6.过程是否只有调用它的时候才被汇编? 答:不是。过程和其他指令一样,在汇编时就被汇编, 只是调用时才被使用
4.在用堆栈传参的子程序设计中,为什么要PUSH BP? 答:这是因为子程序中要用到BP寄存器。在子程序中, 为了取得从堆栈传递过来的参数,必须访问堆栈,这就要 用到BP寄存器,而BX、SI、DI等寄存器都不能用来访问堆 栈。 5.堆栈段定义时,其变量名所指的是堆栈中的哪个位置 ? 答:栈底。(P206) 6.过程是否只有调用它的时候才被汇编? 答:不是。过程和其他指令一样,在汇编时就被汇编, 只是调用时才被使用