汇编指令英语解释
- 格式: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。
汇编指令集详细解释The assembly instruction set is a fundamental component of computer architecture, consisting of a collection of low-level instructions that directly control the operations of a computer's hardware. Each instruction performs a specific task, such as moving data between memory and registers, performing arithmetic or logical operations, or controlling the flow of execution.汇编指令集是计算机体系结构的基本组成部分,它由一组低级指令组成,直接控制计算机硬件的操作。
每条指令执行特定的任务,例如在内存和寄存器之间移动数据、执行算术或逻辑运算,或控制执行流程。
The assembly language, which utilizes this instruction set, provides a more direct and efficient way for programmers to interact with the machine than high-level languages. It allows fine-grained control over hardware resources, making it particularly useful in low-level system programming, embedded systems, andperformance-critical applications.汇编语言利用这一指令集,为程序员提供了一种比高级语言更直接、更高效的与机器交互的方式。
汇编指令英文全称:1.通用数据传送指令MOV---->moveMOV dest,src;dest←srcMOV指令把一个字节或字的操作数从源地址src传送至目的地址dest。
MOVSX---->extended move with sign dataMOVZX---->extended move with zero dataPUSH---->pushPOP---->pop进栈出栈指令PUSHA---->push allPOPA---->pop allPUSHAD---->push all dataPOPAD---->pop all dataBSWAP---->byte swapXCHG---->exchange交换指令用来将源操作数和目的操作数内容交换,操作数可以是字、也可以是字节,可以在通用寄存器与通用寄存器或存储器之间对换数据,但不能在存储器与存储器之间对换数据。
mov ax,1234h;ax=1234hmov bx,5678h;bx=5678hxchg ax,bx;ax=5678h,bx=1234hxchg ah,al;ax=7856hCMPXCHG---->compare and changeXADD---->exchange and addXLAT---->translate换码指令用于将BX指定的缓冲区中、AL指定的位移处的数据取出赋给AL。
2.输入输出端口传送指令IN---->inputOUT---->output3.目的地址传送指令LEA---->load effective addres有效地址传送指令mov bx,0400hmov si,3chlea bx,[bx+si+0f62h];BX=139EH这里BX得到的是主存单元的有效地址,不是物理地址,也不是该单元的内容。
LDS---->load DSLES---->load ESLFS---->load FSLGS---->load GSLSS---->load SS4.标志传送指令LAHF---->load AH from flagSAHF---->save AH to flagPUSHF---->push flagPOPF---->pop flagPUSHD---->push dflagPOPD---->pop dflag二、算术运算指令ADD---->add加法指令mov al,0fbh;al=0fbhadd al,07h;al=02hADC---->add with carryINC---->increase1AAA---->ascii add with adjustDAA---->decimal add with adjustSUB---->substractSBB---->substract with borrowDEC---->decrease1NEC---->negativeCMP---->compareAAS---->ascii adjust on substractDAS---->decimal adjust on substractMUL---->multiplicationIMUL---->integer multiplicationAAM---->ascii adjust on multiplicationDIV---->divideIDIV---->integer divideAAD---->ascii adjust on divideCBW---->change byte to wordCWD---->change word to double wordCWDE---->change word to double word with sign to EAX CDQ---->change double word to quadrate word三、逻辑运算指令AND---->andor---->orXOR---->xorNOT---->notTEST---->testSHL---->shift leftSAL---->arithmatic shift leftSHR---->shift rightSAR---->arithmatic shift rightROL---->rotate leftROR---->rotate rightRCL---->rotate left with carryRCR---->rotate right with carry四、串指令MOVS---->move stringCMPS---->compare stringSCAS---->scan stringLODS---->load stringSTOS---->store stringREP---->repeatREPE---->repeat when equalREPZ---->repeat when zero flagREPNE---->repeat when not equalREPNZ---->repeat when zero flagREPC---->repeat when carry flagREPNC---->repeat when not carry flag五、程序转移指令1>无条件转移指令(长转移)JMP---->jumpCALL---->callRET---->returnRETF---->return far2>条件转移指令(短转移,-128到+127的距离内)JAE---->jump when above or equalJNB---->jump when not belowJB---->jump when belowJNAE---->jump when not above or equalJBE---->jump when below or equalJNA---->jump when not aboveJG---->jump when greaterJNLE---->jump when not less or equalJGE---->jump when greater or equalJNL---->jump when not lessJL---->jump when lessJNGE---->jump when not greater or equal JLE---->jump when less or equalJNG---->jump when not greaterJE---->jump when equalJZ---->jump when has zero flagJNE---->jump when not equalJNZ---->jump when not has zero flagJC---->jump when has carry flagJNC---->jump when not has carry flag JNO---->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 flagJP---->jump when has parity flagJPE---->jump when parity flag is evenJS---->jump when has sign flag3>循环控制指令(短转移)LOOP---->loopLOOPE---->loop equalLOOPZ---->loop zeroLOOPNE---->loop not equalLOOPNZ---->loop not zeroJCXZ---->jump when CX is zero JECXZ---->jump when ECX is zero4>中断指令INT---->interruptINTO---->overflow interruptIRET---->interrupt return5>处理器控制指令HLT---->haltWAIT---->waitESC---->escapeLOCK---->lockNOP---->no operationSTC---->set carryCLC---->clear carryCMC---->carry make changeSTD---->set directionCLD---->clear directionSTI---->set interruptCLI---->clear interrupt六、伪指令DW---->definw wordPROC---->procedureENDP---->end of procedureSEGMENT---->segmentASSUME---->assumeENDS---->end segmentEND---->end汇编指令中文释义数据传输指令───────────────────────────────────────它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.1.通用数据传送指令.MOV传送字或字节.MOVSX先符号扩展,再传送.MOVZX先零扩展,再传送.PUSH把字压入堆栈.POP把字弹出堆栈.PUSHA把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.POPA把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.PUSHAD把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.POPAD把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.BSWAP交换32位寄存器里字节的顺序XCHG交换字或字节.(至少有一个操作数为寄存器,段寄存器不可作为操作数) CMPXCHG比较并交换操作数.(第二个操作数必须为累加器AL/AX/EAX) XADD先交换再累加.(结果在第一个操作数里)XLAT字节查表转换.──BX指向一张256字节的表的起点,AL为表的索引值(0-255,即0-FFH);返回AL为查表结果.([BX+AL]->AL)2.输入输出端口传送指令.IN I/O端口输入.(语法:IN累加器,{端口号│DX})OUT I/O端口输出.(语法:OUT{端口号│DX},累加器)输入输出端口由立即方式指定时,其范围是0-255;由寄存器DX指定时,其范围是0-65535.3.目的地址传送指令.LEA装入有效地址.例:LEA DX,string;把偏移地址存到DX.LDS传送目标指针,把指针内容装入DS.例:LDS SI,string;把段地址:偏移地址存到DS:SI.LES传送目标指针,把指针内容装入ES.例:LES DI,string;把段地址:偏移地址存到ES:DI.LFS传送目标指针,把指针内容装入FS.例:LFS DI,string;把段地址:偏移地址存到FS:DI.LGS传送目标指针,把指针内容装入GS.例:LGS DI,string;把段地址:偏移地址存到GS:DI.LSS传送目标指针,把指针内容装入SS.例:LSS DI,string;把段地址:偏移地址存到SS:DI.4.标志传送指令.LAHF标志寄存器传送,把标志装入AH.SAHF标志寄存器传送,把AH内容装入标志寄存器.PUSHF标志入栈.POPF标志出栈.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)当值为负时,高位补1;当值为正时,高位补0 ROL循环左移.ROR循环右移.RCL通过进位的循环左移.RCR通过进位的循环右移.以上八种移位指令,其移位次数可达255次.移位一次时,可直接用操作码.如SHL AX,1.移位>1次时,则由寄存器CL给出移位次数.如MOV CL,04SHL AX,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<>0时重复. REPNE/REPNZ当ZF=0或比较结果不相等,且CX/ECX<>0时重复. REPC当CF=1且CX/ECX<>0时重复.REPNC当CF=0且CX/ECX<>0时重复.五、程序转移指令───────────────────────────────────────1>无条件转移指令(长转移)JMP无条件转移指令CALL过程调用RET/RETF过程返回.2>条件转移指令(短转移,-128到+127的距离内)(当且仅当(SF XOR OF)=1时,OP1JA/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>循环控制指令(短转移)LOOP CX不为零时循环.LOOPE/LOOPZ CX不为零且标志Z=1时循环.LOOPNE/LOOPNZ CX不为零且标志Z=0时循环.JCXZ CX为零时转移.JECXZ ECX为零时转移.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程序结束.汇编语言中常用寄存器的英文缩写: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 Segment)代码段寄存器DS(Data Segment):数据段寄存器SS(Stack Segment):堆栈段寄存器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 direcion flag方向标志用于串处理.DF=1时,每次操作后使SI和DI减小.DF=0时则增大. IF interrupt flag中断标志IF=1时,允许CPU响应可屏蔽中断,否则关闭中断.TF trap flag陷阱标志用于调试单步操作.。
【】一、通用数据传送指令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来完成。
汇编语言中mov和lea指令的区别详解在汇编语言中,mov和lea都是用于数据传输的指令,但它们在功能和使用上有一些区别。
本文将详细解释mov和lea指令的区别。
一、mov指令的功能和用法mov指令是汇编语言中最常用的指令之一,它用于将数据从一个内存位置(源)复制到另一个内存位置(目标)。
mov指令的语法格式为:mov 目标,源例如,mov ax, bx将寄存器bx中的数据复制到寄存器ax中。
以下是关于mov指令的一些重要特点:1. mov指令可以在寄存器和内存之间进行数据传输,也可以在不同的寄存器之间传输数据。
2. mov指令可以用于字节、字和双字数据的传输。
3. mov指令的源和目标可以是立即数(常数),也可以是寄存器或内存地址。
二、lea指令的功能和用法lea指令(Load Effective Address)用于将内存地址加载到一个寄存器中,而不是将数据本身复制到寄存器。
lea指令的语法格式为:lea 目标,源例如,lea si, array将数组array的地址加载到寄存器si中。
以下是关于lea指令的一些重要特点:1. lea指令只能用于在内存之间传输数据,不能用于传输立即数。
2. lea指令在执行时不访问内存,只是计算内存地址,并将结果存储在目标寄存器中。
3. lea指令常用于计算数组或结构体的偏移地址。
三、mov指令和lea指令的区别1. 功能和用途不同:mov指令用于数据的复制和传输,而lea指令用于加载内存地址到寄存器。
2. 访存方式不同:mov指令在执行时需要访问内存获取数据,而lea指令只是计算内存地址,不访问内存。
3. 可操作的数据类型不同:mov指令可以操作立即数、寄存器和内存中的数据,而lea指令只能操作内存中的数据。
4. 地址计算方式不同:mov指令通过内存寻址方式直接读取或写入数据,而lea指令通过计算内存地址得出需要操作的数据。
5. 代码长度不同:mov指令通常需占用多个字节的机器码,而lea 指令一般只需占用一个字节的机器码,因此lea指令在效率和代码空间上有一定优势。
汇编指令的英文解释作者:来源:zz发表时间:2008-09-03 浏览次数:275 字号:大中小1.通用数据传送指令.MOV----> moveMOVSX---->extended move with sign dataMOVZX---->extended move with zero dataPUSH---->pushPOP---->popPUSHA---->push allPOPA---->pop allPUSHAD---->push all dataPOPAD---->pop all dataBSWAP---->byte swapXCHG---->exchangeCMPXCHG---->compare and changeXADD---->exchange and addXLAT---->translate2.输入输出端口传送指令.IN---->inputOUT---->output3.目的地址传送指令.LEA---->load effective addressLDS---->load DSLES---->load ESLFS---->load FSLGS---->load GSLSS---->load SS4.标志传送指令.LAHF---->load AH from flagSAHF---->save AH to flagPUSHF---->push flagPOPF---->pop flagPUSHD---->push dflagPOPD---->pop dflag二、算术运算指令ADD---->addADC---->add with carryINC---->increase 1AAA---->ascii add with adjustDAA---->decimal add with adjust SUB---->substractSBB---->substract with borrow DEC---->decrease 1NEC---->negativeCMP---->compareAAS---->ascii adjust on substract DAS---->decimal adjust on substract MUL---->multiplicationIMUL---->integer multiplicationAAM---->ascii adjust on multiplicationDIV---->divideIDIV---->integer divideAAD---->ascii adjust on divideCBW---->change byte to wordCWD---->change word to double wordCWDE---->change word to double word with sign to EAXCDQ---->change double word to quadrate word三、逻辑运算指令───────────────────────────────────────AND---->andOR---->orXOR---->xorNOT---->notTEST---->testSHL---->shift leftSAL---->arithmatic shift leftSHR---->shift rightSAR---->arithmatic shift rightROL---->rotate leftROR---->rotate rightRCL---->rotate left with carryRCR---->rotate right with carry四、串指令───────────────────────────────────────MOVS---->move stringCMPS---->compare stringSCAS---->scan stringLODS---->load stringSTOS---->store stringREP---->repeatREPE---->repeat when equalREPZ---->repeat when zero flagREPNE---->repeat when not equalREPNZ---->repeat when zero flagREPC---->repeat when carry flagREPNC---->repeat when not carry flag五、程序转移指令───────────────────────────────────────1>无条件转移指令(长转移)JMP---->jumpCALL---->callRET---->returnRETF---->return far2>条件转移指令(短转移,-128到+127的距离内)JAE---->jump when above or equalJNB---->jump when not belowJB---->jump when belowJNAE---->jump when not above or equal JBE---->jump when below or equalJNA---->jump when not aboveJG---->jump when greaterJNLE---->jump when not less or equal JGE---->jump when greater or equalJNL---->jump when not lessJL---->jump when lessJNGE---->jump when not greater or equal JLE---->jump when less or equalJNG---->jump when not greaterJE---->jump when equalJZ---->jump when has zero flagJNE---->jump when not equalJNZ---->jump when not has zero flagJC---->jump when has carry flagJNC---->jump when not has carry flag JNO---->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 flagJP---->jump when has parity flagJPE---->jump when parity flag is evenJS---->jump when has sign flag3>循环控制指令(短转移)LOOP---->loopLOOPE---->loop equalLOOPZ---->loop zeroLOOPNE---->loop not equal LOOPNZ---->loop not zeroJCXZ---->jump when CX is zero JECXZ---->jump when ECX is zero 4>中断指令INT---->interruptINTO---->overflow interruptIRET---->interrupt return5>处理器控制指令HLT---->haltWAIT---->waitESC---->escapeLOCK---->lockNOP---->no operationSTC---->set carryCLC---->clear carryCMC---->carry make changeSTD---->set directionCLD---->clear directionSTI---->set interruptCLI---->clear interrupt六、伪指令─────────────────────────────────────DW---->definw wordPROC---->procedureENDP---->end of procedureSEGMENT---->segmentASSUME---->assumeENDS---->end segmentEND---->end责任编辑webmaster。
一、通用数据传送指令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),根据相减结果设置条件码,但不回送结果。
指令支持的寻址方式:他们两个操作数不能同时为存储器寻址。
即为除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。