1、汇编语言程序设计复习,2012秋季学期,题 型,单选(20题,每题2分,共40分) 填空(每空1分,共15分) 判断(共10题,每题1分,共10分) 程序分析题 (共5题,每题1分,共5分) 简答(共3题,共10分) 编程题(共3题,共20分),复习重点,8086的寄存器(AX,)特别熟悉标志寄存器的几个重点标志位(CF,ZF,OF,PF,SF) 什么是堆栈基址寄存器,什么是堆栈指针寄存器 寻址方式 立即数寻址 寄存器寻址 存储器寻址 存储器寻址的几类 熟悉基址变址寻址,在8086中哪些寄存器可以作为基址寄存器使用,哪些可以作为变址寄存器使用 能识别相对基址变址寻址 寄存器间接寻址 寄存器相对
2、寻址,复习重点,段寻址 段内直接寻址,会做以前留的作业题 段内间接寻址,可以用寄存器也可以用存储器单元作为间接地址 JMP bx , JMP word ptr BX 指令系统 通用数据传输指令mov :深刻理解“门当户对” 熟悉并理解LEA 与 OFFSET获取什么数值:地址or 数据? 熟悉并理解LEA 与 OFFSET的使用上的相同点与不同点是什么? 相同点:都是取得原操作数地址 不同点: LEA在执行时才计算地址,较offset慢;offset汇编时计算地址,较lea快 不同点: LEA在执行时才计算地址,使用灵活,可以有LEA AX,BX+SI+0010H形式 ; offset汇编时计
3、算地址,不灵活,只能与简单的符号地址相连,复习重点,算术运算,会计算两个数据运算结果 ADD ADC SUB SBB 算术运算(ADD、SUB),根据结果能正确判断对标志位的影响CF,ZF,OF,PF,SF 对于算术运算中的X,知道高位在哪里,低位在哪里? 对CMP指令有理解,它和SUB的区别是什么?,复习重点,基本指令的熟悉 逻辑指令的运算以及对标志位的影响(and, or, ,test以及test与and的区别是什么? INC DEC对标志位的影响 移位指令的运算以及对标志位的影响 逻辑移位 SHL SHR ,影响ZF 算术移位 SAL SAR ,影响ZF 循环移位 ROL ROR, 不带
4、CF ,不影响ZF 循环移位 RCL RCR ,带CF ,不影响ZF,复习重点,控制转移指令 JCC 有符号数比较大小跳转用什么指令 无符号数比较大小跳转用什么指令 熟悉JAJNBE JNAJBE JGJNLE JGEJNL JLJNGE JNBJAE 此类等价的指令(此处写的不全,请参考课件) 熟悉 JZ JE JC JS是干什么的 LOOP 先减在判断?还是先判断在减?先减再判断! 熟悉LOOPNZ 执行的条件是什么,其停止的条件是什么? 熟悉LOOPZ 执行的条件是什么,其停止的条件是什么?,复习重点,Dup 字节的计算 1) buf db 4 dup(?, 3,5)占了多少个字节 解答
5、: (?, 3,5)占3个字节所以buf 占用 3*4=12字节 2) buf dw 4 dup(?, 3,5)占了多少个字节 解答:?, 3,5 每个数据值占2字节,所以(?, 3,5)占2*3=6字节所以总的字节数 6*4=24个字节,复习重点,buf db 3 dup(2 dup(10,19,dup 3(?,?)) ,10) 中,buf一共占用多少字节,复习重点,熟悉汇编的程序结构 熟悉汇编的编译连接过程 知道什么是CPU,复习重点,熟悉 PTR 操作符 熟悉地址计数器 $,熟悉db $+4是多少,知道JMP $+4 是跳到哪里去? $为当前所处理单元的地址 1111H单元:2字节指令J
6、MP SHORT OBJ,问,OBJ为1)11H,跳的地址是哪里? 不要忘记 IP=IP+2+OBJ 会做作业,复习重点,循环与分支 深刻理解空间占位法 会写循环程序,会写分支程序,复习重点,子过程的定义伪操作 子过程的返回指令 子过程的参数传递有几种,会做 会平衡堆栈,特别是由子过程平衡堆栈 熟悉课后习题与上机试验 理解子过程的指令结构 (push bp mov bp,sp临时变量空间临时变量空间的清除 Pop bp平衡堆栈返回 (理解在平衡谁?收回谁占用的空间:入口参数空间),复习重点,会调用子过程,即会编写主程序,又会编写子过程 (参考作业与试验),复习重点,熟悉 IN , OUT 指令 熟悉当端口号=255时候,必须用DX 可以读入一个字节(AL),2个字节(AX):读入时先低后高 对于2个字节的数据,明白是从哪里读入的 对于8086,只能是AL,AX,其他都不对 理解并会计算中断向量地址 端口号*4,