IBM-PC汇编语言期末总复习资料大全
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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逻辑与