复习汇编
复习纲要
老师给的复习纲要,考完了我回来给你说,因为每一个编译器不一样,命令多种多样,考的也简单。
填空题都是分散的一个一个的知识点,冷知识一样。
大题的话基本上都是给你一段代码,让你说明某一行完了之后寄存器内容,这段代码什么作用。
ASCII 里面大写在前面,小写在后面,中间差32,我就记反了。
基本概念:
☐ 理解汇编语言与机器语言的区别与联系
- 最为接近
- 采用助记符指令
- 一一对应
☐ 掌握进制转换、与或非运算:该节内容应在大一的时候就已经掌握
- -3.625D=1100.1011B
- 八进制O/Q
- 十六进制H
- 补码取反加一
☐ 了解其它内容
IA-32处理器体系结构:
☐ 了解微机的结构
- central processing unit + 内催储存单元 + 输入输出设备 + 数据控制地址总线
- cmos 内存存放微机系统配置
- pcl 声卡显卡现在集成了
- EPROM,一种可擦写的只读存储器
- DRAM,动态随机访问存储器,可读可写,一般容量大,便宜,要求有刷新电路。
- SRAM,静态随机访问存储器,不需刷新电路,常用作缓存
- VRAM,显存,是一种双端口的存储器,CPU可以访问,视频卡也可以访问。
- CMOS RAM,低功耗存储器,用于存储机器配置信息,时钟信息等,通过电池供电。
☐ 掌握IA32处理器的基本执行环境,掌握各寄存器的作用
- ia-32 最大4G-32位地址线 20跟地址线-最大访问量1M
- EAX 扩展累加寄存器 在乘法和除法指令中被自动使用
- EBX 基址寄存器 地址索引
- ECX 循环计数器
- EDX 数据寄存器
- ESI 扩展源指针寄存器 (配合 DS 全局变量)传送指令使用
- EDI 扩展目的指针寄存器 (配合 ES )传送指令使用
- ESP 扩展堆栈指针寄存器 (配合 SS 指向堆栈)
- EBP 扩展帧指针寄存器 栈低
- CS 指向代码
- EIP 下一条指令 不能使用转移,算数指令修改
☐ EFLAGS 控制 cpu 操作
- CF 进位 CF 最高位进位借位为 1
- AC 辅助进位 AC 低四位进位借位为 1
- PF 奇偶 PF 1个数为偶数时为 1
- ZF 零 ZF 结果为0时为 1
- SF 符号标志 SF 0正1负
- OF 溢出标志 OF 超出为 1
- DF 串操作 DF 1减0增
- IF 中断屏蔽 IF 0断1不断
- TF 单步执行 TF 1单步执行
☐ 理解指令的运行过程
- 查找文件
- 获取磁盘位置
- 分配内存,文件转入内存
- 执行一条跳转指令
- 跳转程序的第一条指令
☐ 掌握IA-32处理器有3种基本的操作模式,特别是保护模式与实模式(包括地址计算等)
保护模式-基本
- 286开始
- 应用分级别,不能访问内存
- 32位地址线,4G 寻址0FFFFFFFFH
- 段寄存器放段描述符索引
- 平坦 - 一段 vs 多段
实模式-8086
- 20根地址线
- 段寄存器放段的基地址
☐ 了解其它内容
分页机制实现线性地址到物理地址的映射,便于实现虚拟内存
汇编语言基础:
☐ 理解汇编语言的基本要素,能写出完整的汇编程序
- 字符串存得时 ascii
- 支持()+-*/ mod
- 变量第一位不能为数字,1~247个字符
- DB 单字节 8bit
- DW 双字节 16bit
- DD 四字节 32bit
- DQ 八字节 64bit
- Sword 带符号字
- Sdword 带符号四字
☐ 理解汇编程序转换为可执行程序的全过程
☐ 掌握配置VC6的方法
☐ 掌握汇编数据定义方法、符号常量的定义方法
☐ 理解Intel处理器所使用的小端顺序,并能灵活运用。
- 0 78h 01111000
- 1 56h 01010110
- 2 34h 00110100
- 3 12h 00010010
数据传送寻址和算术运算:
☐ 掌握数据传送指令MOV、XCHG的使用,了解MOVZX、MOVSX、LAHF、SAHF的使用
☐ 掌握加减运算INC、DEC、ADD、SUB、NEG指令
☐ 掌握有符号数与无符号数溢出的判断方法
☐ 掌握OFFSET、PTR、TYPE、LENGTHOF操作符的使用,了解ALIGN、SIZEOF、LABEL的使用
☐ 掌握寻址方式:间接寻址、变址寻址,了解变址操作数中的比例因子
括号 括号+数
☐ 掌握JMP指令和LOOP指令的使用
过程:
☐ 掌握push、pop指令,并能理解这些指令对ESP寄存器的影响,了解PUSHFD,POPFD,PUSHAD,POPAD
☐ 掌握过程(procedure)的定义和调用
☐ 理解CALL和RET指令对栈的影响,以及其对EIP的影响
☐ 了解USES的使用
条件处理:
☐ 掌握布尔运算指令(AND、OR、XOR、NOT)和比较指令CMP,以及TEST指令
☐ 了解CLC、STC指令的功能
☐ 理解数字符号与数字的关系,如数字1与数字符号1,对于后者存在计算机中使用的是它的ASCII代码31h。要求能应用在编程中。
☐ 掌握条件跳转指令的使用,并能根据数的符号的有无选择正确的条件跳转指令。
☐ 掌握LOOPZ/LOOPE/LOOPNZ/LOOPNE的使用
整数算术指令:
☐ 掌握移位和循环移位指令SHL、SHR、SAL、SAR、ROL、ROR、RCL、RCR的使用,了解指令SHLD、SHRD
☐ 掌握乘法和除法运算指令MUL、DIV、IMUL、IDIV的使用
☐ 掌握扩展加减法
(无需了解调整指令)
高级过程:
☐ 掌握堆栈框架(Stack Frame)的使用:栈框架的建立,栈的清理,要求能画出栈在调用一个过程中的变化情况;
☐ 理解通过栈传递参数的原理,能结合EBP来计算参数的位置
☐ 理解C调用约写与stdcall调用约定的不同点与相同点
☐ 理解如何在过程中使用局量变量
☐ 掌握LEA、ENTER、LEAVE指令的
☐ 了解Local伪指令
☐ 掌握.stack, .model的使用
☐ 掌握invoke伪指令的使用,理解它是如何转换为call指令的。
☐ 了解protod伪指令。
串操作:
☐ 掌握串操作指令MOVS、CMPS、SCAS、STOS、LODS的使用
☐ 理解基址变址寻址,相对基址变址寻址,了解比例因子
各种操作
字写得丑,见谅
以上