东大11秋汇编语言程序设计试题解析

5星 · 超过95%的资源 需积分: 18 14 下载量 142 浏览量 更新于2024-09-16 2 收藏 47KB DOC 举报
"东大11秋汇编语言程序设计试题" 这篇资料主要涵盖了汇编语言程序设计的一些基础知识点,包括寻址方式、数据表示、运算符的使用、栈的操作、条件转移指令、数据存储格式、算术运算溢出标志、子程序调用以及中断处理。以下是对这些知识点的详细解释: 1. **寻址方式**:在汇编语言中,指令`MOV AL,[BX+100]`的源操作数是通过基址加偏移量的方式来访问的,这称为基址变址寻址。BX寄存器作为基址,100作为偏移量。 2. **数据表示的合法性**:在汇编语言中,合法的数据表示可以是十六进制数(如A3H)、二进制运算表达式(如2 AND 3*5,虽然在实际编程中可能不常见)等。非法的数据表示包括使用字母Q(如138Q,非标准十六进制或二进制表示)。 3. **栈操作**:栈是一种特殊的内存区域,遵循“后进先出”原则。PUSH指令将数据压入栈,导致栈顶指针SP减小。因此,如果SP初始值为100H,执行PUSH AX后,SP会减2变为00FAH。 4. **条件转移指令**:在比较指令如CMP之后,可以使用JMP家族的指令进行条件转移。例如,如果AX≥BX,JNB(无符号不小于)和JA(无符号大于)都能转到OK执行。 5. **数据定义**:在汇编语言中,DB用于定义字节数据,DW用于定义字数据,DD用于定义双字数据。所以,X1DB 'ABCD'是错误的,因为字符串应该用DB定义,但X1DB 1234H是正确的,表示一个16位的数值。 6. **算术运算和标志位**:在AL(8位)和BL(8位)中执行ADD指令后,根据结果,OF(溢出标志)和CF(进位标志)会被设置。当AL=67H,BL=34H时,执行ADD AL, BL不会产生溢出,且低4位没有发生进位,因此OF=0,CF=0。 7. **除法运算**:对于带符号数的除法,应使用IDIV指令。所以,计算AL/BL的商,正确的方法是IDIVBL。 8. **子程序调用**:在调用NEAR(近似)子程序SUBR时,可以使用LEA指令加载子程序的地址到寄存器,然后使用CALL指令调用。因此,正确的方式是LEASI, SUBR; CALL SI。 9. **8259A中断控制器**:ICW2的值设定中断级别,15H表示最高优先级。当IR2端有中断请求时,送出的中断方式码是IR2的级别加上高4位的ICW2,即04H+11H=15H。 10. **8259A级联**:在两个8259A级联的中断系统中,从8259A连接在主8259A的IR3上,主8259A的ICW3设置为中断请求线IR3对应的二进制值,即00001100B=0CH,而从8259A的ICW3设置为主8259A的中断输入端口,即00001000B=08H。 此外,题目还涉及了一些错误的指令,比如MOV DS, CS和MOV CS, AX,这两个指令在实模式下是不允许的,因为CS寄存器不能被直接写入。 这份试题涵盖了汇编语言程序设计的基础知识,包括基本操作、逻辑判断、子程序调用和中断处理等方面,是学习汇编语言的重要练习材料。