汇编笔记

汇编


C1

CPU只能执行机器指令

利用寄存器存放运算数据和运算结果,效率最高

汇编语言

  • 与机器关系密切
  • 效率高
  • 原程序繁琐
  • 调试困难

CPU基本功能:

  • 执行机器指令
  • 暂存少量数据
  • 访问存储器

机器指令一般由操作码和操作数构成

C2

实方式是最初的工作方式,保护方式能发挥出最大的性能

EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP

NEG:取补

CF ZF SF:与运算结果的最高位相同 OF:正数加正数等于负数,负数加负数变成正数

CLC:清CF STC:置CF CMC:CF取反

ADC:带进位,即+CF

SBB:即继续减去CF

n根地址线,可形成的最大物理地址是2n-1

代码段、数据段和堆栈段

寻址方式:除ESP寄存器外,其他7个通用寄存器都可以作为变址寄存器

  • 立即寻址:用立即数,只有源操作数才可以用立即数
  • 寄存器寻址方式
  • 存储器寻址方式:
    • 直接寻址:[98765H]
    • 寄存器间接寻址:[ESI]
    • 寄存器相对寻址
    • 基址加变址

显式地标明存储器操作数的尺寸:MOV WORD PTR var2, 9

条件转移指令:记

CMP:目的操作数-源操作数 (影响各标志)

  • 根据零标志ZF是否置位,判断两者是否相等,JNZ(不等于0转移)
  • 如果两者是无符号数,可根据进位标志CF判断大小,JAE(高于等于转移)
  • 如果两者是有符号数,要同时根据符号标志SF和溢出标志OF判断大小,JGE(大于等于转移)
    • SF=0,OF=0,表示a-b>0且没有溢出,则a>b
    • SF=1,OF=1,a必为正数,b必为负数,a>b
    • SF!=OF表示a<b

无条件转移指令:JMP

C3

传递入口参数的方法:

  • 寄存器传递参数
  • 堆栈传递法

MUL(无符号数乘法指令,被乘数位于EAX,操作数不能是立即数)

  • IMUL OPRD

  • IMUL DEST,SRC

  • IMUL DEST,SRC1,SRC2(SRC2只能是一个立即数)

DIV OPRD

IDIV OPRD

CBW

CWD

CDQ

CWDE

知道这四个怎么用

符号扩展:MOVSX:最高位是1就扩展成F,否则是0

零扩展:MOVZX

NOT

AND

OR

XOR

TEST:将两个操作数按位与,然后仅影响状态标志

移位的位数只能由CL或立即数决定!

SAL(Arithmetic)

SHL

这两个左移相同,最高位进CF,最低位补0

SAR

算术右移最低位进CF,最高位补之前的最高位

SHR

逻辑右移最低位进CF,最高位补0

算术(逻辑)左移1位,相当于乘以2

算术右移1位,相当于有符号数除以2

逻辑右移1位,相当于无符号数除以2

ROL

ROR

丢掉的位进CF和需要补位的地方

RCL

RCR

带进位

段内转移和段间转移

条件转移指令和循环指令,只能实现段内转移

LOOP:

  • DEC ECX
  • JNZ LABEL

LOOPE

LOOPNE

寄存器作为局部变量可以提高效率,但寄存器数量有限

一般利用堆栈来安排局部变量

RET count:额外调整ESP。把count加到ESP,常用于平衡在调用子程序时压入堆栈的参数

C4

操作方向由DF决定,CLD:清DF,STD:置DF

LODSB:

  • MOV AL,[ESI]
  • INC ESI

LODSW

LODSD

STOSB:把累加器EAX的内容送到寄存器EDI所指向的存储单元中,然后根据方向标志DF使EDI之值增1或减1

MOVSB:

  • LODSB
  • STOSB

SCASB

CMPSB

REP:重复前缀,REP MOVSB

C5

C6

实方式下指令指针寄存器EIP中的高16位必须是0,相当于只有低16位的IP起作用

实方式下堆栈指针寄存器ESP中的高16位必须是0,相当于只有低16位的SP起作用

实地址可访问物理地址空间:00000H – FFFFFH

段起始地址 = 段值×16

物理地址 = 段值×16 + 偏移

RETF 段间返回指令

IA-32系列处理器支持两种段模式,也即32位段模式和16位段模式

在保护方式下,一般采用32位段;在实方式下,只能使用16位段

C7

BIOS包含了主要I/O设备的处理程序和许多常用例行程序,它们一般以中断处理程序的形式存在

C8

中断允许标志IF

为1时,允许可屏蔽中断

为0时,禁止可屏蔽中断

单步标志TF

为1时,进入单步

为0时,正常

必考题汇总

  1. 汇编语言特点:汇编繁琐,编写效率低,但程序效率高,能掌控一切!
  2. 寄存器EAX能通过……指令,变成另一个值
  3. 堆栈的作用:
    • 保存函数的返回地址
    • 用于向函数传递参数
    • 安排函数的局部变量
  4. 堆栈相关知识
  5. p105/把32位二进制数转换为10进制数的ASCll码串
  6. 第五章作业必考问答题
  7. p159堆栈
  8. p68、69
  9. p223逻辑地址计算物理地址
  10. p241/6-37
  11. p310/数据传送方式
  12. p314/一般查询方式流程图
  13. 子程序与中断处理程序的区别:主动与被动
  14. pptRCH82 INT中断程序
  15. jump call INT n之间的差异

ZSBD

将小写字母的ASCLL码转换为大写字母: AND AL,11011111B

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值