Gather ye rosebuds while ye may

复习汇编


汇编考试终于完了
然后把复习资料传一下


复习纲要

老师给的复习纲要,考完了我回来给你说,因为每一个编译器不一样,命令多种多样,考的也简单。
填空题都是分散的一个一个的知识点,冷知识一样。
大题的话基本上都是给你一段代码,让你说明某一行完了之后寄存器内容,这段代码什么作用。
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的使用
☐ 理解基址变址寻址,相对基址变址寻址,了解比例因子


各种操作

字写得丑,见谅







以上