微机原理 指令大全
- 格式:doc
- 大小:25.00 KB
- 文档页数:2
条件转移指令指令助记符转移条件含义无符号数条件转移指令JA/JNBE CF=ZF=0 高于,转移/不低于或等于,转移JAE/JNB CF=0 高于或等于,转移/不低于,转移JB/JNAE CF=1 低于,转移/不高于或等于,转移JBE/JNA CF=1或ZF=1 低于或等于,转移/不高于,转移JE/JZ ZF=1 等于,转移/为零,转移JNE/JNZ ZF=0 不等于,转移/ 不为零,转移有符号数条件转移指令JE/JZ ZF=1 等于,转移/为零,转移JG/JNLE ZF=0或SF=OF 大于,转移/不小于或等于,转移JGE/JNL SF=OF 大于或等于,转移/不小于,转移JL/JNGE SF≠OF 小于,转移/不大于或等于,转移JLE/JNG ZF=1或SF≠OF 小于或等于,转移/不大于,转移JNE/JNZ ZF=0 不等于,转移/ 不为零,转移其他条件转移指令JB/JC CF=1 有借/进位,转移JNC CF=0 无进位,转移JNO OF=0 无溢出,转移JNP/JPO PF=0 无奇偶校验,转移/奇校验,转移JNS SF=0 无符号,转移JO OF1 溢出,转移JP/JPE PF=1 有奇偶校验,转移/偶校验,转移JS SF=1 有符号,转移JCXZ (CX)=0 CX寄存器为0,转移标志位操作指令指令名指令格式功能说明清进位指令CLC 清进位标志CF(CF←0)置进位指令STC 置进位标志(CF←1)进位取反指令CMC 进位标志取反(CF←/CF)清方向标志指令CLD 清方向标志(DF←0),使所有串指令的标识指针为增量置方向标志指令STD 置方向标志(DF←1),使所有串指令的标识指针为减量关中断指令CLI 清中断允许标志(IF←0),禁止CPU响应外部可屏蔽中断开中断指令STI 置中断允许标志(IF←1),允许CPU响应外部可屏蔽中断条件设置字节指令指令助记符设置条件指令条件说明SETC/SETB/SETNAE CF=1 有进位/低于/不高于或等于SETNC/SETAE/SETNB CF=0 无进位/高于或等于/不低于SETO OF=1 溢出SETNO OF=0 无溢出SETP/SETPE PF=1 校验为偶SETNP/SETPO PF=0 校验为奇SETS SF=1 为负数SETNS SF=0 为正数SETA/SETNBE CF=ZF=0 高于/不低于或等于SETBE/SETNA CF=1或ZF=1 低于或等于/不高于SETE/SETZ ZF=1 等于/为零SETNE/SETNZ ZF=0 不等于/非零SETG/SETNLE ZF=1或SF=OF 大于/不小于或等于SETGE/SETNL SF=OF 大于或等于/不小于SETL/SETNGE SF≠OF 小于/不大于或等于SETLE/SETNG ZF=1或SF≠OF 小于或等于/不大于系统寄存器装入与存储指令指令名指令格式功能装入CR指令MOV CR n,32位通用寄存器CR n←(32位通用寄存器),n=0,2,3,4存储CR指令MOV 32位通用寄存器,CR n32位通用寄存器←(CRn),n=0,2,3,4装入DR指令MOV DR n,32位通用寄存器DR n←(32位通用寄存器),n=0~7存储DR指令MOV 32位通用寄存器,DR n32位通用寄存器←(DR n),n=0~7读模型专用寄存器RDMSR EDX:EAX←(MSR), ECX指定寄存器号00H~13H 写模型专用寄存器WRMSR MSR←(EDX:EAX), ECX指定寄存器号00H~13H 装入机器状态字LMSW 源操作数MSW←(源操作数)存储机器状态字SMSW 目的操作数目的操作数←(MSW)装入GDTR/IDTR LGDT/LIDT 存储器GDTR/IDTR←(存储器)存储GDTR/IDTR SGDT/SIDT 存储器存储器←(GDTR)/(IDTR)装入LDTR LLDT 源操作数LDTR←(源操作数)存储LDTR SLDT 目的操作数目的操作数←(LDTR)装入任务寄存器LTR 源操作数TR←(源操作数)存储任务寄存器STR 目的操作数目的操作数←(TR)外同步和空操作指令类别指令格式功能外同步HLT 使CPU停止程序执行,进入暂停状态。
一、数据传输指令它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据。
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 标志出栈.PUSHD 32位标志入栈.POPD 32位标志出栈.二、算术运算指令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次.移位一次时, 可直接用操作码. 如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时,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>循环控制指令(短转移)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 程序结束.七、处理机控制指令:标志处理指令CLC(进位位置0指令)CMC(进位位求反指令)STC(进位位置为1指令)CLD(方向标志置1指令)STD(方向标志位置1指令)CLI(中断标志置0指令)STI(中断标志置1指令)NOP(无操作)HLT(停机)WAIT(等待)ESC(换码)LOCK(封锁)。
类别指令类型指令名称指令缩写指令功能影响标志格式格式含义源操作数目的操作数传送指令通用传输指令基本传输指令MOV将源操作数中的数据传送至目的操作数,以实现寄存器与寄存器、寄存器与存储器之间数据传送以及立即数送往寄存器或存储器无1.MOV WORD PTR [2000],AX将AX送2000和2001单元(低位在低地址,高位在高地址,下同)至少有一个是寄存器(除立即数送存储器外);不能在两个存储单元之间直接传送数据;不能在两个段寄存器之间直接传送数据;不能将立即数直接送至段寄存器;SS和SP赋值必须紧邻指令指针IP既不作目的操作数也不做源操作数2.MOV AX,ES:[BX+SI+50]将ES段(BX+SI+50)字单元内容送AX3.MOV SS,BX 将BX内容送SS4.MOV ES,SS:[DI+200]将SS段(DI+200)字单元内容送ES5.MOV BX,CX 将CS内容送BX6.MOV WORD PTR[BX+DI],SS将SS内容送(BX+DI)字单元CS不能作目的操作数;立即数不能作目的操作数7.MOV CL,DH 将DH内容送CL8.MOV DI,[SI+100]将(SI+100)字单元内容送DI9.MOV WORD PTR [DI],DX将DX内容送(DI)字单元10.MOV CX,3330 立即数3330送微机原理指令整理 1微机原理指令整理2CX11.MOV BYTE PTR [DI],0立即数0送(DI)字节单元 堆栈操作指令PUSH将来自通用寄存器、段寄存器或存储单元的一个字(16位)内容压入堆栈(SP 指向的栈顶个单元)无1.PUSH AX AX 内容进栈 通用寄存器、段寄存器、存储单元的一个字CS 不能作目的操作数; 2.PUSH SISI 内容进栈 3.PUSH ESES 内容进栈 4.PUSH CSCS 内容进栈 5.PUSH WORD PTR [BX](BX)和(BX+1)单元内容进栈6.PUSH WORD PTR BETA [BX] (BX+BETA)字单元内容进栈 不能使用8位源或目的操作数 POP将栈顶个单元的内容退出(弹出)到通用寄存器、段寄存器或存储单元无1.POP BX栈顶2个字节出栈到BX 不能使用8位源或目的操作数 2.POP DX 栈顶2个字节出栈到DX 通用寄存器、段寄存器、存储单元的一个字节;CS 不能作目的操作数3.POP ES栈顶2个字节出栈到ES 4.POP SS栈顶2个字节出栈到SS 5.POP [BX+50]栈顶2个字节出栈到(BX+50)字单元6.POP [BP+DI]栈顶2个字节出栈到(BP+DI )字单元交换指令XCHG 实现数据宽度相同的源操作数与目的操作数之间的数据交换,亦即同为8位或16位的累加器与寄存器、寄存器与寄存器以及寄存器与存储单元之间的数据交换无1.XCHG AL,BLAL与BL之间字节交换段寄存器、CS、IP、立即数不能作为源或目的操作数;两个存储单元之间、段寄存器与段寄存器之间不能进行交换2.XCHG CX,AXCX与AX之间字交换3.XCHG DH,CLDH与CL之间字节交换4.XCHG BX,CXBX与CX之间字交换5.XCHG BL,[1000]BL与1000单元内容字节交换6.XCHG WORD PTR [DI],DX(DI)字单元内容与DX字交换专用累加器传送指令换码指令XLAT专门使用累加器AL并将其中的值(比如按二进制、十进制或十六进制等编码)变换成内存某一表格区内对应的另一种编码(比如发光二极管LED的字形码或其他通讯码等)无MOV BX,TABLE_SEGCODEXLAT设置SEGCODE表首址对表进行检索有操作码,无操作数。
基本传送指令MOV reg/mem, imm MOV reg/mem/seg, regMOV reg/seg, mem MOV reg/mem, seg入栈指令PUSH MEM/REG PUSH SEG出栈指令POP MEM/REG POP SEG交换指令:XCHG REG,MEM/REG查表指令:XLAT SRC_Table;(AL)←((BX)+(AL))端口输入指令IN AL,n IN AX,nIN AL,DX IN AX,DX端口输出指令OUT n,AL OUT n,AXOUT DX,AL OUT DX,AX取有效地址指令:LEA REG,MEM地址指针装入DS:LDS REG,MEM地址指针装入ES:LES REG,MEM标志装入AH指令:LAHF设置标志指令:SAHF标志入堆栈指令:PUSHF标志出堆栈指令:POPF不带进(借)位的加减法指令:ADD 目标,源;SUB 目标,源;带进(借)位的加减法指令:ADC 目标,源SBB 目标,源加法调整指令:非压缩BCD码-----AAA压缩BCD码-----DAA减法调整指令:非压缩BCD码-----AAS压缩BCD码-----DAS加1/减1指令INC/DEC 目标求补指令:NEG 目标比较指令:CMP 目标,源CWB:将AL的符号位扩展到AH中;CWD:将AX的符号位扩展到DX中;非指令:NOT 目标与指令:AND 目标,源或指令:OR 目标,源异或指令:XOR 目标,源逻辑测试指令:TEST 目标,源逻辑左移指令:SHL reg/mem,1/CL逻辑右移指令:SHR reg/mem,1/CL算术左移指令:SAL reg/mem,1/CL算术右移指令:SAR reg/mem,1/CL小循环左移:ROL REG/MEM,CNT小循环右移:ROR REG/MEM,CNT大循环左移:RCL REG/MEM,CNT大循环右移:RCR REG/MEM,CNT字符串传送指令MOVSB;[DS:SI] →[ES:DI],并修改指针SI=SI+1,DI=DI+1 (DF=0);SI=SI-1,DI=DI-1 (DF=1)MOVSW;[DS:SI] →[ES:DI],修改指针同上字符串比较指令CMPSB;[ES:DI]-[DS:SI] →FLAGS CMPSW;[ES:DI]-[DS:SI]→FLAGS,修改指针同上字符串搜索SCASB;AL—[ES:DI] →FLAGSSCASW;AX—[ES:DI] →FLAGS,修改指针同上字符串装入LODSB;[DS:SI] →ALLODSW;[DS:SI] →AX,修改指针同上字符串转储STOSB;[ES:DI] ←ALSTOSW;[ES:DI]←A X,修改指针同上重复前缀指令REP 重复执行其后的字符串指令,直到CX=0 REPE/ERPZ 当相等/为零时重复执行其后的字符串指令REPNE/REPNZ 当不相等/不为零时重复执行其后的字符串指令无条件转移指令:JMP XUL无符号数比较后根据其比较结果形成的条件转移指令JA/JNBE; 若目的操作数>源操作数则转移JAE/JNB; 若目的操作数≥源操作数则转移JB/JNAE; 若目的操作数< 源操作数则转移JBE/JNA; 若目的操作数≤源操作数则转移两个带符号数比较后根据其比较结果形成条件转移指令JG/JNLE; 若目的操作数>源操作数则转移JGE/JNL; 若目的操作数≥源操作数则转移JL/JNGE; 若目的操作数< 源操作数则转移JLE/JNG; 若目的操作数≤源操作数则转移根据CF、ZF、SF、OF、PF的状态形成的条件转移指令JE/JZ; ZF=1,结果为零时,转移JNE/JNZ;ZF=0,结果不为零时,转移JC;CF=1,有借(进)位,转移JNC;CF=0,无借(进)位,转移JO;OF=1,有溢出(带符号数)转移JNO;OF=0,无溢出(带符号数)转移JP/JPE;PF=1,结果为偶数个1转移JNP/JPO;PF=0,结果为奇数个1转移JS;SF=1,最高位为1转移JNS;SF=0,最高位为0转移循环指令LOOP;CX—1 →CX,若C X≠0循环LOOPZ/LOOPE;CX—1 →CX,若C X≠0且ZF=1循环LOOPNZ/LOOPNE;CX—1 →CX,若C X≠0且ZF=0循环JCXZ;若C X=0转移中断返回指令:IRET;进位标志清零指令:CLC进位标志置1指令:STC。
1:通用数据传送MOV dest, src1不改FR 2 CS IP非目的3段非段4立非段5内非内 6 立非目7位一致2:进栈PUSH OPRD3:出栈POP OPRD4:标志进栈PUSHF5:标志出栈POPF6:交换XCHG dest, src7:有效地址传送LEA dest, src8:全地址指针传送(数据)LDS dest, src9:全地址指针传送(附加)LES dest, src10:查表XLAT11:直接输入IN AL/AX, PORT12:间接输入IN AL/AX, PORT13:直接输出OUT AL/AX, PORT14:间接输出OUT AL/AX, PORT15:基本加法ADD dest, scr16:带进位加法ADC dest, scr17:自动加1 INC dest18:基本减法SUB dest, scr19:带借位减法SBB dest, scr20:自动减一DEC dest21:比较CMP dest, scr22:取负NEG dest23:非组合BCD码加法调整AAA24:组合BCD码加法调整DAA25:非组合BCD码减法调整AAS26:组合BCD码减法调整DAS27:无符号乘法MUL dest28:有符号乘法IMUL dest29:无符号除法DIV dest30:有符号除法IDIV dest31:字节数据符号扩展CWB32:字数据符号扩展CWD33:非组合BCD码乘法调整AAM34:非组合BCD码除法调整AAD35:逻辑非NOT dest36:逻辑与AND dest37:测试TEST dest, src38:逻辑或OR dest, scr39:逻辑异或XOR dest, scr40:逻辑移位SHL dest, 1/CL41:逻辑右移SHR dest, 1/CL42:算术左移SAL dest, 1/CL43:算术右移SAR dest, 1/CL44:循环左移ROL dest, 1/CL45:循环右移ROR dest, 1/CL46:带进位循环左移RCL dest, 1/CL47:带进位循环右移RCR dest, 1/CL48:串传送MOVSB/SW49:串重复操作前缀REP REP MOVSB/MOVSW50:数据串比较CMPSB/CMPSW51:串重复操作前缀REPZ/REPE CMPSB/CMPSW52:串重复操作前缀REPNZ/REPNE CMPSB/CMPSW53:读数据串LODSB/LODSW54:写数据串STOSB/STOSW55:数据串检索SCASB/SCASW56:无条件段内直接转移JMP LABLE57:无条件段内间接转移JMP dest58:无条件段间直接转移JMP LAB59:无条件段间间接转移JMP dest60:段内直接过程调用CALL 子过程名61:段内间接过程调用CALL dest62:段间直接调用CALL 子过程名63:段间间接调用CALL dest64:过程返回RET65:带立即数返回RET n66:判断单一标志位置转移Jx rel67:判断单一标志位复位JNx rel68:LOOP指令LOOP 语句标号69:LOOPE/LOOPZ指令LOOPE/LOOPZ 语句标号70:LOOPNE/LOOPN指令LOOPNE/LOOPNZ 语句标号71:JCXZ JCXZ 语句标号72:标志位操作表73:处理器暂停HLT74:处理器交权ESC75:等待WAIT76:总线封锁LOCK77:空操作NOP78:段定义伪指令段名SEGMENT <定义类型><组合类型><类别>…段体…段名ENDS79:段寻址伪指令ASSUME 段寄存器名:段名<,…段寄存器名:段名>80:过程定义伪指令过程名PROC<类型>…过程体语句…RET过程名ENDP81:汇编结束伪指令END 地址表达式82:字节定义语句变量名DB 操作数[ … , 操作数] 83:字定义语句变量名DW 操作数[ … , 操作数] 84:等值伪指令符号EQU 表达式85:等号伪指令符号= 表达式86:类型定义语句名字LABEL 类型87:定位伪指令ORG 常用表达式88:地址计数器$89:宏定义语句宏名MACRO…(语句段)…ENDM90:带参数的宏定义语句宏名MACRO 参数1[ , 参数2,…]…(语句段)…ENDM91:宏标号定义语句LOCAL 标号[, 标号2, …]。
1) ADD 加法指令汇编格式:ADD 目的操作数,源操作数执行的操作:(目的操作数)←源操作数+目的操作数2) ADC 带进位加法指令汇编格式:ADC 目的操作数,源操作数执行的操作:(目的操作数)←源操作数+目的操作数+CF3) INC 增量指令汇编格式:INC 操作数执行的操作:(操作数)←操作数+1PS:以上三条指令都可作字或字节运算,除INC指令不影响CF标志位外,其他标志位都受指令操作结果的影响。
4) SUB 减法指令汇编格式:SUB 目的操作数,源操作数执行的操作:(目的操作数)←目的操作数-源操作数5) SBB 带借位减法指令汇编格式:SBB 目的操作数,源操作数执行的操作:(目的操作数)←目的操作数-源操作数-CF6) DEC 减量指令汇编格式:DEC 操作数执行的操作:(操作数)←操作数-17) NEG 求补指令汇编格式:NEG 操作数执行的操作:(操作数)←0-操作数8) CMP比较指令汇编格式:CMP 目的操作数,源操作数执行的操作:目的操作数-源操作数。
PS:以上五条指令都可作字或字节运算。
另外,除DEC指令不影响CF标志位外,其他指令都对标志位有影响。
9) MUL 无符号数乘法指令汇编格式:MUL 源操作数执行的操作:假设为字节操作(AX)←(AL)×源操作数假设为字操作(DX), (AX)←(AX)×源操作数10) IMUL 有符号数乘法指令汇编格式:IMUL 源操作数执行的操作:与MUL一样,只是处理的数据是有符号数,而MUL处理的数据是无符号数。
11) DIV 无符号数除法指令汇编格式:DIV 源操作数执行的操作:假设为字节操作:(AL)←(AX)/源操作数的商(AH)←(AX)/源操作数的余数假设为字操作:(AX)←(DX、AX)/源操作数的商(DX)←(DX、AX)/源操作数的余数商和余数均为无符号数。
12) IDIV 有符号数除法指令汇编格式:IDIV 源操作数执行的操作:与DIV一样,只是操作数是有符号数,商和余数均为有符号数,余数符号同被除数符号。
我现将指令系统中各种助记符的英文全名写出来,各种助记符的记忆就会变得很简单o(∩_∩)o...在这之前,先说一下寄存器:数据寄存器分为:AH&AL=AX(accumulator):累加寄存器,常用于运算;在乘除等指令中指定用来存放操作数,另外,所有的I/O指令都使用这一寄存器与外界设备传送数据.BH&BL=BX(base):基址寄存器,常用于地址索引;CH&CL=CX(count):计数寄存器,常用于计数;常用于保存计算值,如在移位指令,循环(loop)和串处理指令中用作隐含的计数器.DH&DL=DX(data):数据寄存器,常用于数据传递。
他们的特点是,这4个16位的寄存器可以分为高8位: AH, BH, CH, DH.以及低八位:AL,BL,CL,DL。
这2组8位寄存器可以分别寻址,并单独使用。
另一组是指针寄存器和变址寄存器,包括:SP(Stack Pointer):堆栈指针,与SS配合使用,可指向目前的堆栈位置;BP(Base Pointer):基址指针寄存器,可用作SS的一个相对基址位置;SI(Source Index):源变址寄存器可用来存放相对于DS段之源变址指针;DI(Destination Index):目的变址寄存器,可用来存放相对于ES 段之目的变址指针。
指令指针IP(Instruction Pointer)标志寄存器FR(Flag Register)OF(overflow flag)DF(direction flag)CF(carrier flag)PF(parity flag)AF(auxiliary flag)ZF(zero flag)SF(sign flag)IF(interrupt flag)TF(trap flag)(Segment Register)段寄存器.为了运用所有的内存空间,8086设定了四个段寄存器,专门用来保存段地址:CS(Code Segment):代码段寄存器;DS(Data Segment):数据段寄存器;堆栈段寄存器;(Stack Segment):SSES(Extra Segment):附加段寄存器。
1.内部数据传送指令:(1)以累加器A为目的操作数的指令功能:将源操作数指定的内容送入累加器A。
MOV A , Rn ; A ←(Rn)MOV A , direct ; A ←(direct)MOV A , @Ri ; A ←((Ri))MOV A , # data ; A ← data(2)以Rn为目的操作数的指令功能:将源操作数所指定的内容送入当前工作寄存器R0 ~R7中。
MOV Rn , A ; Rn ← (A)MOV Rn , direct ; Rn ←(direct)MOV Rn , # data ; Rn ← data(3)以直接地址为目的操作数的指令功能:将源操作数所指定的内容送入由直接地址指出的片内RAM单元。
MOV direct , A ; (direct)← (A)MOV direct , Rn ; (direct) ← (Rn)MOV direct , direct ; (direct) ← (direct)MOV direct , @Ri ; (direct) ←((Ri))MOV direct , # data ; (direct) ← data4)以间接地址为目的操作数的指令功能:将源操作数所指定的内容送入R0/R1所指向片内RAM的存储单元中。
MOV @Ri , A ; (Ri) ← (A)MOV @Ri , direct ; (Ri) ← (direct)MOV @Ri , # data ; (Ri) ← data(5)16位数据传送指令唯一的一条16位立即数传送指令。
功能:将16位二进制的立即数送入数据指针DPTR中。
其中高8位送入DPH,低8位送入DPL。
MOV DPTR , # data162.外部数据传送指令MOVX A,@RiMOVX A,@DPTRMOVX @Ri,AMOVX @DPTR,A3.堆栈操作指令压栈指令:将direct中的内容送入堆栈中PUSH direct ;SP←(SP)+1,(SP)←(direct)出栈指令:将堆栈中的内容送回到direct中POP direct ; (direct) ← (SP), SP←(SP)-14.查表指令MOVC A,@A+DPTR;A←((A)+(DPTR))MOVC A,@A+PC ;PC ← (PC)+1, A←((A)+(PC))5.交换指令XCH A,Rn ;(A)←→(Rn)XCH A,direct ;(A)←→(direct)XCH A,@Ri ;(A)←→((Ri))XCHD A,@Ri ;(A0~3)←→((Ri)0~3)SWAP A ;(A0~3)←→(A4~7)6.逻辑操作类指令:逻辑“与”指令ANL逻辑“或”指令ORL逻辑“异或”指令XRL累加器A的清零和取反CLR CPL7.控制转移类指令长转移指令LJMP 标号绝对转移指令AJMP 标号短(相对)转移指令SJMP 标号间接转移指令JMP @A+DPTR8.累加器A的移位指令循环左移RL A ;循环右移RR A ;带进位位循环左移RLC A ;带进位位循环右移RRC A9.条件转移指令累加器判零转移指令JZ 标号JNZ 标号比较不等转移指令CJNE A, #data, 标号CJNE A, direct, 标号CJNE Rn, #data,标号CJNE @Ri, #data,标号减1不为零(循环)转移指令DJNZ Rn,标号DJNZ direct, 标号。
微机原理指令大全微机原理是计算机专业的一门重要课程,它主要研究计算机系统的基本组成和工作原理。
在微机原理课程中,指令是一个非常重要的概念,它是计算机能够理解和执行的基本操作命令。
本文将对微机原理中常见的指令进行详细介绍,帮助读者更好地理解和掌握这一知识点。
1. 数据传送指令。
数据传送指令是微机中最基本的指令之一,它用于将数据从一个位置传送到另一个位置。
常见的数据传送指令包括MOV、LDM、STM等。
MOV指令用于将数据从一个存储单元传送到另一个存储单元,LDM指令用于将数据从内存中加载到寄存器中,STM指令用于将数据从寄存器中存储到内存中。
这些指令在程序设计中应用广泛,是程序运行过程中不可或缺的一部分。
2. 算术运算指令。
算术运算指令用于对数据进行加减乘除等算术运算,常见的算术运算指令包括ADD、SUB、MUL、DIV等。
ADD指令用于将两个操作数相加,SUB指令用于将一个操作数减去另一个操作数,MUL指令用于将两个操作数相乘,DIV指令用于将一个操作数除以另一个操作数。
这些指令在编程中经常用到,能够实现各种复杂的算术运算。
3. 逻辑运算指令。
逻辑运算指令用于对数据进行逻辑运算,常见的逻辑运算指令包括AND、OR、NOT、XOR等。
AND指令用于对两个操作数进行与运算,OR指令用于对两个操作数进行或运算,NOT指令用于对操作数进行取反运算,XOR指令用于对两个操作数进行异或运算。
这些指令在逻辑判断和条件控制中起着重要作用,能够实现各种复杂的逻辑运算。
4. 控制转移指令。
控制转移指令用于改变程序的执行顺序,常见的控制转移指令包括JMP、CALL、RET、JZ、JNZ等。
JMP指令用于无条件跳转到指定的地址,CALL指令用于调用子程序,RET指令用于从子程序返回,JZ指令用于在零标志位为真时跳转,JNZ指令用于在零标志位为假时跳转。
这些指令在程序的控制流程中起着关键作用,能够实现复杂的程序控制逻辑。
MOV(MOVe)传送指令P86
PUSH 入栈指令P86
POP 出栈指令P87
XCHG(eXCHanG)交换指令P88
XLAT(TRANSLATE)换码指令P89
LEA (Load Effective Address)有效地址送寄存器指令P89 LDS(Load DS with pointer)指针送寄存器和DS指令P90 LES(Load ES with pointer)指针送寄存器和ES指令P90 LAHF(Load AH with Flags)标志位送AH指令P91
SAHF(Store AH into Flgs)AH送标志寄存器指令P91 PUSHF(PUSH the Flags)标志进栈指令P91
POPF(POP the Flags)标志出栈指令P91
ADD 加法指令P92
ADC 带进位加法指令P92
INC 加1指令P92
SUB(SUBtract)不带借位的减法指令P93
SBB(SuVtrach with borrow)带借位的减法指令P93
DEC(DECrement)减1指领P93
NEG(NEGate)求补指令P93
CMP(CoMPare)比较指令P93
MUL(unsinged MULtiple)无符号数乘法指令P93
IMUL(sIgned MUL tiple)有符号数乘法指令P93
DIV(unsigned DIVide)无符号数除法指令P94
IDIV(sIgned DIVide)有符号数除法指令P94
CBW(Count Byte to Word)字节转换为字指令P94
CWD(Count Word to Doble word)字转换为双字指令P94 DAA 压缩的BCD码加法十进制调整指令P95
DAS 压缩的BCD码减法十进制调整指令P95
AAA 非压缩的BCD码加法十进制调整指令P95
AAS 非压缩的BCD码加法十进制调整指令P95 AAM,AAD AND 逻辑与指令P96
OR 逻辑或指令P96
XOR 逻辑异或指令P96
NOT 逻辑非指令P96
TEST 测试指令P96
SHL(SHift logical Letf)逻辑左移指令P97
SHR(SHift logical Right)逻辑右移指令P97
SAL
SAR
ROL(Rotate Left )循环左移指令P98
ROR(Rotate Right)循环右移指令P98
RCL(Rotate Left through Carry)带进位循环左移P98
RCR(Rotate Right through Carry)带进位循环左移P98 MOVS(MOVe String)串传送指令P100
STOS(STOre into String)存入串指令P102
LODS(LOad from string)从串取指令P102
REP(REPeat)重复操作前缀P99
CLD(CLear Direction flag)清除方向标志指令107
STD(SeT Direction flag)设置方向标志指令107
CMPS(CoMPare String)串比较指令100
SCAS(SCAn String)串扫描指令101
REPE/REPZ(REPeat while Equal/Zero)相等/为零时重复操作前缀99
REPNE/REPNZ(REPeat while Not Equal/Zero)不相等/不为零进重复前缀99
IN(INput)输入指令88
OUT(OUTput)输出指令88
JMP(JuMP)无条件转移指令103
JZ,JNZ,JS,JNS,JO,JNO,JP,JNP,JB,JNB,JBE,JNBE,JL,JNL,JLE,JNLE,JCXZ 条件转移指令103
LOOP 循环指令105
LOOPZ/LOOPE 为零/相等时循环指令105
LOOPNZ/LOOPNE 不为零/不相等时循环指令105
CALL 子程序调用指令106
RET(RETun)子程序返回指令106
CLC(CLear Carry)进位位置0指令107
CMC(CoMplement Carry)进位位求反指令107
SRC(SeT Carry)进位位置1指令
NOP(No OPeretion)无操作指令107
HLT(HaLT)停机指令107
OFFSET 返回偏移地址141
SEG 返回段地址141 TYPE SIZE LENGTH 142
EQU(=) 等值语句128
PURGE 解除语句128
DUP 操作数字段用复制操作符127
SEGMENT,ENDS 段定义指令129
ASSUME 段地址分配指令130
ORG 起始偏移地址设置指令132
$ 地址计数器的当前值
PROC,ENDP 过程定义语句131
NAME,TITLE,END 程序开始结束语句131,132
MACRO,ENDM 宏定义指令147
STRUC,ENDS 133
PUBLIC,EXTRN 136
EVEN 138
MOD 139
IF, END IF 138
EQ, NE,LT,GT,LE,GE 140
THIS SHORT HIGH LOW 144
INT 20H INT 21H 153。