8088汇编速查资料文档格式.docx

上传人:b****1 文档编号:1478197 上传时间:2023-04-30 格式:DOCX 页数:20 大小:22.98KB
下载 相关 举报
8088汇编速查资料文档格式.docx_第1页
第1页 / 共20页
8088汇编速查资料文档格式.docx_第2页
第2页 / 共20页
8088汇编速查资料文档格式.docx_第3页
第3页 / 共20页
8088汇编速查资料文档格式.docx_第4页
第4页 / 共20页
8088汇编速查资料文档格式.docx_第5页
第5页 / 共20页
8088汇编速查资料文档格式.docx_第6页
第6页 / 共20页
8088汇编速查资料文档格式.docx_第7页
第7页 / 共20页
8088汇编速查资料文档格式.docx_第8页
第8页 / 共20页
8088汇编速查资料文档格式.docx_第9页
第9页 / 共20页
8088汇编速查资料文档格式.docx_第10页
第10页 / 共20页
8088汇编速查资料文档格式.docx_第11页
第11页 / 共20页
8088汇编速查资料文档格式.docx_第12页
第12页 / 共20页
8088汇编速查资料文档格式.docx_第13页
第13页 / 共20页
8088汇编速查资料文档格式.docx_第14页
第14页 / 共20页
8088汇编速查资料文档格式.docx_第15页
第15页 / 共20页
8088汇编速查资料文档格式.docx_第16页
第16页 / 共20页
8088汇编速查资料文档格式.docx_第17页
第17页 / 共20页
8088汇编速查资料文档格式.docx_第18页
第18页 / 共20页
8088汇编速查资料文档格式.docx_第19页
第19页 / 共20页
8088汇编速查资料文档格式.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

8088汇编速查资料文档格式.docx

《8088汇编速查资料文档格式.docx》由会员分享,可在线阅读,更多相关《8088汇编速查资料文档格式.docx(20页珍藏版)》请在冰点文库上搜索。

8088汇编速查资料文档格式.docx

PUSHD32位标志入栈.

POPD32位标志出栈.

二、算术运算指令

  ADD加法.

ADC带进位加法.

INC加1.

AAA加法的ASCII码调整.

DAA加法的十进制调整.

SUB减法.

SBB带借位减法.

DEC减1.

NEC求反(以0减之).

CMP比较.(两操作数作减法,仅修改标志位,不回送结果).

AAS减法的ASCII码调整.

DAS减法的十进制调整.

MUL无符号乘法.

IMUL整数乘法.

以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算),

AAM乘法的ASCII码调整.

DIV无符号除法.

IDIV整数除法.

以上两条,结果回送:

商回送AL,余数回送AH,(字节运算);

或商回送AX,余数回送DX,(字运算).

AAD除法的ASCII码调整.

CBW字节转换为字.(把AL中字节的符号扩展到AH中去)

CWD字转换为双字.(把AX中的字的符号扩展到DX中去)

CWDE字转换为双字.(把AX中的字符号扩展到EAX中去)

CDQ双字扩展.(把EAX中的字的符号扩展到EDX中去)

三、逻辑运算指令

  AND与运算.

OR或运算.

XOR异或运算.

NOT取反.

TEST测试.(两操作数作与运算,仅修改标志位,不回送结果).

SHL逻辑左移.

SAL算术左移.(=SHL)

SHR逻辑右移.

SAR算术右移.(=SHR)

ROL循环左移.

ROR循环右移.

RCL通过进位的循环左移.

RCR通过进位的循环右移.

以上八种移位指令,其移位次数可达255次.

移位一次时,可直接用操作码.如SHLAX,1.

移位>

1次时,则由寄存器CL给出移位次数.

如MOVCL,04

SHLAX,CL

四、串指令

 DS:

SI源串段寄存器:

源串变址.

ES:

DI目标串段寄存器:

目标串变址.

CX重复次数计数器.

AL/AX扫描值.

D标志0表示重复操作中SI和DI应自动增量;

1表示应自动减量.

