版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据传送指令一 通用数据传送指令指令英文全拼翻译MOVMove传送PUSHPush onto the stack进栈POPPop from the stack出栈XCHGExchange交换MOV指令为双操作数指令,两个操作数中不能全为内存操作数格式:MOV DST,SRC执行操作:dst = src注:1目的数可以是通用寄存器,存储单元和段寄存器(但不允许用CS段寄存器).2立即数不能直接送段寄存器3不允许在两个存储单元直接传送数据4不允许在两个段寄存器间直接传送信息PUSH入栈指令及POP出栈指令:堆栈操作是以“后进先出”的方式进行数据操作。格式:PUSH SRC /Word执行操作:(S
2、P)<-(SP)-2(SP)+1,(SP)<-(SRC)注:1.入栈的操作数除不允许用立即数外,可以为通用寄存器,段寄存器(全部)和存储器。2.入栈时高位字节先入栈,低位字节后入栈。格式:POP DST /Word执行操作:(DST)<-(SP+1),(SP)(SP)<-(SP)+2注:1出栈操作数除不允许用立即数和CS段寄存器外,可以为通用寄存器,段寄存器和存储器。2执行POP SS指令后,堆栈区在存储区的位置要改变。3执行POP SP 指令后,栈顶的位置要改变。XCHG(eXCHanG)交换指令:将两操作数值交换。格式:XCHG OPR1,OPR2 /Byte/Wo
3、rd执行的操作:(OPR1)<->(OPR2)注:1必须有一个操作数是在寄存器中2不能与段寄存器交换数据存储器与存储器之间不能交换数据。二 累加器专用传送指令指令英文全拼翻译INInput输入OUTOutput输出XLATTranslate换码IN 输入指令长格式为:IN AL,PORT(字节)IN AX,PORT(字)执行的操作:(AL)<-(PORT)(字节)(AX)<-(PORT+1,PORT)(字)短格式为:IN AL,DX(字节)IN AX,DX(字)OUT 输出指令长格式为:OUT PORT,AL(字节)OUT PORT,AX(字)执行的
4、操作:(PORT)<-(AL)(字节)(PORT+1,PORT)<-(AX)(字)短格式为:OUT DX,AL(字节)OUT DX,AX(字)执行的操作:(DX)<-(AL)(字节)(DX)+1,(DX)<-AX(字)XLAT(TRANSLATE)换码指令:把一种代码转换为另一种代码。格式:XLAT (OPR 可选) /Byte执行操作:(AL)<-(BX)+(AL)注:指令执行时只使用预先已存入BX中的表格首地址,执行后,AL中内容则是所要转换的代码。三 有效地址送寄存器指令指令英文全拼翻译LEALoad effective address有效地址送寄存器LDS
5、Load DS with Pointer指针送寄存器和DSLESLoad ES with Pointer指针送寄存器和ESLEA(Load Effective Address) :有效地址传送寄存器指令格式:LEA REG,SRC /指令把源操作数SRC的有效地址送到指定的寄存器中。执行操作:(REG)<-SRC注:1. SRC只能是各种寻址方式的存储器操作数,REG只能是16位寄存器2.MOV BX,OFFSET OPER_ONE 等价于LEA BX,OPER_ONE3.MOV SP,BX /将BX间接寻址的相继的二个存储单元的内容送入SP中4.LEA SP,BX /将BX的内容作为存
6、储器有效地址送入SP中LDS(Load DS with pointer):指针送寄存器和DS指令格式:LDS REG,SRC /常指定SI寄存器。执行的操作:(REG)<-(SRC)(DS)<-(SRC+2)注:把源操作数指定的4个相继字节送到由指令指定的寄存器及DS寄存器中。该指令常指定SI寄存器。LES(Load ES with pointer) 指针送寄存器和ES指令格式:LES REG,SRC /常指定DI寄存器执行的操作:(REG)<-(SRC)(ES)<-(SRC+2)/与LDS大致相同,不同之处是将ES代替DS而已。注:把源操作数指定的4个相继字节送到由指
7、令指定的寄存器及ES寄存器中。该指令常指定DI寄存器。四 标志寄存器传送指令指令英文全拼翻译LAHFLoad AH with flags标志送AHSAHFstore AH into flagsAH送标志寄存器PUSHFpush the flags标志进栈POPFpop the flags标志出栈LAHF ( Load AH with Flags )标志位送AH指令格式:LAHF .执行操作:(AH)<-(PWS的低字节)注:将PSW寄存器中的低8位的状态标志(条件码)送入AH的相应位,SF送D7位,ZF送D6位SAHF( Store AH into Flags )AH送标志寄存
8、器指令格式:SAHF执行操作: (PWS的低字节)<-(AH)注:将AH寄存器的相应位送到PSW寄存器的低8位的相应位,AH的D7位送SF,D6位送ZF。PUSHF( PUSH the Flags)标志进栈指令格式:PUSHF执行操作:(SP)<-(SP)-2SP=SP-1,(SP)=PSW的高8位,SP=SP-1,(SP)=PSW的低8位注:将标志寄存器的值压入堆栈顶部,同时栈指针SP值减2POPF( POP the Flags )标志出栈指令格式:POPF执行操作:(PWS)<-(SP)+1,(SP)(SP)<-(SP+2)PSW低8位=(SP),SP=SP+1,P
9、SW高8位=(SP),SP=SP+1注:与PUSHF相反,从堆栈的顶部弹出两个字节送到PSW寄存器中,同时堆栈指针值加2算术指令一 加法指令指令英文全拼翻译ADDadd加法ADCadd with carry带进位加法INCincrement加1ADD(ADD)加法指令格式:ADD DST,SRC /Byte/Word执行操作: (DST)<-(SRC)+(DST)注:1两个存储器操作数不能通过ADD指令直接相加,即DST 和SRC必须有一个是通用寄存器操作数。2段寄存器不能作为SRC 和DST.3影响标志位Auxiliary Crray Flag,Carry Flag,Over
10、flow Flag,Parity Flag,Sign Flag 和Zero Flag,如下所示:CF 根据最高有效位是否有进(借)位设置的:有进(借)位时CF=1,无进(借)位时CF=0.OF 根据操作数的符号及其变化来设置的:若两个操作数的符号相同,而结果的符号与之相反时OF=1,否则为0.ZF 根据结果来设置:不等于0时ZF=0,等于0时ZF=1SF 根据结果的最高位来设置:最高位为0,则SF=0.AF 根据相加时D3是否向D4进(借)位来设置:有进(借)位时AF=1,无进(借)位时AF=0PF 根据结果的1的个数时否为奇数来设置:1的个数为奇数时PF=0,为偶数时PF=1ADC( ADd
11、 with Carry)带进位加法指令格式:ADC DST,SRC /Byte/Word执行操作: (DST)<-(SRC)+(DST)+CF注:与ADD不同之处是还要加上进位标志位的值。INC( INCrement) 加1指令格式:INC OPR /Byte/Word执行操作: (OPR)<-(OPR)+1注:1OPR可以是寄存器和存储器操作数,但不能是立即数和段寄存器2影响标志位OF,SF,ZF,PF 和AF,不影响CF.二 减法指令指令英文全拼翻译SUBsubtract减法SBBsubtract with borrow带借位减法DECDecrement减1NEGNegate求
12、补CMPCompare比较SUB( SUBtract ) 不带借位的减法指令格式:SUB DST,SRC /Byte/Word执行操作:(DST)<-(DST)-(SRC)注:1DST和SRC寻址方式及规定与ADD相同。2影响全部标志位。(判断标志位参见ADD)SBB ( SuBtract with Borrow) 带借位减法指令格式:SBB DST,SRC /Byte/Word执行操作:(DST)<-(DST)-(SRC)-CFDEC( DECrement ) 减1指令格式:DEC OPR /Byte/Word执行操作:(OPR)<-(OPR)-1/除CF标志位,
13、其余标志位都受影响。NEG( NEGate ) 求补指令格式:NEG OPR执行操作:(OPR)<- -(OPR) /将操作数按位求反后末位加1.CMP ( CoMPare ) 比较指令格式:CMP OPR1,OPR2执行操作:(OPR1)-(OPR2) /与SUB指令一样执行运算,但不保存结果。注:该指令与SUB指令一样执行减法操作,但不保存结果,只是根据结果设置条件标志。比较情况无符号数有符号数A=BZF=1ZF=1A>BCF=0 && ZF=0SFOF=0 && ZF=0A<BCF=1 && ZF=0SFOF=1
14、 && ZF=0A>=BCF=0 | ZF=1SFOF=0 | ZF=1A<=BCF=1 | ZF=1SFOF=1 | ZF=1三 乘法指令指令英文全拼翻译MULUnsigned Multiple无符号数乘法IMULSigned Multiple带符号数乘法MUL( unsigned MULtiple ) 无符号数乘法指令格式:MUL SRC /Byte/Word .执行操作:字操作:(AX)<-(AL)*(SRC) /字节运算时目的操作数用AL,乘积放在AX中字节操作: (DX,AX)<-(AX)*(SRC) /字运算时目的操作数用AX,DX存放乘积的
15、高位字,AX放乘积的低位字注:1目的数必须是累加器AX 或AL,指令中不需写出源操作数SRC可以是通用寄存器和各种寻址方式的存储器操作数,而绝对不允许是立即数或段寄存器。IMUL(sIgned MULtiple) 有符号数乘法指令格式:IMUL SRC /与MUL指令相同,但必须是带符号数四 除法指令指令英文全拼翻译DIVUnsigned divide无符号数除法IDIVSigned divide带符号数除法CBWConvert byte to word字节转换为字CWDContert word to double word字转换为双字DIV ( unsigned DIVide) 无
16、符号数除法指令格式:DIV SRC /Byte/Word 其中:SRC的规定同乘法指令MUL执行操作:字节操作:(AL)<-(AX)/(SRC)的商(AH)<-(AX)/(SRC)的余数字操作:(AX)<-(DX,AX)/(SRC)的商(DX)<-(DX,AX)/(SRC)的余数注:存储器操作数必须指明数据类型:BYTE PTR src 或WORD PTR srcIDIV (sIgned DIVied) 有符号数除法指令格式:IDIV SRC执行的操作:与DIV相同,但操作数必须是带符号数,商和余数也均为带符号数,且余数的符号与被除数的符号相同。CBW(Con
17、vert Byte to Word) 字节转换为字指令格式:CBW执行操作:AL中的符号位(D7)扩展到8位AH中,若AL中的D7=0,则AH=00H,若AL中的D7=1,则AH=FFH.CWD(Convert Word to Double word) 字转换为双字指令格式:CWD执行操作:AX中的符号位(D15)扩展到16位DX中,若AX中的D15=0,则DX=0000H,若AX中的D15=1,则DX=FFFFH注:这两条指令都不影响条件码。逻辑指令一逻辑运算指令指令英文全拼翻译ANDand逻辑与ORor逻辑或NOTnot逻辑非XORexclusive or异或TESTtest测试AND,O
18、R,XOR和 TEST都是双字节操作指令,操作数的寻址方式的规定与算术运算指令相同。NOT是单字节操作指令,不允许使用立即数。逻辑运算均是按位进行操作,真值表如下:AND (位与&)OR ( 位或| )XOR ( 位异或 )1& 1 = 11 | 1 = 11 1 = 01 & 0 = 01 | 0 = 11 0 = 10 & 1 = 00 | 1 = 10 1 = 10 & 0 = 00 | 0 = 00 0 = 0AND(and) 逻辑与指令格式:AND DST,SRC /Byte/Word执行操作:(DST)<-(DST)(SRC)
19、注:1AND指令执行后,将使CF=0,OF=0,AF位无定义,指令执行结果影响SF,ZF和PF标志位。2AND指令典型用法A:用于屏蔽某些位,即使某些位为0.例子:屏蔽AL的高4位:即将高4位和0000B相与,低4位和1111B相与MOV AL,39H /AL= 0011 1001B39HADD AL,0FH / AL= 0000 1001B09H 即0011 1001B39H & 0000 1111B0FH = 0000 1001B09HAND指令典型用法B:取出某一位的值(见TEST)OR(or) 逻辑或指令格式:OR DST,SRC /Byte/Word执行操作:(DST)<
20、;-(DST) | (SRC)注:1OR指令执行后,将使CF=0,OF=0,AF位无定义,指令执行结果影响SF,ZF和PF标志位。2常用于将某些位置1.例子:将AL的第5位置1:MOV AL,4AH / AL=0100 1010B4AHOR AL,10H / AL=0101 1010B5AH 即0100 1010B4AH | 0001 0000B10H =0101 1010B 5AHXOR(eXclusive OR) 逻辑异或指令格式:XOR DST,SRC /Byte/Word执行操作:(DST)<-(DST)(SRC)注:1XOR指令常用于使某个操作数清零,同时使CF=0,清除进位标
21、志。2XOR指令使某些位维持不变则与'0' 相异或,若要使某些位取反则与'1'相异或。例子:将AL的高4位维持不变,低4位取反:MOV AL,B8H /AL=1011 1000BB8HXOR AL,0FH /AL=1011 0111BB7H 即1011 1000BB8H 0000 11110FH=1011 0111BB7H例子:测试某一个操作数是否与另一确定操作数相等:XOR AX,042EHJZ . /如果AX=042EH,则ZF=TRUE(1),执行JZ.NOT (not) 逻辑非指令格式:NOT OPR /Byte/Word执行操作:(OPR)&
22、lt;(OPR) / 01100101 65H =10011010 9AH1操作数不能使用立即数或段寄存器操作数,可使用通用寄存器和各种方式寻址的存储器操作数。2NOT指令不影响任何标志位。例子:将AL各位取反:MOV AL,65H /AL=0110 0101B65HNOT AL /AL=1001 1010B9AH 即 0110 0101B65H=1001 1010B9AHTEST(test) 指令格式:TEST OPR1,OPR2 /Byte/Word执行操作:opr1 & opr2注:1两个操作数相与的结果不保存,结果影响标志位PF,SF和ZF,使CF=0,OF=0,而AF位无定义
23、。2TEST指令常用于在不改变原有的操作数的情况下,检测某一位或某几位的条件是否满足。只要令用来测试的操作数对应检测位为1,其余位为0,相与后判断零标志ZF值的真假。例:检测某位是否为1:令用来测试的操作数对应检测位为1,其余位为0,TEST指令后,若该位为1则JNZ.TEST AL,0000 00001B /测试AL最低位是否为1: 令用来测试的操作数对应检测位为1,其余位为0,执行TEST指令JNZ THER/最低位若为1,则ZF=FALSE(0),执行JNZ THER,否则执行下一条指令。或者:先对操作数求反,令用来测试的操作数对应检测位为1,其余位为0,TEST指令后,若该位为1则JZ
24、.MOV DL,AL /将AL 传送到DL,主要是不要影响AL的值。 以下测试AL的b2位是否为1NOT DL /先对操作数求反TEST 0000 0100B /令用来测试的操作数对应检测位为1,其余位为0,执行TEST指令JZ THER /若AL的b2位为1,则ZF=TRUE(1),执行JZ THERB:移位指令所有的移位指令都影响标志位CF、OF、PF、SF和ZF、AF无定义。非循环逻辑移位:把操作数看成无符数来进行移位。移位指令指令英文全拼翻译SHLshift logical left逻辑左移SALshift arithmetic left算术左移SHRshift logical rig
25、ht逻辑右移SARshift arithmetic right算术右移ROLRotate left循环左移RORRotate right循环右移RCLRotate left through carry带进位循环左移RCRRotate right through carry带进位循环右移SHL( SHift logical Left )逻辑左移指令格式:SHL OPR,CNT /Byte/Word执行操作:使OPR左移CNT位,并使最低CNT位为全0.1OPR操作数不能使用立即数或段寄存器操作数,可使用通用寄存器和各种方式寻址的存储器操作数。2移位次数由CNT决定。每次将OPR的最高位移出并移到
26、CF,最低位补0.MOV CL,7 /若移位多次,先预置移位次数CLSHL DX,CL /CNT可取1或CL寄存器操作数SHR(SHift logical Right) 逻辑右移指令格式:SHR OPR,CNT /Byte/Word执行操作:同SHL,每次将OPR的最低位D0移出并移到CF.最高位补0.非循环算术移位:将操作数看成有符号数来进行移位。SAL(Shift Arithmetic Left) 算术左移指令格式:SAL OPR,CNT /Byte/Word执行操作:SAL指令与SHL指令完全相同SAR(Shift Arithmetic Right) 算术右移指令格式:SAR OPR,C
27、NT /Byte/Word执行操作:SAR指令每次移位时,将最高位移入次高位的同时最高位值不变,最低位D0移出并移到CF.循环移位指令ROL( ROtate Left) 循环左移指令格式:ROL OPR,CNT /Byte/Word执行操作:每次移位时,最高位移出并同时移到CF和最低位D0.ROR (ROtate Right)循环右移指令格式:ROR OPR,CNT /Byte/Word执行操作:每次移位时,最低位D0移出并同时移到CF和最高位。带进位循环移位指令RCL(Rotate Left through Carry)带进位循环左移指令格式:RCL OPR,CNT /Byte/W
28、ordRCR (Rotate Right through Carry)带进位循环右移指令格式:RCR OPR,CNT /Byte/Word串处理指令一 与REP相配合工作的MOVS,STOS和LODS指令指令英文全拼翻译REPrepeat重复操作MOVSMOVe String串传送指令STOSSTOre into String存入串指令LODSLOaD from String从串取指令CLDClear direction flag使地址自动增量STDSet direction flag使地址自动减量REP(REPeat)重复操作前缀格式:REP String Primitive执行的
29、操作:1)如(CX)=0则退出REP,否则往下执行。2)(CX)<-(CX)-13)执行其中的串操作4)重复1)3)注:其中String Primitive可为MOVS,LODS或STOS指令.MOVS 串传送指令格式:MOVS ES:BYTE PTRDI,DS:SI可有三种MOVS DST,SRCMOVSB/字节串传送DF=0,SI = SI + 1,DI = DI + 1 ;DF = 1,SI = SI - 1,DI = DIMOVSW/字串传送DF=0,SI = SI + 2,DI = DI + 2 ;DF = 1,SI = SI - 2,DI = DI - 2MOVSD
30、/双字串传送DF=0,SI = SI + 4,DI = DI + 4 ;DF = 1,SI = SI - 4,DI = DI - 4MOVSX/符号传送MOVZX/零传送执行的操作:1)如(CX)=0则退出REP,否则往下执行。2)(CX)<-(CX)-13)执行其中的串操作4)重复1)3).MOVS 串传送指令注:当方向标志DF=1时用,其中第二、三种格式明确地注明是传送字节或字,第一种格式则应在操作数中表明是字还是字节操作,例如:1)(DI)<-(SI)2)字节操作: (SI)<-(SI)+(或-)1,(DI)<-(DI)+(或-)1/当方向标志DF=0时用3)字操
31、作: (SI)<-(SI)+(或-)2,(DI)<-(DI)+(或-)2当方向标志DF=0时用/当方向标志DF=1时用-该指令不影响条件码。STOS(STOre into String) 存入串指令格式:STOS DSTSTOSB /存放字节串( DI ) = ALSTOSW /存放字串( DI ) = AX执行操作:把AL或AX中的内容存放由DI指定的附加段的字节或字单元中,并根据DF值修改及数据类型修改DI的内容。字节操作:(DT)(AL),(DI)(DI)±1字操作:(DI)(AX),(DI)(DI)±2注:1在执行该指令之前,必须把要存入的数据预先存入A
32、X或AL中,必须预置DI的初值。2DI所指向的存储单元只能在附加段中,即必须是ES:DI3该指令把AL或AX的内容存入由(DI)指定的附加段的某单元中,并根据DF的值及数据类型修改DI的内容,当它与REP联用时,可把AL或AX的内容存入一个长度为(CX)的缓冲区中。LODS ( LOaD from String ) 从串取指令格式:LODS SRCLODSB /从字节串取AL=(SI)LODSW /从字串取AX= (SI±1) (SI)执行操作:字节操作:(AL)<-(SI),(SI)<-(SI)+-1字操作:(AX)<-(SI),(SI)<-(SI
33、)+-2把由SI指定的数据段中字节或字单元的内容送入AL或AX中,并根据DF值及数据类型修改SI的内容。注:1在执行该指令之前,要取的数据必须在存储器中预先定义(用DB或DW),必须预置SI的初值。2源串允许使用段超越前缀来改变数据存储的段区。3该指令把由(SI)指定的数据段中某单元的内容送到AL或AX中,并根据方向标志及数据类型修改SI的内容。指令允许使用段跨越前缀来指定非数据段的存储区。该指令也不影响条件码。4一般说来,该指令不和REP联用。有时缓冲区中的一串字符需要逐次取出来测试时,可使用本指令。CLD(CLear Direction flag) 清除方向标志指令格式:CLD执行操作:令
34、DF=0,其后SI,DI执行增量操作该指令使DF=0,在执行串操作指令时可使地址自动增量STD(SeT Direction flag) 设置方向标志指令格式:STD执行操作:令DF=1,其后SI,DI执行减量操作该指令使DF=1,在执行串操作指令时可使地址自动减量。二与REPE/REPZ和REPNZ/REPNE联合工作的CMPS和SCAS指令指令英文全拼翻译REPE/REPZRepeat Equal to Zero等于零时重复操作REPNE/REPNZRepeat Not Equal to Zero不等于零时重复操作CMPSCoMPare String串比较指令SCASSCAn String串
35、扫描指令.REPE/REPZ 当相等/为零时重复串操作格式:REPE(或REPZ) String Primitive其中String Primitive可为CMPS或SCAS指令。执行的操作:1)如(CX)=0或ZF=0(即某次比较的结果两个操作数不等)时退出,否则往下执行2)(CX)<-(CX)-13)执行其后的串指令4)重复1)3).REPNE/REPNZ 当不相等/不为零时重复串操作格式:REPNE(或REPNZ) String Primitive其中String Primitive可为CMPS或SCAS指令执行的操作:除退出条件(CX=0)或ZF=1外,其他操
36、作与REPE完全相同。CMPS(CoMPare String) 串比较指令格式:CMPS SRC,DSTCMPSB /字节串比较(SI)-(DI)CMPSW /字串比较(SI+1)(SI) - (DI+1)(DI)执行操作:把由SI指向的数据段中的一个字节或字与由DI指向的附加段中的一个字节或字相减,不保留结果,只根据结果置标志位。1)(SI)-(DI)2)字节操作:(SI)<-(SI)+-1,(DI)<-(DI)+-1字操作:(SI)<-(SI)+-2,(DI)<-(DI)+-2注:指令把由(SI)指向的数据段中的一个字(或字节)与由(DI)指向的附加段中的一个字(或
37、字节)相减,但不保存结果,只根据结果设置条件码,指令的其它特性和MOVS指令的规定相同。.SCAS (SCAn String ) 串扫描指令格式:SCAS DSTSCASBSCASW执行操作:把AX或AL的内容与由DI指向的在附加段中的一个字节或字相减,不保留结果,根据结果置标志位。字节操作:(AL)-(DI),(DI)<-(DI)+-1字操作:(AL)-(DI),(DI)<-(DI)+-2注:该指令把AL(或AX)的内容与由(DI)指定的在附加段中的一个字节(或字)进行比较,并不保存结果,只根据结果置条件码。指令的其他特性和MOVS的规定相同。控制转移指令一
38、JMP ( JuMP ) 无条件转移指令名称格式执行操作段内直接短跳转JMP SHORT OPRIP=IP+8 位偏移量段内直接近转移JMP NEAR PTR OPRIP=IP+16位偏移量段内间接转移JMP WORD PTR OPRIP=(EA)段间直接转移JMP FAR PTR OPRIP=OPR 偏移地址,CS=OPR 段地址段间间接转移JMP DWORD PTR OPRIP=(EA),CS=(EA+2)1)段内直接短转移格式:JMP SHORT OPR执行的操作:(IP)<-(IP)+8位位移量2)段内直接近转移格式:JMP NEAR PTR OPR执行的操作:(IP)
39、<-(IP)+16位位移量3)段内间接转移格式:JMP WORD PTR OPR执行的操作:(IP)<-(EA)4)段间直接(远)转移格式:JMP FAR PTR OPR执行的操作:(IP)<-OPR的段内偏移地址(CS)<-OPR所在段的段地址5)段间间接转移格式:JMP DWORD PTR OPR执行的操作:(IP)<-(EA)(CS)<-(EA+2)1无条件转移到指定的地址去执行从该地址开始的指令。2段内转移是指在同一代码段的范围内进行转移,只需改变IP寄存器内容。3段间转移则要转移到另一个代码段执行程序,此时要改变IP寄存器和CS段寄存器的内容。二
40、条件转移指令:指令英文全拼翻译JZ/JEJump if zero,or equal结果为零(或相等)则转移JNZ/JNEJump if not zero,or not equal结果不为零(或不相等)则转移JSJump if sign结果为负则转移JNSJump if not sign结果为正则转移JOJump if overflow溢出则转移JNOJump if not overflow不溢出则转移JP/JPEJump if parity,or parity even奇偶位为1则转移JNP/ JPOJump if not parity,or parity odd奇偶位为0则转移JB/JNAE
41、/JCJump if below,or not above or equal,or carry低于,或者不高于或等于,或进位位为1则转移JNB/JAE/JNCJump if not below,or above or equal,or not carry不低于,或者高于或者等于,或进位位为0则转移根据上一条指令所设置的条件码(标志位)来判断测试条件。JZ(或JE)(Jump if zero,or equal) 结果为零(或相等)则转移格式:JE(或JZ) OPR测试条件:ZF=1.JNZ(或JNE)(Jump if not zero,or not equal) 结果不为零(或不相等)则转移格式
42、:JNZ(或JNE) OPR测试条件:ZF=0.JS(Jump if sign) 结果为负则转移格式:JS OPR测试条件:SF=1.JNS(Jump if not sign) 结果为正则转移格式:JNS OPR测试条件:SF=0.JO(Jump if overflow) 溢出则转移格式:JO OPR测试条件:OF=1.JNO(Jump if not overflow) 不溢出则转移格式:JNO OPR测试条件:OF=0.JP(或JPE)(Jump if parity,or parity even) 奇偶位为1则转移格式:JP OPR测试条件:PF=1.JNP(或JPO)(Jump if no
43、t parity,or parity odd) 奇偶位为0则转移格式:JNP(或JPO) OPR测试条件:PF=0.JB(或JNAE,JC)(Jump if below,or not above or equal,or carry) 低于,或者不高于或等于,或进位位为1则转移格式:JB(或JNAE,JC) OPR测试条件:CF=1.JNB(或JAE,JNC)(Jump if not below,or above or equal,or not carry) 不低于,或者高于或者等于,或进位位为0则转移格式:JNB(或JAE,JNC) OPR测试条件:CF=02)比较两个无符号数,并根据比较的结
44、果转移.JB(或JNAE,JC)格式:同上.JNB(或JAE,JNC)格式:同上.JBE(或JNA)(Jump if below or equal,or not above) 低于或等于,或不高于则转移格式:JBE(或JNA) OPR测试条件:CFVZF=1.JNBE(或JA)(Jump if not below or equal,or above) 不低于或等于,或者高于则转移格式:JNBE(或JA) OPR测试条件:CFVZF=0根据五个标志位:ZF、SF、OF、PF、CF的两种状态(0 FALSE或1 TRUE)产生10种测试条件。名称简写格式Flag = TRUE 1Flag =FAL
45、SE 0Zero FalgZFJE/JZOPR结果为零转移JNE/JNZOPR结果不为零转移Sign FalgSFJS OPR结果为负转移JNSOPR结果为正转移Overflow FlagOFJO OPR溢出转移JNOOPR不溢出转移Parity FlagPFJP/JPE OPR结果为偶转移 JNP/JPOOPR结果为奇转移Carry FlagCFJC OPR有进位转移 JNCOPR无进位转移情况指令满足条件指令满足条件A < BJCCF=1JLSFOF=1&& ZF=0A BJNCCF=0JNLSFOF=0 |
46、 ZF=1A BJNACF=1 | ZF=1JLGSFOF=1 | ZF=1A > BJACF=0 && ZF=0JGSFOF=0 && ZF=0三 比较两个无符号数,并根据比较的结果转移指令英文全拼翻译JB/JNAE/JCJump if less,or not greater or equal小于,或者不大于或者等于则转移JNB/JAE/JNCJump if not less,or greater or equal不小于,或者大于或者等于则转移JBE/JNAJump if below or equal,or not above低于或等于,或不高于则转移J
47、NBE/JAJump if not below or equal,or above不低于或等于,或者高于则转移.JB(或JNAE,JC)格式:同上.JNB(或JAE,JNC)格式:同上.JBE(或JNA)(Jump if below or equal,or not above) 低于或等于,或不高于则转移格式:JBE(或JNA) OPR测试条件:CFVZF=1.JNBE(或JA)(Jump if not below or equal,or above) 不低于或等于,或者高于则转移格式:JNBE(或JA) OPR测试条件:CFVZF=0四 比较两个带符号数,并根据比较的结果转移指令英文全拼翻译
48、JL/LNGEJump if less,or not greater or equal小于,或者不大于或者等于则转移JNL/JGEJump if not less,or greater or equal不小于,或者大于或者等于则转移JLE/JNGJump if less or equal,or not greater小于或等于,或者不大于则转移JNLE/JGJump if not less or equal,or greater不小于或等于,或者大于则转移.JL(或LNGE)(Jump if less,or not greater or equal) 小于,或者不大于或者等于则转移格式:JL(
49、或JNGE) OPR测试条件:SFVOF=1.JNL(或JGE)(Jump if not less,or greater or equal)不小于,或者大于或者等于则转移格式:JNL(或JGE) OPR测试条件:SFVOF=0.JLE(或JNG)(Jump if less or equal,or not greater) 小于或等于,或者不大于则转移格式:JLE(或JNG) OPR测试条件:(SFVOF)VZF=1.JNLE(或JG)(Jump if not less or equal,or greater) 不小于或等于,或者大于则转移格式:JNLE(或JG) OPR测试条件:(SFVOF)
50、VZF=0五 测试CX的值为0则转移指令.JCXZ(Jump if CX register is zero) CX寄存器的内容为零则转移格式:JCXZ OPR/CX=0时转移测试条件:(CX)=0注:条件转移全为8位短跳!六 循环指令LOOP(LOOP)循环指令格式:LOOP OPR测试条件:CX 0 /OPR在程序中实际是个标号.LOOPNZ/LOOPNE 当不为零或不相等时循环指令格式:LOOPNZ(或LOOPNE) OPR测试条件:(CX)<>0且ZF=0注:这三条指令的步骤是:1)(CX)<-(CX)-12)检查是否满足测试条件,如满足则(IP)<-(
51、IP)+D8的符号扩充。过程调用及返回指令CALL(CALL) 过程调用指令格式:CALL DST /DST在程序中实际是子程序标号执行操作:先将过程的返回地址(即CALL的下一条指令的首地址)存入堆栈,然后转移到过程入口地址执行子程序。调用方式格式断点保护入栈情况过程入口地址段内直接CALL NEAR PTR PR1(SP-1)(SP-2)IP,CS不进栈CS值保持不变IPDST段内间接CALL WORD PTR (EA)(SP-1)(SP-2)IP,CS不进栈CS值保持不变IP(EA)段间直接CALL FAR PTR PR1(SP-1)(SP-2)CS,(SP-3)(SP-4)IPIPDS
52、T偏移地址CSDST段地址段间间接CALL DWORD PTR (EA)(SP-1)(SP-2)CS,(SP-3)(SP-4)IPIP(EA),CS(EA+2)注:为了表明是段内调用,可使用NEAR PTR属性操作符作说明。RET(RETurn)子程序返回指令格式:RETRET EXP /带立即数返回注:子程序返回指令RET放在子程序末尾,它使子程序在执行完全部任务后返回主程序继续执行被打断后的程序。返回地址在子程序调用时入栈保存的断点地址-IP或IP和CS.中断指令.INT指令格式:INT TYPE或INT执行的操作:(SP)<-(SP)-2(SP)+1,(SP)<-(PSW)(
53、SP)<-(SP)-2(SP)+1,(SP)<-(CS)(SP)<-(SP)-2(SP)+1,(SP)<-(IP)(IP)<-(TYPE*4)(CS)<-(TYPE*4+2).INTO 若溢出则中断执行的操作:若OF=1则:(SP)<-(SP)-2(SP)+1,(SP)<-(PSW)(SP)<-(SP)-2(SP)+1,(SP)<-(CS)(SP)<-(SP)-2(SP)+1,(SP)<-(IP)(IP)<-(10H)(CS)<-(12H).IRET 从中断返回指令格式:IRET执行的操作:(IP)<-(
54、SP)+1,(SP)(SP)<-(SP)+2(CS)<-(SP)+1,(SP)(SP)<-(SP)+2(PSW)<-(SP)+1,(SP)(SP)<-(SP)+2处理机控制指令一标志处理指令指令英文全拼翻译CLCClear carry进位位置0指令CF<-0CMCComplement carry进位位求反指令CF<-CFSTCSet carry进位位置1指令CF<-1CLDClear direction方向标志置0指令DF<-0STDSet direction方向标志置1指令DF<-1CLIClear interrupt中断标志置0指令IF<-0STISet interrupt中断标志置1指令IF<-0二其他处理机控制指令指令英文全拼翻译NOPNo Opreation无操作HLTHalt停机WAITWait等待E
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年国家电投广西核电社会招聘笔试参考题库含答案解析
- 2025年江西鹰潭市文旅投集团招聘笔试参考题库含答案解析
- 2025年湘潭城乡建设发展集团招聘笔试参考题库含答案解析
- 2025年湖北新华书店有限公司招聘笔试参考题库含答案解析
- 2025年福建宁德市福鼎市融媒文化投资发展有限公司招聘笔试参考题库附带答案详解
- 2025年浙江宁波市奉化区城市投资发展集团有限公司招聘笔试参考题库附带答案详解
- 停车场收费委托管理协议
- 政府与展览公司合作协议
- 二零二五年度大数据分析与咨询服务合同(GF-2025)2篇
- 二零二五年度气象能源开发利用合作协议2篇
- 领导学 课件全套 孙健 第1-9章 领导要素- 领导力开发
- 2024-2025学年七年级上学期语文期末考前押题卷(统编版2024+含答案)
- 土建定额培训课件
- ISO 56001-2024《创新管理体系-要求》专业解读与应用实践指导材料之13:“6策划-6.2创新目标及其实现的策划”(雷泽佳编制-2025B0)
- 2024年保护环境的建议书范文(33篇)
- 退休人员公益活动合作合同
- 四年级数学(四则混合运算带括号)计算题专项练习与答案
- 急诊创伤疼痛护理
- 2022年期货从业资格《期货基础知识》考试题库(含典型题)
- 浙江省湖州市2023-2024学年高二上学期期末调研测试数学试题 含解析
- 浙江省杭州市萧山区2023-2024学年高二上学期1月期末考试物理试题(含答案)
评论
0/150
提交评论