首页
社区
课程
招聘
[旧帖] [推荐]80x86汇编指令集 整理归纳 0.00雪花
发表于: 2011-11-7 01:33 1338

[旧帖] [推荐]80x86汇编指令集 整理归纳 0.00雪花

2011-11-7 01:33
1338
在CCG论坛看到XOOJO写的这篇汇编指令集,觉得归纳总结得很好,很适合新手学习复习。特转到这里供新手们学习。
原文链接:http://www.ccgcn.com/bbs/thread-753-1-1.html
---------------------------------------------------------------------------

80x86汇编指令集
80x86汇编语言基础。

标志位 在这一帖中有介绍:
http://www.ccgcn.com/bbs/viewthread.php?tid=752

80x86汇编指令可分为以下几类:

一、数据传输指令
它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据。又可分为:
1. 通用数据传送指令.
2. 输入输出端口传送指令.
3. 目的地址传送指令.
4. 标志传送指令.

二、算术运算指令
它们执行运算。可分为:
1. 加法、减法、乘法、除法。
2. 其它配合运算的指令。

三、逻辑指令
1. 逻辑运算指令。
2. 移位指令。

四、串指令

五、程序转移指令
可分为:
1. 无条件转移指令
2. 条件转移指令
3. 循环控制指令
4. 子程序调用返回指令
5. 中断指令
6. 处理器控制指令

-----------------------------------------------------

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 33
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
一、数据传送指令
1. 通用数据传送指令
MOV   Move 传送    8086/8088

格式: MOV  DST,SRC
执行操作:(DST)<-(SRC)
即将SRC中的数值复制到DST中。
注意:
1、DST不可以是立即数也不可以是CS(代码段寄存器)。
2、不允许在两个存储单元中直接传送数据。
3、不允许直接在两个段寄存器之间传送数据。
4、MOV不影响标志位。
---------------------------------------------------------

PUSH  Push data onto stack    8086/8088

格式: PUSH  SRC
执行操作:(SP)<-(SP)-2     ((SP)+1,(SP))<-(SRC)
即将SRC中的数值压到堆栈栈顶。
PUSH只能作字操作。
PUSH不影响标志位。
--------------------------------------------------------

POP   Pop data from stack    8086/8088

格式: POP DST
执行操作:(DST)<-((SP)+1,(SP))   (SP)<-(SP)+2
将堆栈栈顶的数值弹出到DST中。
POP只能作字操作。
并且DST不能是立即数寻址方式,也不能是CS。
POP不影响标志位。
--------------------------------------------------------

XCHG  Exchange data    8086/8088

格式: XCHG  OPR1,OPR2
执行操作:(OPR1)<-->(OPR2)
交换OPR1,OPR2中的值。
允许字或字节操作.不影响标志位.
可以在寄存器之间,寄存器和存储器之间交换数据.不允许使用段寄存器.
2011-11-7 01:35
0
雪    币: 33
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
2. 输入输出端口传送指令.

IN Input from port  8086/8088
长格式为:
IN  AL,PORT(字节)
IN  AX,PORT(字)
执行操作:(AL)<-(PORT)(字节)  (AX)<-(PORT+1,PORT)(字) 端口号PORT只能<256.

短格式为:
IN  AL,DX(字节)
IN  AX,DX(字)
执行操作:(AL)<-((DX))(字节)  (AX)<-((DX)+1,(DX))(字)  (DX)就是端口号.

不影响标志位.
-------------------------------------------------

OUT Output to port 8086/8088
引用:
长格式为:
OUT PORT,AL(字节)
OUT PORT,AX(字)
执行操作:(AL)->(PORT)(字节)  (AX)->(PORT+1,PORT)(字) 端口号PORT只能<256.

短格式为:
OUT DX,AL(字节)
OUT DX,AX(字)
执行操作:(AL)->((DX))(字节)  (AX)->((DX)+1,(DX))(字) (DX)就是端口号.

不影响标志位.
--------------------------------------------------------------

XLAT Table look-up translation  8086/8088
引用:
格式为:
XLAT OPR
XLAT
执行操作:(AL)<-((BX)+(AL))(字节)

不影响标志位.
2011-11-7 01:48
0
雪    币: 33
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
3. 目的地址传送指令.
LEA Load Effective Address   8086/8088

格式为:LEA  REG,SRC
执行的操作为:(REG)<-SRC
指令把SRC的有效地址送到寄存器REG中。
REG不能是段寄存器
SRC不能是立即数方式和寄存器方式寻址。
不影响标志位。
------------------------------------------------------

LDS Load pointer using DS   8086/8088

格式为:LDS  REG,SRC
执行的操作为:(REG)<-(SRC) (DS)<-(SRC+2)  
指令把SRC指定的4个相继字节送到指定的寄存器REG及DS寄存器中。
REG不能是段寄存器
SRC不能是立即数方式和寄存器方式寻址。
不影响标志位。
---------------------------------------------------------------

LES Load ES with pointer   8086/8088

格式为:LES  REG,SRC
执行的操作为:(REG)<-(SRC) (ES)<-(SRC+2)  
指令把SRC指定的4个相继字节送到指定的寄存器REG及ES寄存器中。
REG不能是段寄存器
SRC不能是立即数方式和寄存器方式寻址。
不影响标志位。
2011-11-7 01:52
0
雪    币: 33
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
4. 标志传送指令.
LAHF Load flags into AH register   8086/8088

格式:LAHF
执行的操作:(AH)<-(PSW的低字节) PSW标志的低字节送AH.
----------------------------------------------------------------

SAHF Store AH into flags   8086/8088

格式:SAHF
执行的操作:(AH)->(PSW的低字节) AH中的值送到PSW标志的低字节.
是给标志赋值的操作.
-----------------------------------------------------------------

PUSHF Push flags onto stack   8086/8088

格式:PUSHF
执行的操作:(SP)<-(SP)-2 ((SP)+1,(SP))<-(PSW)    PSW标志进栈.
-------------------------------------------------------------------

POPF Pop data into flags register   8086/8088

格式:POPF
执行的操作:((SP)+1,(SP))->(PSW)  (SP)<-(SP)+2 AH中的值送到PSW标志的低字节.
是给标志赋值的操作.
2011-11-7 01:55
0
雪    币: 33
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
未完,完整版请看原文链接。没时间整理啦。
2011-11-7 02:00
0
游客
登录 | 注册 方可回帖
返回
//