Z标志用来控制扫描或比较操作的结束.

MOVS串传送.

(MOVSB传送字符.MOVSW传送字.MOVSD传送双字.)

CMPS串比较.

(CMPSB比较字符.CMPSW比较字.)

SCAS串扫描.

把AL或AX的内容与目标串作比较,比较结果反映在标志位.

LODS装入串.

把源串中的元素(字或字节)逐一装入AL或AX中.

(LODSB传送字符.LODSW传送字.LODSD传送双字.)

STOS保存串.

是LODS的逆过程.

REP当CX/ECX<

>

0时重复.

REPE/REPZ当ZF=1或比较结果相等,且CX/ECX<

REPNE/REPNZ当ZF=0或比较结果不相等,且CX/ECX<

REPC当CF=1且CX/ECX<

REPNC当CF=0且CX/ECX<

五、程序转移指令

 1>

无条件转移指令(长转移)

JMP无条件转移指令

CALL过程调用

RET/RETF过程返回.

2>

条件转移指令(短转移,-128到+127的距离内)

(当且仅当(SFXOROF)=1时,OP1<

OP2)

JA/JNBE不小于或不等于时转移.

JAE/JNB大于或等于转移.

JB/JNAE小于转移.

JBE/JNA小于或等于转移.

以上四条,测试无符号整数运算的结果(标志C和Z).

JG/JNLE大于转移.

JGE/JNL大于或等于转移.

JL/JNGE小于转移.

JLE/JNG小于或等于转移.

以上四条,测试带符号整数运算的结果(标志S,O和Z).

JE/JZ等于转移.

JNE/JNZ不等于时转移.

JC有进位时转移.

JNC无进位时转移.

JNO不溢出时转移.

JNP/JPO奇偶性为奇数时转移.

JNS符号位为"

0"

时转移.

JO溢出转移.

JP/JPE奇偶性为偶数时转移.

JS符号位为"

1"

3>

循环控制指令(短转移)

LOOPCX不为零时循环.

LOOPE/LOOPZCX不为零且标志Z=1时循环.

LOOPNE/LOOPNZCX不为零且标志Z=0时循环.

JCXZCX为零时转移.

JECXZECX为零时转移.

4>

中断指令

INT中断指令

INTO溢出中断

IRET中断返回

5>

处理器控制指令

HLT处理器暂停,直到出现中断或复位信号才继续.

WAIT当芯片引线TEST为高电平时使CPU进入等待状态.

ESC转换到外处理器.

LOCK封锁总线.

NOP空操作.

STC置进位标志位.

CLC清进位标志位.

CMC进位标志取反.

STD置方向标志位.

CLD清方向标志位.

STI置中断允许位.

CLI清中断允许位.

六、伪指令

  DW定义字(2字节).

PROC定义过程.

ENDP过程结束.

SEGMENT定义段.

ASSUME建立段寄存器寻址.

ENDS段结束.

END程序结束.

8088汇编跳转

一、状态寄存器

PSW(ProgramFlag)程序状态字寄存器,是一个16位寄存器,由条件码标志(flag)和控制标志构成,如下所示:

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

 

OF

DF

IF

TF

SF

ZF

AF

PF

CF

条件码:

①OF(OverflowFlag)溢出标志。

溢出时为1,否则置0。

②SF(SignFlag)符号标志。

结果为负时置1,否则置0.

③ZF(ZeroFlag)零标志,运算结果为0时ZF位置1,否则置0.

④CF(CarryFlag)进位标志,进位时置1,否则置0.

⑤AF(AuxiliarycarryFlag)辅助进位标志,记录运算时第3位(半个字节)产生的进位置。

有进位时1,否则置0.

⑥PF(ParityFlag)奇偶标志。

结果操作数中1的个数为偶数时置1,否则置0.

控制标志位:

⑦DF(DirectionFlag)方向标志,在串处理指令中控制信息的方向。

⑧IF(InterruptFlag)中断标志。

⑨TF(TrapFlag)陷井标志。

