汇编指令英语解释
- 格式:doc
- 大小:104.00 KB
- 文档页数:14
1 ARM指令英文全称及功能描述V2.0作者:满光明2019年4月9日转载请支持原创,保留此页信息,否则将追究责任前言我在工作前买了一本关于ARM指令的书籍,当时出于方便记忆理解的考量,整理了ARM指令,并且加入了英文的全称。
了解了英文的全称,能够好的帮助记忆和理解。
百度网盘里分享出来的ARM 指令英文全称我看了一下都是我当年整理的版本,但他们把作者的名字去掉了。
几年过去了,ARM技术取得了巨大的进步,ARM以其低功耗、低成本、高性能的优势抢占了移动市场。
相信在不远的未来,ARM会普遍运行在个人电脑和服务器上。
在可穿戴、边缘计算等前沿领域ARM拥有无与伦比的优势。
作为一个技术控,工作以来我一直从事ARM相关的开发工作,计算机领域需要学习的东西太多,但很多基础知识都是相通的。
我也希望能把自己这么多年的技术积累拿出来分享给即将走上硬件开发、底层驱动开发的同仁们本篇仍然以介绍ARM架构以及ARM指令为主,在原来的基础上重新调整了指令顺序,首先介绍ARM 架构不同版本的区别,进而引出基本指令结构,最后详细列出所有指令详表,增强可读性,易于理解。
2一、ARM指令集版本历史计算机完成一定的操作通过指令来实现,不同的指令方式被称为计算机架构,目前计算机主要有两大架构阵营,一是CISC (Complex Instruction Set Computers)复杂指令集架构,另一种是RISC(Reduced Instruction Set Computers)精简指令集架构。
采用CISC架构的代表是Intel和AMD的X86指令集,采用RISC架构的代表是ARM指令集和PowerPC指令集。
ARM架构从诞生到今天从V1版本已经升级到了V8版本,各版本代表的分支型号如下表所示。
从图中可以看出,Cortex-A9 架构的CPU采用的是ARMv7的指令集,目前高性能的64位视频处理,比如Cortex-A72,采用的是ARMv8指令集。
1.通用数据传送指令.MOV----> move MOVSX---->extended move with sign dataMOVZX---->extended move with zero data PUSH---->push POP---->pop PUSHA---->push all POPA---->pop all PUSHAD---->push all dataPOPAD---->pop all data BSWAP---->byte swap XCHG---->exchangeCMPXCHG---->compare and change XADD---->exchange and addXLAT---->translate2.输入输出端口传送指令.IN---->input OUT---->output3.目的地址传送指令.LEA---->load effective address LDS---->load DS LES---->load ESLFS---->load FS LGS---->load GS LSS---->load SS4.标志传送指令.LAHF---->load AH from flag SAHF---->save AH to flag PUSHF---->push flag POPF---->pop flag PUSHD---->push dflag POPD---->pop dflag二、算术运算指令ADD---->add ADC---->add with carry INC---->increase 1AAA---->ascii add with adjust DAA---->decimal add with adjust SUB---->substract SBB---->substract with borrow DEC---->decrease 1 NEC---->negativeCMP---->compare AAS---->ascii adjust on substractDAS---->decimal adjust on substract MUL---->multiplicationIMUL---->integer multiplication AAM---->ascii adjust on multiplication DIV---->divide IDIV---->integer divide AAD---->ascii adjust on divide CBW---->change byte to word CWD---->change word to double word CWDE---->change word to double word with sign to EAXCDQ---->change double word to quadrate word三、逻辑运算指令AND---->and OR---->or XOR---->xor NOT---->not TEST---->test SHL---->shift left SAL---->arithmatic shift left SHR---->shift right SAR---->arithmatic shift right ROL---->rotate left ROR---->rotate right RCL---->rotate left with carry RCR---->rotate right with carry四、串指令MOVS---->move string CMPS---->compare string SCAS---->scan string LODS---->load string STOS---->store string REP---->repeatREPE---->repeat when equal REPZ---->repeat when zero flagREPNE---->repeat when not equal REPNZ---->repeat when zero flag REPC---->repeat when carry flag REPNC---->repeat when not carry flag五、程序转移指令1>无条件转移指令(长转移JMP---->jump CALL---->call RET---->return RETF---->return far2>条件转移指令(短转移,-128到+127的距离内JAE---->jump when above or equal JNB---->jump when not belowJB---->jump when below JNAE---->jump when not above or equalJBE---->jump when below or equal JNA---->jump when not aboveJG---->jump when greater JNLE---->jump when not less or equalJGE---->jump when greater or equal JNL---->jump when not lessJL---->jump when less JNGE---->jump when not greater or equalJLE---->jump when less or equal JNG---->jump when not greaterJE---->jump when equal JZ---->jump when has zero flagJNE---->jump when not equal JNZ---->jump when not has zero flagJC---->jump when has carry flag JNC---->jump when not has carry flagJNO---->jump when not has overflow flag JNP---->jump when not has parity flag JPO---->jump when parity flag is odd JNS---->jump when not has sign flagJO---->jump when has overflow flag JP---->jump when has parity flagJPE---->jump when parity flag is even JS---->jump when has sign flag3>循环控制指令(短转移LOOP---->loop LOOPE---->loop equal LOOPZ---->loop zeroLOOPNE---->loop not equal LOOPNZ---->loop not zeroJCXZ---->jump when CX is zero JECXZ---->jump when ECX is zero4>中断指令INT---->interrupt INTO---->overflow interrupt IRET---->interrupt return5>处理器控制指令HLT---->halt WAIT---->wait ESC---->escape LOCK---->lock NOP---->no operation STC---->set carry CLC---->clear carry CMC---->carry make changeSTD---->set direction CLD---->clear direction STI---->set interruptCLI---->clear interrupt六、伪指令DW---->definw word PROC---->procedure ENDP---->end of procedureSEGMENT---->segment ASSUME---->assume ENDS---->end segmentEND---->end。
汇编tof指令-概述说明以及解释1.引言1.1 概述TOF(Test of Time)指令是一种汇编指令,它的主要作用是测量程序在执行过程中所花费的时间。
通过测量程序执行的时间,我们可以评估程序的效率并进行性能优化。
TOF指令能够实现对程序的时间测量,它可以准确地记录程序在执行过程中经过的时间周期数,并将其保存在一个特定的寄存器中。
TOF指令的使用非常灵活,可以根据具体需求在程序中的任何地方插入TOF指令来实现时间测量。
与其他类型的计时器相比,TOF指令具有精确度高、功能强大的特点。
它可以测量微小的时间差,以及长时间的执行周期。
另外,TOF指令的使用方法也非常简单,只需要在程序中插入相应的指令,然后读取寄存器中的时间数据即可。
TOF指令在许多应用场景中都具有广泛的应用。
例如,在实时操作系统中,TOF指令可以用于调度任务和进程,从而实现对系统的性能监控和优化。
此外,在嵌入式系统中,TOF指令可以用于测量各个模块的执行时间,从而确定系统的响应时间和各个模块的效率。
在工业控制领域,TOF 指令可以用于实现精确的时间控制,保证各个操作在特定的时间点执行。
总之,TOF指令作为一种功能强大的汇编指令,在程序性能评估和优化中起着重要的作用。
它通过测量程序的执行时间来评估其效率,并为程序优化提供数据支持。
同时,TOF指令的简单使用方法和广泛的应用场景使得它成为了许多开发人员不可或缺的工具。
随着技术的不断发展,我们可以期待TOF指令在未来的进一步发展和应用中的更广泛使用。
1.2 文章结构文章结构部分的内容应该包括有关整篇文章的章节和子章节的介绍,以及这些章节和子章节之间的关系和逻辑顺序。
以下是关于文章结构的示例内容:文章结构部分:本文将按照以下章节和子章节的顺序进行组织和阐述。
第一章为引言部分,包括概述、文章结构、目的和总结四个子章节。
在概述部分,将对TOF指令进行简要介绍和概述该指令的相关背景和作用。
在文章结构部分,将明确列出文章的大纲和目录,方便读者查找和理解文章内容的组织安排。
汇编语言各种指令的解释与用法【数据传输指令】一、通用数据传送指令1、传送指令MOV (move)指令的汇编格式:MOV DST,SRC指令的基本功能:(DST)<-(SRC) 将原操作数(字节或字)传送到目的地址。
指令支持的寻址方式:目的操作数和源操作数不能同时用存储器寻址方式,这个限制适用于所有指令。
指令的执行对标志位的影响:不影响标志位。
指令的特殊要求:目的操作数DST和源操作数SRC不允许同时为段寄存器;目的操作数DST不能是CS,也不能用立即数方式。
2、进栈指令PUSH (push onto the stack)出栈指令POP (pop from the stack)指令的汇编格式:PUSH SRC ;POP DST指令的基本功能:PUSH指令在程序中常用来暂存某些数据,而POP指令又可将这些数据恢复。
PUSH SRC (SP)<-(SP)-2 ;(SP)<-(SRC)POP DST (DST)<-((SP));(SP)<-(SP)指令支持的寻址方式:push 和pop指令不能不能使用立即数寻址方式。
指令对标志位的影响:PUSH 和POP指令都不影响标志位。
指令的特殊要求:PUSH 和POP指令只能是字操作,因此,存取字数据后,SP的修改必须是+2 或者-2;POP指令的DST不允许是CS寄存器;3、交换指令XCHG (exchange)指令的汇编格式:XCHG OPR1,OPR2指令的基本功能:(OPR1)<->(OPR2)指令支持的寻址方式:一个操作数必须在寄存器中,另一个操作数可以在寄存器或存储器中。
指令对标志位的影戏:不影响标志位。
指令的特殊要求:不允许使用段寄存器。
二、累加器专用传送指令4、输入指令IN (input)输出指令OUT (output)指令的汇编格式:IN ac,port port<=0FFHIN ac,DX port>0FFHOUT port,ac port<=0FFHOUT DX,ac port>0FFH指令的基本功能:对8086及其后继机型的微处理机,所有I/O端口与CPU之间的通信都由输入输出指令IN和OUT来完成。
汇编语⾔各种指令的解释与⽤法【数据传输指令】⼀、通⽤数据传送指令1、传送指令MOV (move)指令的汇编格式:MOV DST,SRC指令的基本功能:(DST)<-(SRC) 将原操作数(字节或字)传送到⽬的地址。
指令⽀持的寻址⽅式:⽬的操作数和源操作数不能同时⽤存储器寻址⽅式,这个限制适⽤于所有指令。
指令的执⾏对标志位的影响:不影响标志位。
指令的特殊要求:⽬的操作数DST和源操作数SRC不允许同时为段寄存器;⽬的操作数DST不能是CS,也不能⽤⽴即数⽅式。
2、进栈指令 PUSH (push onto the stack)出栈指令 POP (pop from the stack)指令的汇编格式:PUSH SRC ;POP DST指令的基本功能:PUSH指令在程序中常⽤来暂存某些数据,⽽POP指令⼜可将这些数据恢复。
PUSH SRC (SP)<-(SP)-2 ;(SP)<-(SRC)POP DST (DST)<-((SP));(SP)<-(SP)指令⽀持的寻址⽅式:push 和 pop指令不能不能使⽤⽴即数寻址⽅式。
指令对标志位的影响:PUSH 和 POP指令都不影响标志位。
指令的特殊要求:PUSH 和 POP指令只能是字操作,因此,存取字数据后,SP的修改必须是+2 或者-2; POP指令的DST不允许是CS寄存器;3、交换指令 XCHG (exchange)指令的汇编格式:XCHG OPR1,OPR2指令的基本功能:(OPR1) <->(OPR2)指令⽀持的寻址⽅式:⼀个操作数必须在寄存器中,另⼀个操作数可以在寄存器或存储器中。
指令对标志位的影戏:不影响标志位。
指令的特殊要求:不允许使⽤段寄存器。
⼆、累加器专⽤传送指令4、输⼊指令IN (input)输出指令OUT (output)指令的汇编格式:IN ac,port port<=0FFHIN ac,DX port>0FFHOUT port,ac port<=0FFHOUT DX,ac port>0FFH指令的基本功能:对8086及其后继机型的微处理机,所有I/O端⼝与CPU之间的通信都由输⼊输出指令IN和OUT来完成。
汇编语言各种指令解释及用法【数据传输指令】一、通用数据传送指令1、传送指令MOV (move)指令的汇编格式:MOV DST,SRC指令的基本功能:(DST)<-(SRC) 将原操作数(字节或字)传送到目的地址。
指令支持的寻址方式:目的操作数和源操作数不能同时用存储器寻址方式,这个限制适用于所有指令。
指令的执行对标志位的影响:不影响标志位。
指令的特殊要求:目的操作数DST和源操作数SRC不允许同时为段寄存器;目的操作数DST不能是CS,也不能用立即数方式。
2、进栈指令PUSH (push onto the stack)出栈指令 POP (pop from the stack)指令的汇编格式:PUSH SRC ;POP DST指令的基本功能:PUSH指令在程序中常用来暂存某些数据,而POP指令又可将这些数据恢复。
PUSH SRC (SP)<-(SP)-2 ;(SP)<-(SRC)POP DST (DST)<-((SP));(SP)<-(SP)指令支持的寻址方式:push 和pop指令不能不能使用立即数寻址方式。
指令对标志位的影响:PUSH 和 POP指令都不影响标志位。
指令的特殊要求:PUSH 和 POP指令只能是字操作,因此,存取字数据后,SP的修改必须是+2 或者-2;POP指令的DST不允许是CS寄存器;3、交换指令XCHG (exchange)指令的汇编格式:XCHG OPR1,OPR2指令的基本功能:(OPR1)<->(OPR2)指令支持的寻址方式:一个操作数必须在寄存器中,另一个操作数可以在寄存器或存储器中。
指令对标志位的影戏:不影响标志位。
指令的特殊要求:不允许使用段寄存器。
二、累加器专用传送指令4、输入指令IN (input)输出指令 OUT (output)指令的汇编格式:IN ac,port port<=0FFHIN ac,DX port>0FFHOUT port,ac port<=0FFHOUT DX,ac port>0FFH指令的基本功能:对8086及其后继机型的微处理机,所有I/O端口与CPU之间的通信都由输入输出指令IN和OUT来完成。
汇编语言英文指令汇编语言英文指令AH&AL=AX(accumulator):累加寄存器BH&BL=BX(base):基址寄存器CH&CL=CX(count):计数寄存器DH&DL=DX(data):数据寄存器SP(Stack Pointer):堆栈指针寄存器BP(Base Pointer):基址指针寄存器SI(Source Index):源变址寄存器DI(Destination Index):目的变址寄存器IP(Instruction Pointer):指令指针寄存器CS(Code Segm ent)代码段寄存器DS(Data Segm ent):数据段寄存器SS(Stack Segm ent):堆栈段寄存器ES(Extra Segment):附加段寄存器OF overflow flag 溢出标志操作数超出机器能表示的范围表示溢出,溢出时为1.SF sign Flag 符号标志记录运算结果的符号,结果负时为1.ZF zero flag 零标志运算结果等于0时为1,否则为0.CF carry flag 进位标志最高有效位产生进位时为1,否则为0.AF auxiliary carry flag 辅助进位标志运算时,第3位向第4位产生进位时为1,否则为0.PF parity flag 奇偶标志运算结果操作数位为1的个数为偶数个时为1,否则为0.DF direction flag 方向标志用于串处理.DF=1时,每次操作后使SI 和DI减小.DF=0时则增大.IF interrupt enable flag 中断允许标志IF=1时,允许CPU响应可屏蔽中断,否则关闭中断.TF trap flag 陷阱标志用于调试单步操作通用寄存器:AX累加器(Accumulator),BX 基地址寄存器(Base Register),CX 计数寄存器(Count Register) ,DX数据寄存器(Data Register)段寄存器:代码段寄存器CS--code segm ent , 数据段寄存器DS--data segm ent , 堆栈段寄存器SS--stack segm ent ,附加段寄存器ES--extra segm ent 。
1.通用数据传送指令.MOV----> move MOVSX---->extended move with sign dataMOVZX---->extended move with zero data PUSH---->push POP---->pop PUSHA---->push all POPA---->pop all PUSHAD---->push all dataPOPAD---->pop all data BSWAP---->byte swap XCHG---->exchangeCMPXCHG---->compare and change XADD---->exchange and addXLAT---->translate2.输入输出端口传送指令.IN---->input OUT---->output3.目的地址传送指令.LEA---->load effective address LDS---->load DS LES---->load ESLFS---->load FS LGS---->load GS LSS---->load SS4.标志传送指令.LAHF---->load AH from flag SAHF---->save AH to flag PUSHF---->push flag POPF---->pop flag PUSHD---->push dflag POPD---->pop dflag二、算术运算指令ADD---->add ADC---->add with carry INC---->increase 1AAA---->ascii add with adjust DAA---->decimal add with adjust SUB---->substract SBB---->substract with borrow DEC---->decrease 1 NEC---->negativeCMP---->compare AAS---->ascii adjust on substractDAS---->decimal adjust on substract MUL---->multiplicationIMUL---->integer multiplication AAM---->ascii adjust on multiplicationDIV---->divide IDIV---->integer divide AAD---->ascii adjust on divideCBW---->change byte to word CWD---->change word to double wordCWDE---->change word to double word with sign to EAXCDQ---->change double word to quadrate word三、逻辑运算指令AND---->and OR---->or XOR---->xor NOT---->not TEST---->testSHL---->shift left SAL---->arithmatic shift left SHR---->shift rightSAR---->arithmatic shift right ROL---->rotate left ROR---->rotate rightRCL---->rotate left with carry RCR---->rotate right with carry四、串指令MOVS---->move string CMPS---->compare string SCAS---->scan stringLODS---->load string STOS---->store string REP---->repeatREPE---->repeat when equal REPZ---->repeat when zero flagREPNE---->repeat when not equal REPNZ---->repeat when zero flagREPC---->repeat when carry flag REPNC---->repeat when not carry flag五、程序转移指令1>无条件转移指令(长转移)JMP---->jump CALL---->call RET---->return RETF---->return far2>条件转移指令(短转移,-128到+127的距离内)JAE---->jump when above or equal JNB---->jump when not belowJB---->jump when below JNAE---->jump when not above or equalJBE---->jump when below or equal JNA---->jump when not aboveJG---->jump when greater JNLE---->jump when not less or equalJGE---->jump when greater or equal JNL---->jump when not lessJL---->jump when less JNGE---->jump when not greater or equalJLE---->jump when less or equal JNG---->jump when not greaterJE---->jump when equal JZ---->jump when has zero flagJNE---->jump when not equal JNZ---->jump when not has zero flagJC---->jump when has carry flag JNC---->jump when not has carry flagJNO---->jump when not has overflow flag JNP---->jump when not has parity flag JPO---->jump when parity flag is odd JNS---->jump when not has sign flagJO---->jump when has overflow flag JP---->jump when has parity flagJPE---->jump when parity flag is even JS---->jump when has sign flag3>循环控制指令(短转移)LOOP---->loop LOOPE---->loop equal LOOPZ---->loop zeroLOOPNE---->loop not equal LOOPNZ---->loop not zeroJCXZ---->jump when CX is zero JECXZ---->jump when ECX is zero4>中断指令INT---->interrupt INTO---->overflow interrupt IRET---->interrupt return5>处理器控制指令HLT---->halt WAIT---->wait ESC---->escape LOCK---->lock NOP---->no operation STC---->set carry CLC---->clear carry CMC---->carry make changeSTD---->set direction CLD---->clear direction STI---->set interruptCLI---->clear interrupt六、伪指令DW---->definw word PROC---->procedure ENDP---->end of procedureSEGMENT---->segment ASSUME---->assume ENDS---->end segmentEND---->end。
一、通用数据传送指令1、传送指令MOV (move)指令的汇编格式:MOV DST,SRC指令的基本功能:(DST)<-(SRC) 将原操作数(字节或字)传送到目的地址。
指令支持的寻址方式:目的操作数和源操作数不能同时用存储器寻址方式,这个限制适用于所有指令。
指令的执行对标志位的影响:不影响标志位。
指令的特殊要求:目的操作数DST和源操作数SRC不允许同时为段寄存器;目的操作数DST不能是CS,也不能用立即数方式。
2、进栈指令PUSH (push onto the stack)出栈指令POP (pop from the stack)指令的汇编格式:PUSH SRC ;POP DST指令的基本功能:PUSH指令在程序中常用来暂存某些数据,而POP指令又可将这些数据恢复。
PUSH SRC (SP)<-(SP)-2 ;(SP)<-(SRC)POP DST (DST)<-((SP));(SP)<-(SP)指令支持的寻址方式:push 和pop指令不能不能使用立即数寻址方式。
指令对标志位的影响:PUSH 和POP指令都不影响标志位。
指令的特殊要求:PUSH 和POP指令只能是字操作,因此,存取字数据后,SP的修改必须是+2 或者-2;POP指令的DST不允许是CS寄存器;3、交换指令XCHG (exchange)指令的汇编格式:XCHG OPR1,OPR2指令的基本功能:(OPR1)<->(OPR2)指令支持的寻址方式:一个操作数必须在寄存器中,另一个操作数可以在寄存器或存储器中。
指令对标志位的影戏:不影响标志位。
指令的特殊要求:不允许使用段寄存器。
二、累加器专用传送指令4、输入指令IN (input)输出指令OUT (output)指令的汇编格式:IN ac,port port<=0FFHIN ac,DX port>0FFHOUT port,ac port<=0FFHOUT DX,ac port>0FFH指令的基本功能:对8086及其后继机型的微处理机,所有I/O端口与CPU之间的通信都由输入输出指令IN和OUT来完成。
IN指令将信息从I/O输入到CPU,OUT指令将信息从CPU输出到I/O端口,因此,IN和OUT指令都要指出I/O 端口地址。
IN ac,port port<=0FFH (AL)<-(port)传送字节或(AX)<-(port+1,port)传送字IN ac,DX port>0FFH (AL)<-((DX))传送字节或(AX)<-((DX)+1,(DX))传送字OUT port,ac port<=0FFH (port)<-(AL)传送字节或(port+1,port)<-(AX)传送字OUT DX,ac port>0FFH (DX)<-(AL)传送字节或((DX)+1,(DX))<-(AX)传送字指令对标志位的影响:不影响标志位。
指令的特殊要求:只限于在AL或AX与I/O端口之间传送信息。
传送16位信息用AX,传送8位信息用AL,这取决于外设端口的宽度。
5、换码指令XLAT (translate)指令的汇编格式:XLAT opr 或XLAT指令的基本功能:这条指令根据AL寄存器提供的位移量,将BX指使的字节表格中的代码换存在AL中。
(AL)<-((DS)*16+(BX)+(AL))指令对标志位的影响:不影响标志位。
指令的特殊要求:所建字节表格的长度不能超过256字节,因为存放位移量的是8位寄存器AL。
opr为表格的首地址,因为opr所表示的偏移地址已存入BX寄存器,所以opr 在换码指令中可有可无,有则提高程序的可读性。
三、地址传送指令6、有效地址传送器LEA (load effective address)指令的汇编格式:LEA reg,src指令的基本功能:LEA指令把源操作数的有效地址送到指定的寄存器,这个有效地址是由src选定的一种存储器寻址方式确定的。
指令支持的寻址方式:各种存储器寻址方式。
指令对标志位的影响:不影响标志位。
指令的特出要求:指令中reg不能是段寄存器;7、指针送寄存器和DS LDS (load DS with point)指针送寄存器和ES LES (load ES with point)指令的汇编格式:LDS reg,srcLES reg,src指令的基本功能:LDS和LES指令把确定内存单元位置的偏移地址送寄存器,段地址DS或ES。
这个偏移地址和段地址(也称地址指针)是由src指定的两个相继字单元提供的。
LDS reg,src (reg)<-(src) (DS)<-(src+2)LES reg,src (reg)<-(src) (ES)<-(src+2)指令支持的寻址方式:src必须为存储器寻址方式指令对标志位的影响:不影响标志位。
指令的特殊要求:指令中REG不能是段寄存器;四、标志寄存器传送指令8、标志寄存器的低字节送AH LAHF (load AH with FLAGS)指令的汇编格式:LAHF指令的基本功能:(AH)<-(FLAGS)0-7指令对标志位的影响:不影响标志位9、AH送标志寄存器低字节SAHF(store AH into FLAGS)指令的汇编格式:SAHF指令的基本功能:(FLAGS)0-7<-(AH)指令对标志位的影响:由装入值来确定标志位的值。
10、标志进栈PUSHF (push the flags)指令的汇编格式:PUSHF指令的基本功能:(SP)<-(SP)-2 ((SP)+1,(SP))<-(FLAGS)0-15指令对标志位的影响:不影响标志位。
11、标志出栈POPF (pop the FLAGES)指令的汇编格式:POPF指令的基本功能:(FLAGS)0-15<-((SP)+1,(SP)) (SP)<-(SP)+2指令对标志位的影响:由装入值来确定标志位的值。
[算术指令]一、加法指令12、加法指令ADD (addition)指令的汇编格式:add dst,src指令的基本功能:(dst)<-(src)+(dst)指令支持的寻址方式:他们两个操作数不能同时为存储器寻址。
即为除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。
指令对标志位的影响:SF=1 加法结果为负数(符号位为1)SF=0 加法结果为正数(符号位为0)ZF=1 加法结果为零ZF=0 加法结果不为零CF=1 最高有效位向高位有进位CF=0 最高有效位向高位无进位OF=1 两个同符号数相加(正数+正数或负数+负数),结果符号与其相反。
OF=0 两个不同符号数相加,或同符号数相加,结果符号与其相同。
13、带进为加法指令ADC (add with carry)指令的汇编格式:ADD dst,src指令的基本功能:(dst)<-(src)+(dst)+CF指令支持的寻址方式:他们两个操作数不能同时为存储器寻址。
即为除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。
指令对标志位的影响:SF=1 加法结果为负数SF=0 加法结果为正数ZF=1 加法结果为零ZF=0 加法结果不为零CF=1 最高有效位向高位有进位CF=0 最低有效位相高位无进位OF=1 两个同符号数相加,结果符号与其相反,OF=0 两个同符号数相加,或同符号相加,结果符号与其相同14、加1指令INC (increament)指令的汇编格式:INC opr指令的基本功能:(opr)<-(opr)指令支持的寻址方式可以使用除立即数方式外的任何寻址方式指令对标志位的影响:SF=1 加法结果为负数SF=0 加法结果为正数ZF=1 加法结果为零ZF=0 加法结果不为零OF=1 两个同符号数相加,结果符号与其相反,OF=0 两个同符号数相加,或同符号相加,结果符号与其相同。
二、减法指令15、减法指令SUB (subtract)指令的汇编格式:SUB dst,src指令的基本功能:(dst)<-(dst)-(src)指令支持的寻址方式:他们两个操作数不能同时为存储器寻址。
即为除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。
指令对标志位的影响:SF=1 减法结果为负数(符号位为1)SF=0 减法结果为正数(符号位为0)ZF=1 减法结果为零ZF=0 减法结果不为零CF=1 二进制减法运算中最高有效位向高位有借位(被减数小于减数,不够减的情况)CF=0 二进制减法运算中最高有效为向高位无借位(被减数〉=减数,够减的情况)OF=1 两数符号相反(正数-负数,或负数-正数),而结果符号与减数相同。
OF=0 同符号数相减时,或不同符号数相减,其结果符号与减数不同。
16、带借位减法指令SBB (subtract with borrow)指令的汇编格式:SBB dst,src指令的基本功能:(dst)<-(dst)-(src)-CF指令支持的寻址方式:他们两个操作数不能同时为存储器寻址。
即为除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。
指令对标志位的影响:SF=1 减法结果为负数(符号位为1)SF=0 减法结果为正数(符号位为0)ZF=1 减法结果为零ZF=0 减法结果不为零CF=1 二进制减法运算中最高有效位向高位有借位(被减数小于减数,不够减的情况)CF=0 二进制减法运算中最高有效为向高位无借位(被减数〉=减数,够减的情况)OF=1 两数符号相反(正数-负数,或负数-正数),而结果符号与减数相同。
OF=0 同符号数相减时,或不同符号数相减,其结果符号与减数不同。
17、减1指令DEC (decrement)指令的汇编格式:DEC opr指令的基本功能:(opr)<-(opr)-1指令支持的寻址方式:可以使用除立即数方式外的任何寻址方式。
指令对标志位的影响:SF=1 减法结果为负数(符号位为1)SF=0 减法结果为正数(符号位为0)ZF=1 减法结果为零ZF=0 减法结果不为零OF=1 两数符号相反(正数-负数,或负数-正数),而结果符号与减数相同。
OF=0 同符号数相减时,或不同符号数相减,其结果符号与减数不同。
18、比较指令CMP (compare)指令的汇编格式:CMP opr1,opr2指令的基本功能:(opr1)-(opr2),根据相减结果设置条件码,但不回送结果。
指令支持的寻址方式:他们两个操作数不能同时为存储器寻址。
即为除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。