自己整理的指令Word下载.docx

上传人:b****2 文档编号:14792327 上传时间:2022-10-24 格式:DOCX 页数:12 大小:22.63KB
下载 相关 举报
自己整理的指令Word下载.docx_第1页
第1页 / 共12页
自己整理的指令Word下载.docx_第2页
第2页 / 共12页
自己整理的指令Word下载.docx_第3页
第3页 / 共12页
自己整理的指令Word下载.docx_第4页
第4页 / 共12页
自己整理的指令Word下载.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

自己整理的指令Word下载.docx

《自己整理的指令Word下载.docx》由会员分享,可在线阅读,更多相关《自己整理的指令Word下载.docx(12页珍藏版)》请在冰豆网上搜索。

自己整理的指令Word下载.docx

堆栈的存取在16位指令中必须以字为单位(不允许字节堆栈),在32位指令中必须以双字为单位。

8086不允许PUSH指令使用立即数寻址方式,286及后继机型允许立即数进栈。

PUSHA/PUSHAD(pushallregisters)所有寄存器进栈//不影响标志位

PUSHA:

进栈次序:

AX,CX,DX,BX,指令执行前的SP,BP,SI,DI.指令执行后(sp)←(SP)-16仍指向栈顶

PUSHAD:

32位,进栈次序同PUSHA

POPA/POPAD(popallregisters)所有寄存器出栈//不影响标志位

POPA(16位)出栈次序:

DI,SI,BP,SP,BX,DX,CX,AX.指令执行后(sp)←(SP)+16仍指向栈顶

POPAD:

32位,进栈次序同POPA.

XCHG(exchange)交换//不影响标志

执行操作(OPR1)←→(OPR2)这两个操作数必有一个在寄存器中,不允许使用段寄存器。

该指令可用于除立即数外的任何寻址方式。

2累加器专用传送指令

IN(input)输入//不影响标志位

OUT(output)输出//不影响标志位

这两个指令只限于累加器EAX,AX,AL。

IN指令完成从I/O到CPU的信息传送,而OUT指令完成从CPU到I/O信息传送。

CPU只能用累加器接受或发送信息。

XLAT(translate)换码//不影响标志位

在使用这条指令前应先建立一个字节表格,其首地址提前存入BX/EBX,需要转换代码应该是相对于表格首地址的位移量也提前存放在AL中,表格内容则是所要换取的代码,指令执行完后就可在AL中得到转换后的代码。

32位:

(AL)←((EBX)+(AL)).

3地址传送指令

LEA(loadeffectiveaddresss)有效地址送寄存器//不影响标志位

目的操作数:

可用于16位或32位寄存器,但不能使用段寄存器。

源操作数:

除立即数和寄存器外的任一种存储器寻址方式。

注意1:

LEABX,[BX+SI+0F62H]这里BX寄存器得到的是有效地址而不是该存储单元内容。

如果是MOVBX,[BX+SI+0F62H],则BX中得到是偏移地址为ⅹⅹⅹ那个单元内容而不是其偏移地址。

注意2:

比较  LEABX,LIST和MOVBX,OFFSETLIST。

这两条指令功能上相同,且MOV指令速度快,但OFFSET只能与简单的符号地址相连,而不能和诸如LIST[SI]或[SI]等复杂操作数相连。

LDS(loadDSwithpointer)指针送寄存器和DS//不影响标志位

LES(loadESwithpointer)指针送寄存器和ES//不影响标志位

LFS(loadFSwithpointer)指针送寄存器和FS//不影响标志位

LGS(loadGSwithpointer)指针送寄存器和GS//不影响标志位

LSS(loadSSwithpointer)指针送寄存器和SS//不影响标志位

该组指令的源操作只能用存储器寻址方式。

目的寄存器不允许使用段寄存器。

4标志寄存器传送指令

LAHF(loadAHwithflags)标志送AH//不影响标志位

执行操作:

(AH)←(FLAGS低字节)

SAHF(storeAHintoflags)AH送标志寄存器//由装入值来确定标志位值

(FLAGS低字节)←(AH)

PUSHF/PUSHFD标志进栈//由装入值来确定标志位值

执行操作:

PUSHF   (SP)←(SP)-2 ((SP)+1),(SP))←(FLAGS)

PUSHFD    (ESP)←(ESP)-4     ((ESP+3),(ESP+2),(ESP+1),(ESP))←(EFLAGSAND  OFCFFFFH)(清VM和RF位)

POPF/POPFD(poptheflagsoreflags)标志出栈//由装入值来确定标志位值

POPF(FLAGS)←((SP)+1),(SP))(SP)←(SP)+2

POPFD(EFLAGS)←((ESP)+3,(ESP+2),(ESP+1),(ESP))(ESP)←(ESP)+4

POPFD指令不影响VM,RF,IOPL,VIF和VIP的值。

5 类型转换指令

CBW(convertbytetoword)    字节转换为字//不影响标志位

AL的内容扩展到AH,形成AX中的字。

即如果(AL)的最高有效位为0,则(AH)=0;

如果为1(AH)=OFFH

