本文件包含期末考试全面复习资料与配套练习题,旨在帮助学生系统掌握课程要点,并通过实践提升应试能力。
【汇编语言复习知识点】
1. **寻址方式**:
- **立即寻址**:指令直接给出操作数,如`MOV AH,80H`。
- **寄存器寻址**:操作数在寄存器中,例如`MOV AH,BH`。
- **直接寻址**:直接给出内存地址,如`MOV AX,[1234H]`。
- **寄存器间接寻址**:操作数在主存储单元中,通过寄存器间接访问,如`MOV BX,[DI]`。
- **寄存器相对寻址**:例如`MOV BX,[SI+100H]`,地址基于寄存器值加上偏移量。
- **基址加变址寻址**:`MOV BX,[BX+SI]`,操作数的地址由基址寄存器和变址寄存器相加得到。
- **相对基址加变址寻址**:如`MOV BX,[BX+SI+100H]`,与上述相同但包含额外偏移量。
2. **指令操作与标志位**
- **NEG 指令**: 改变操作数的正负号。例如, `NEG AL` 将AL中的值变为相反数。
- **TEST 指令**:进行逻辑与运算,不改变结果但用于检查特定位是否为1,如`TEST AL, 02H`。
- **CMP 指令**: 比较操作数并更新标志位而不修改实际的操作数值。例如 `CMP AL,BL`。
3. **汇编语言结构**
- **语句组成部分**:包括地址项、操作项(不可省略)、操作数项和注释项,如`MOV AX, 0FFFH`
- **8086CPU的20条地址线**: 允许最大寻址空间为1MB。
- **存储器分段机制**:在8086/8088系统中每个段的最大容量不超过64KB(即使用了16位地址)。
4. **指令与数据操作限制**
- 目的操作数不能采用立即寻址,例如`MOV AX, 0`是非法的。
- 指令中的操作数值如果位于代码段内,则如 `MOV AL, 42H`
- 不影响源和目的操作数的指令:比如 `CMP AX,BX` 只会更新标志位而不会改变操作数。
5. **伪指令与数据定义**
- 使用ENDP表示子程序结束。
- 数据定义示例: 如`BUF1 DB 3 DUP (0,2 DUP(1,2),3)` 定义了一个包含18字节的数据区域。
- 存储器地址访问时,可以使用DS、ES、SS和CS这些寄存器来提供偏移地址。
6. **段寄存器**
- CS 寄存器: 保存代码段的首地址, 控制程序执行流程。
- ES、SS 和 DS 分别用于附加数据段(Extra Segment)、堆栈段 (Stack Segment)和普通的数据段(Data Segment) 的寻址。
掌握以上汇编语言的基础知识点对于期末复习至关重要,熟悉这些概念有助于理解和编写更加复杂的汇编代码。在学习过程中,注意各种寻址方式的应用场景、指令对标志位的影响以及如何使用伪指令来组织程序结构,并理解8086/8088处理器的内存分段机制和地址计算方法是十分关键的。