二、直接标志转移(8位寻址)

指令格式

机器码

测试条件

如...则转移

JC

72

C=1

有进位

JNS

79

S=0

正号

JNC

73

C=0

无进位

JO

70

O=1

有溢出

JZ/JE

74

Z=1

零/等于

JNO

71

O=0

无溢出

JNZ/JNE

75

Z=0

不为零/不等于

JP/JPE

7A

P=1

奇偶位为偶

JS

78

S=1

负号

JNP/IPO

7B

P=0

奇偶位为奇

三、间接标志转移(8位寻址)

测试格式

JA/JNBE(比较无符号数)

77

C或Z=0

 高于/不低于或等于

JAE/JNB(比较无符号数)

= 高于或等于/不低于

JB/JNAE(比较无符号数)

<

 低于/不高于或等于

JBE/JNA(比较无符号数)

76

C或Z=1

= 低于或等于/不高于

JG/JNLE(比较带符号数)

7F

(S异或O)或Z=0

 大于/不小于或等于

JGE/JNL(比较带符号数)

7D

S异或O=0

= 大于或等于/不小于

JL/JNGE(比较带符号数)

7C

S异或O=1

 小于/不大于或等于

JLE/JNG(比较带符号数)

7E

(S异或O)或Z=1

= 小于或等于/不大于

四、无条件转移指令(fisheep译fisheep@)

操作码

伪码指令

含义

EB cb

JMPrel8

相对短跳转(8位),使rel8处的代码位下一条指令

E9 cw

JMPrel16

相对跳转(16位),使rel16处的代码位下一条指令

FF /4

JMPr/m16

绝对跳转(16位),下一指令地址在r/m16中给出

JMPr/m32

绝对跳转(32位),下一指令地址在r/m32中给出

EA cb

JMPptr16:

16

远距离绝对跳转,下一指令地址在操作数中

32

FF /5

JMPm16:

远距离绝对跳转,下一指令地址在内存m16:

16中

FF /5

32中

五、16位/32位寻址方式(fisheep译fisheep@)

操作码

跳转含义

跳转类型

跳转的条件(标志位)

0F87 cw/cd

JArel16/32

大于

near

(CF=0andZF=0)

0F83 cw/cd

JAErel16/32

大于等于

(CF=0)

0F82 cw/cd

JBrel16/32

小于

(CF=1)

0F86 cw/cd

JBErel16/32

小于等于

(CF=1orZF=1)

JCrel16/32

进位

0F84 cw/cd

JErel16/32

等于

(ZF=1)

JZrel16/32

为0

0F8F cw/cd

JGrel16/32

(ZF=0andSF=OF)

0F8D cw/cd

JGErel16/32

(SF=OF)

0F8C cw/cd

JLrel16/32

小于

(SF<

OF)

0F8E cw/cd

JLErel16/32