CWD/CWDE(convertwordtodoubleword)     字转换为双字//不影响标志位

AX的内容扩展到DX,形成DX:

AX的双字。

即若(AX)的最高有效位为0,(DX)=0;

若为1,(DX)=0FFFFH

CDQ(convertdoubletoquad)           双字转换为4字//不影响标志位

EAX的内容扩展到EDX,形成EDX:

EAX中的4字。

BSWAP(byteswap)               字节交换//不影响标志位

BSWAPEAX。

字节次序变反,具体为1,4字节互换,2,3字节互换。

该指令只能用于486及其后继机型。

算术指令

1 加法指令

ADD(add) 加法//影响条件标志位

ADC(addwithcarry)         带进位加法//影响条件标志位

注:

ADC这条指令里,其中CF为进位位的值。

INC(increment)           加1//影响条件标志位(除了CF标志)

(上3条)可做字或字节运算。

OF位可以用来表示带符号数溢出,CF位则可以用来表示无符号数的溢出。

XADD(exchangeandadd)       交换并相加//影响条件标志位

该指令源操作数只能用寄存器寻址方式,目的操作数可用寄存器或任一种存储器寻址方式。

TEMP←(SRC)+(DST)(SRC)←(DST)(DST)←TEMP

2 减法指令

SUB(subtract)减法//影响条件标志位

SBB(subtractwithborrow)  带借位减法//影响条件标志位

(DST)←(DST)-(SRC)-CF

DEC(decrement)   减1//影响条件标志位(除了CF标志)

NEG(negate)求补//影响条件标志位

(OPR)←-(OPR)亦即把操作数按位求反后末位加1,因而执行可表示为(OPR)←0FFFFH-(OPR)+1

只有当操作数为0时,求补运算结果使CF=0,其他情况均为1。

CMP(compare) 比较//影响条件标志位

(OPR1)-(OPR2),不保存结果,只是根据结果设置条件标志位。

其后往往跟着条件转移指令。

CMPXCHG(compareandexchange)比较并交换//影响条件标志位

该指令只能用于486及其后继机型。

SRC只能用8,16,或32位寄存器。

DST则可用寄存器或任何一种存储器寻址方式。

累加器和DST比较。

CMPXCHG8B(compareandexchange8byte)比较并交换8字节//影响ZF标志位

该指令只能用于Pentium及其后继机型。

源操作数存放于EDX,EAX中64位字,目的操作数可用存储器寻址方式确定一个64位字。

执行操作EDX,EAX和DST相比较。

条件码。

OF标志位同加法指令,这里若两个数符号相反而结果的符号与减数相同,则OF=1;

除上述情况外OF=0。

OF=1说明带符号数的减法溢出,结果错误。

减法的CF值反映无符号运算中的借位情况,因此当作无符号数运算时,若减数&

gt;

被减数,此时有借位,则CF=1;

否则CF=0。

即有进位时CF=0,无进位时CF=1。

另外注意8086中处理双字的方法(也适用于386及其后继机型中对4字的处理)。

3 乘法指令

MUL(unsignedmultiple)无符号数乘法//对除CF和OF以外的条件码位无定义

IMUL(signedmultiple)带符号数乘法//对除CF和OF以外的条件码位无定义

  字节操作数:

(AX)←(AL)*(SRC),字操作数和双字操作数操作同字节操作数。

目的操作数必须是累加器(累加器为隐含),字运算为AX,字节运算为AL。

两个8位数相乘得到16位数存放在AX中,两个16位数相乘得到32位数存放在DX,AX中,其中DX存放高位字,AX存放低位字。

386以后可做双字运算。

对于80286及其后继机型,IMUL除上述单操作数指令(累加器为隐含),还有双操作数和三操作数。

如:

IMUL    REG,SRC            IMUL REG,SRC,IMM

IMUL  REG,SRC  执行操作:

 

字操作数:

(REG16)←(REG16)*(SRC)   双字操作数:

(REG32)←(REG32)*(SRC)

其中目的操作数必须是16位或32位寄存器;

源操作数可用任一种寻址方式取得和目的操作数长度相同

的数;

但如源操作数为立即数时,除相应地用16位或32位立即数外,指令中也可指定8位立即数,在运算时机器会自动把该数符号扩展成与目的操作数长度相同的数。

IMUL  REG,SRC,IMM  执行操作:

(REG16)←(SRC)*IMM   双字操作数:

(REG32)←(SRC)*IMM

目的和源操作数同上,IMM表示立即数,可以为8,16,32,运算时必须和目的操作数长度一致。

对于MUL指令,如果乘积的高一半为0,即字节操作的(AH)或字操作的(DX)或双字操作的(EDX)为0,则CF和OF均为0;

否则CF和OF均为1。

对于IMUL指令,如果乘积的高一半是低一半的符号扩展,则CF和OF均为0,否则就为1。

机器规定:

16位操作数相乘得到的乘积在16位之内或32位操作数相乘得到的乘积在32位之内时,OF和CF位置0,否则置1,这时的OF位

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

当前位置:首页 > 外语学习 > 韩语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1