IBM-PC汇编语言期末总复习资料大全

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第二章

1、寄存器组

(1)通用寄存器

数据寄存器

EAX(32位) AX(16位) AH(8位)(高位) AL(8位)(低位)累加器EBX(32位) BX(16位) BH(8位)(高位) BL(8位)(低位)基址变址ECX(32位) CX(16位) CH(8位)(高位) CL(8位)(低位)计数器EDX(32位) DX(16位) DH(8位)(高位) DL(8位)(低位)数据

指针或变址寄存器

ESP(32位) SP(16位)堆栈指针寄存器

EBP(32位) BP(16位)基址指针寄存器

EDI(32位) DI(16位)目的变址寄存器

ESI(32位) SI(16位)源变址寄存器

(2)专用寄存器

EIP(32位) IP(16位)指令指针寄存器

EFLAGS(32位) FLAGS(16位)标志寄存器

ESP (32位) SP(16位)堆栈指针寄存器

2、标志位的符号表示、

3、段寄存器

CS(16位)代码段 DS(16位)数据段

SS(16位)堆栈段 ES(16位)附加段

4、段寄存器和相应存放偏移地址的寄存器之间的默认组合

第三章

1、七种寻址方式(举例)

立即寻 MOV AX,3069H

寄存器寻 MOV AL,BH

在内存中的五种寻址

直接寻 MOV AX,[2000H]

寄存器间接寻 MOV AX,[BX]

寄存器相对寻 MOV AX,COUNT[SI] 或者 MOV AX,[SI+COUNT](不推荐) 基址变址寻址 MOV AX,[BP][DI]

相对基址变址寻址 MOV AX,MASK[BX][SI]

2、指令系统

I.数据传送指令

(1)通用数据传送指令

MOV 传送

MOVSX 带符号扩展传送

用源操作数的符号位来填充目的操作数的高位数据位。

例:MOVSX EAX,CL

把CL寄存器中的8位数,符号扩展为32位数,送到EAX寄存器中。

MOVZX 带零扩展传送

恒用0来填充目的操作数的高位数据位

例:MOVZX DX,AL

把AL寄存器中的8位数,零扩展成16位数,送到DX寄存器中。

PUSH 进栈

入栈时高位字节先入栈,低位字节后入栈。

SP指向栈顶。

POP 出栈

以“先进后出”方式工作。

SP指向栈顶

PUSHA/PUSHAD 所有寄存器进栈

PUSHA(16位):进栈次序为:AX,CX,DX,BX,SP,BP,SI,DI PUSHAD(32位):进栈次序为:EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI

POPA/POPAD 所有寄存器出栈

POPA(16位):出栈次序为:DI,SI,BP,SP,BX,DX,CX,AX

POPAD(32位):出栈次序为:EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX

XCHG 交换

例:XCHG AX,BX 交换AX与BX中的数据

(2)累加器专用传送指令

(只限于使用累加器)

IN 输入

例:IN AX,28H

MOV DATA_WORD,AX

把端口28的内容经过AX传送到存储单元DATA_WORD中。

OUT 输出

例:OUT 5,AL

从AL寄存器输出一个字节到端口5。

XLAT 换码

(3)地址传送指令

LEA 有效地址送寄存器

LDS 指针送寄存器和DS

LES指针送寄存器和ES

LFS指针送寄存器和FS

LGS指针送寄存器和GS

LSS指针送寄存器和SS

①LEA

LEA REG,SRC

把源操作数的有效地址送到指定的寄存器中

②LDS、LES、LFS、LGS、LSS指针送寄存器和段寄存器指令

LDS REG,SRC

把SRC的偏移地址放到REG中,又把偏移地址(SRC+2)放到DS中

(4)标志寄存器传送指令

LAHF 标志送AH

SAHF AH送标志寄存器

PUSHF/PUSHFD 标志进栈

POPF/POPFD 标志出栈

(5)类型转换指令

CBW字节转换为字

CWD字转换为双字

CDQ双字转换为4字

BSWAP字节交换

以CWD为例,把AX的内容扩展到DX,DX为高位,AX为低位。如果AX最高有效位=1,(DX)=0FFFFH;如果AX的最高有效位=0,(DX)=0。

CBW为AL扩展至AH,形成AX

CDQ为EAX扩展至EDX,形成EDX:EAX

II.算术指令

(1)加法指令

ADD 加法

例:ADD DST,SRC

把DST与SRC的和放入DST中

ADC带进位加法

例:ADC DST,SRC

把DST、SRC与进位标志CF的和放入DST中

INC加1

例:INC OPR

OPR加一

XADD交换并相加

例:XADD DST,SRC

首先把DST与SRC交换,然后把两数之和放入DST中。

(2)减法指令

SUB减法

例:SUB DST,SRC

把DST与SRC的差放入DST中

SBB带借位减法

例:SBB DST,SRC

把DST、SRC以及CF的差放入DST中

DEC减1

例:DEC OPR

OPR减一

NEG求补

例:NEG OPR

把OPR按位操作求反以后加一,一般用于求相反数。

CMP比较

与SUB、SBB一样都是减法操作,不同的是CMP并不保留减法结果,只是改变标志位。CMPXCHG比较并交换

CMPXCHG8B比较并交换8字节

(3)乘法指令

MUL无符号数乘法

IMUL有符号数乘法

乘法指令的目的操作数必须是累加器。

两个8位数相乘,结果放在AX中。

两个16位数相乘,高位放在DX中,低位放在AX中。

(4)除法指令

DIV无符号数除法

IDIV有符号数除法

除法指令与乘法指令的寻址方式相同

字节运算时目的操作数在AX中,结果的商放在AL中 ,余数放在AH中

字运算时目的操作数在DX高位字和AX低位字中,结果的商放在AX中 ,余数放在DX中III.逻辑指令

(1)逻辑运算指令

AND逻辑与

相关文档
最新文档