(ZF=1orSF<

0F86 cw/cd

JNArel16/32

不大于

JNAErel16/32

不大于等于

0F83 cw/cd

JNBrel16/32

不小于

0F87 cw/cd

JNBErel16/32

不小于等于

JNCrel16/32

不进位

0F85 cw/cd

JNErel16/32

不等于

(ZF=0)

0F8E cw/cd

JNGrel16/32

JNGErel16/32

JNLrel16/32

JNLErel16/32

0F81 cw/cd

JNOrel16/32

未溢出

(OF=0)

0F8B cw/cd

JNPrel16/32

不是偶数

(PF=0)

0F89 cw/cd

JNSrel16/32

非负数

(SF=0)

0F85 cw/cd

JNZrel16/32

非零(不等于)

0F80 cw/cd

JOrel16/32

溢出

(OF=1)

0F8A cw/cd

JPrel16/32

偶数

(PF=1)

0F8A cw/cd

JPErel16/32

JPOrel16/32

奇数

0F88 cw/cd

JSrel16/32

负数

(SF=1)

JZrel16/32

为零(等于)

(ZF=1)

注:

一些指令操作数的含义说明:

 rel8 

 

表示8位相对地址

 rel16 

表示16位相对地址

 rel16/32 

表示16或32位相对地址

 r/m16 

表示16位寄存器

 r/m32 

表示32位寄存器

浮点指令

  对下面的指令先做一些说明:

st(i):

代表浮点寄存器,所说的出栈、入栈操作都是对st(i)的影响

src,dst,dest,op等都是指指令的操作数,src表示源操作数,dst/dest表示目的操作数

mem8,mem16,mem32,mem64,mem80等表示是内存操作数,后面的数值表示该操作数的内存位数(8位为一字节)

x<

-y表示将y的值放入x,例st(0)<

-st(0)-st

(1)表示将st(0)-st

(1)的值放入浮点寄存器st(0)

1. 

数据传递和对常量的操作指令

指令含义

执行的操作

FLDsrc

装入实数到st(0)

st(0)<

-src(mem32/mem64/mem80)

FILDsrc

装入整数到st(0)

-src(mem16/mem32/mem64)

FBLDsrc

装入BCD数到st(0)

-src(mem80)

 

FLDZ

将0.0装入st(0)

-0.0

FLD1

将1.0装入st(0)

-1.0

FLDPI

将pi装入st(0)

-?

(ie,pi)

FLDL2T

将log2(10)装入st(0)

-log2(10)

FLDL2E

将log2(e)装入st(0)

-log2(e)

FLDLG2

将log10

(2)装入st(0)

-log10

(2)

FLDLN2

将loge

(2)装入st(0)

-loge

(2)

FSTdest

保存实数st(0)到dest

dest<

-st(0)(mem32/mem64)

FSTPdest

-st(0)(mem32/mem64/mem80);

然后再执行一次出栈操作

FISTdest

将st(0)以整数保存到dest

-st(0)(mem32/mem64)

FISTPdest

-st(0)(mem16/mem32/mem64);

FBSTdest

将st(0)以BCD保存到dest

-st(0)(mem80)

FBSTPdest

dest<

-st(0)(mem80);

2.比较指令

FCOM

实数比较

将标志位设置为st(0)-st

(1)的结果标志位

FCOMop

将标志位设置为st(0)-op(mem32/mem64)的结果标志位

FICOMop

和整数比较

将Flags值设置为st(0)-op的结果op(mem16/mem32)

FICOMPop

将st(0)和op比较op(mem16/mem32)后;

再执行一次出栈操作

FTST

零检测

将st(0)和0.0比较

FUCOMst(i)

比较st(0)和st(i)[486]

FUCOMPst(i)

比较st(0)和st(i),并且执行一次出栈操作

FUCOMPPst(i)

比较st(0)和st(i),并且执行两次出栈操作

FXAM

Examine:

Eyeballst(0)(setconditioncodes)

3.运算指令

加法

FADD

加实数

-st(0)+st

(1)

FADDsrc

-st(0)+src(mem32/mem64)

FADDst(i),st

st(i)<

-st(i)+st(0)

FADDPst(i),st

-st(i)+st(0);

然后执行一次出栈操作

FIADDsrc

加上一个整数

-st(0)+src(mem16/mem32)

减法

FSUB

减去一个实数

-st(0)-st

(1)

FSUBsrc

-st(0)-src(reg/mem)

FSUBst(i),st

-st(i)-st(0)

FSUBPst(i),st

-st(i)-st(0),然后执行一次出栈操作

FSUBRst(i),st

用一个实数来减

-st(i)-st(0)

FSUBRPst(i),st

-st(i)-st(0),然后执行一次出栈操作

FISUBsrc

减去一个整数

-st(0)-src(mem16/mem32)

FISUBRsrc

用一个整数来减

-src-st(0)(mem16/mem32)

乘法

FMUL

乘上一个实数

-st(0)*st

(1)

FMULst(i)

-st(0)*st(i)

FMULst(i),st

FMULPst(i),st

-st(0)*st(i),然后执行一次出栈操作

FIMULsrc

乘上一个整数

-st(0)*src(m

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2