微机原理指令集合
微机原理中部分指令列表汇总
条件转移指令指令助记符转移条件含义无符号数条件转移指令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(MOVe)传送指令P86PUSH入栈指令P86POP出栈指令P87XCHG(eXCHanG)交换指令P88XLAT(TRANSLATE)换码指令P89LEA (Load Effective Address)有效地址送寄存器指令P89 LDS(Load DS with pointer)指针送寄存器和DS指令P90 LES(Load ES with pointer)指针送寄存器和ES指令P90 LAHF(Load AH with Flags)标志位送AH指令P91SAHF(Store AH into Flgs) AH送标志寄存器指令P91 PUSHF(PUSH the Flags)标志进栈指令P91POPF(POP the Flags)标志出栈指令P91ADD加法指令P92ADC带进位加法指令P92INC加1指令P92SUB(SUBtract)不带借位的减法指令P93SBB(SuVtrach with borrow)带借位的减法指令P93DEC(DECrement)减1指领P93NEG(NEGate)求补指令P93CMP(CoMPare)比较指令P93MUL(unsinged MULtiple)无符号数乘法指令P93IMUL(sIgned MUL tiple)有符号数乘法指令P93DIV(unsigned DIVide)无符号数除法指令P94IDIV(sIgned DIVide)有符号数除法指令P94CBW(Count Byte to Word)字节转换为字指令P94CWD(Count Word to Doble word)字转换为双字指令P94 DAA压缩的BCD码加法十进制调整指令P95DAS压缩的BCD码减法十进制调整指令P95AAA非压缩的BCD码加法十进制调整指令P95AAS非压缩的BCD码加法十进制调整指令P95 AAM,AAD AND逻辑与指令P96OR逻辑或指令P96XOR逻辑异或指令P96NOT逻辑非指令P96TEST测试指令P96SHL(SHift logical Letf)逻辑左移指令P97SHR(SHift logical Right)逻辑右移指令P97SALSARROL(Rotate Left )循环左移指令P98ROR(Rotate Right)循环右移指令P98RCL(Rotate Left through Carry)带进位循环左移P98 RCR(Rotate Right through Carry)带进位循环左移P98 MOVS(MOVe String)串传送指令P100STOS(STOre into String)存入串指令P102LODS(LOad from string)从串取指令P102REP(REPeat)重复操作前缀P99CLD(CLear Direction flag)清除方向标志指令107STD(SeT Direction flag)设置方向标志指令107CMPS(CoMPare String)串比较指令100SCAS(SCAn String)串扫描指令101REPE/REPZ(REPeat while Equal/Zero)相等/为零时重复操作前缀99REPNE/REPNZ(REPeat while Not Equal/Zero)不相等/不为零进重复前缀99IN(INput)输入指令88OUT(OUTput)输出指令88JMP(JuMP)无条件转移指令103JZ,JNZ,JS,JNS,JO,JNO,JP,JNP,JB,JNB,JBE,JNBE,JL,JNL,JLE,JNLE,JCXZ条件转移指令103LOOP循环指令105LOOPZ/LOOPE为零/相等时循环指令105LOOPNZ/LOOPNE不为零/不相等时循环指令105CALL子程序调用指令106RET(RETun)子程序返回指令106CLC(CLear Carry)进位位置0指令107CMC(CoMplement Carry)进位位求反指令107SRC(SeT Carry)进位位置1指令NOP(No OPeretion)无操作指令 107HLT(HaLT)停机指令107OFFSET返回偏移地址 141SEG返回段地址141 TYPE SIZE LENGTH 142EQU(=)等值语句128PURGE解除语句128DUP操作数字段用复制操作符127SEGMENT,ENDS段定义指令129ASSUME段地址分配指令130ORG起始偏移地址设置指令132$地址计数器的当前值PROC,ENDP过程定义语句131NAME,TITLE,END程序开始结束语句131,132MACRO,ENDM宏定义指令147STRUC,ENDS 133PUBLIC,EXTRN 136EVEN 138MOD 139IF, END IF 138EQ, NE,LT,GT,LE,GE 140THIS SHORT HIGH LOW 144INT 20H INT 21H 153Welcome 欢迎您的下载,资料仅供参考!。
32位微机原理指令汇总
注意:::红笔写的为根据课本该写的,可能有错!!!一、数据传输指令作用:它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.1. 通用数据传送指令.MOV 传送字或字节.MOVSX 先符号扩展,再传送.MOVZX 先零扩展,再传送.PUSH 把字压入堆栈.POP 把字弹出堆栈.PUSH把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈. PUSHA 把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 )一测试无符号整数运算的结果(标志C和Z).JA/JNBE 不小于或不等于时转移.JAE/JNB 大于或等于或者进位为0转移.JB/JNAE 小于等于或者进位为1转移.JBE/JNA 小于或等于转移.二测试带符号整数运算的结果(标志S,O和Z).JG/JNLE 大于转移.JGE/JNL 大于或等于转移.JL/JNGE 小于转移.JLE/JNG 小于或等于转移.三根据单个条件标志位转移的条件转移指令。
微机原理指令表和解释
LODSB;(字节传送)AL DS:[SI] SI [SI+-1]
LODSW;(字传送)AL DS:[SI] SI [SI+-2]
存串指令
STOSB;(字节传送)ES:[DI] AL DI [DI+-1]
STOSW;(字传送)ES:[DI] AX DI [DI+-2]
串比较指令
CMPSB;(字节传送)DS:[SI]- ES:[DI] SI [SI+-1] DI [DI+-1]
空操作指令nop做空操作用于延时暂停指令hlt程序暂停执行等待指令waitcpu引脚为高电平时执行封锁指令lock总线封锁cpu独占总线指令交权指令esc
1.传送类指令
MOV DEST,SRC;DEST(除CS)SRC
2.交换指令
XCHG DEST,SRC;DEST(寄存器)SRC
3.堆栈操作指令
PUCH SRC;SP SP-2将16位源操作数压入堆栈
AAA;加法运算十进制调整
AAS;减法运算十进制调整
10.逻辑指令
AND DEST,SRC;DEST DEST&&SRC
OR DEST,SRC;DEST DEST||SRC
NOT DEST;NOT!NOT
XOR DEST,SRC;DESTDEST异或SRC
测试指令
TEST DEST,SRC;将DEST&&SRC结果不送回DEST
REPNZ;每执行依次串指令CX(CX)-1 CX=0或ZF=1重复执行结束
14.无条件转移类指令
JMP DEST;无条件转移到DEST所指定的地址
15.循环指令
LOOP DEST;CXCX)-1直至CX=0结束循环
微机原理指令小结
8086CPU指令小结所有指令:(1)立即数不能作为目的操作数。
(2)不能在2个存储单元之间直接进行操作(串操作除外)。
(3)MOV指令和堆栈指令是惟一能对段寄存器进行操作的指令。
(4)源和目的操作数的数据类型必须匹配,都是8位,或都是16位。
(5)CS 、IP不能直接作为操作数。
(6)指令中至少要有一项明确说明传送的是字节还是字,如果没有,可通过PTR进行设置。
一、传送指令(1)6种指令:通用传送指令、堆栈操作指令、交换操作指令、I/O操作指令、目的地址传送指令和标志传送指令。
(2)对标志位的影响:除标志传送(SAHF、POPF)外,均不影响标志位。
(3)操作数表示方法:立即数——data,存储器单元地址——mem,寄存器——reg,段寄存器——segreg。
1. 通用传送指令:完成数据传送(1)指令格式:MOV OPRD1,OPRD2 ;[目的操作数OPRD1]←[源操作数OPRD2] (2)源OPRD2:data、mem、reg、segreg。
(3)目的OPRD1:mem、reg、segreg。
(4)通用传送指令MOV和堆栈指令是唯一允许以段寄存器(代码段寄存器CS和指令指针IP除外,即CS 、IP不能作为直接操作数)作为操作数的指令,不允许通过MOV 指令直接以立即数方式给段寄存器赋值,不允许直接在两个段寄存器之间直接进行传送。
(5)8位/16位操作。
2. 堆栈操作指令:将数据压入/弹出堆栈(1)指令格式:入栈:PUSH OPRD;先修改堆栈指针SP-2,然后将数据压入堆栈。
;SP =SP-1,[SP]=操作数高8位;SP =SP-1,[SP]= 操作数低8位。
出栈:POP OPRD;先将数据弹出堆栈,然后修改堆栈指针SP+2。
;(操作数低8位)←[SP],SP =SP+1;(操作数高8位)←[SP],SP =SP+1。
(2)操作数:mem、reg、segreg。
操作数不能是立即数data。
微机原理指令整理
类别指令类型指令名称指令缩写指令功能影响标志格式格式含义源操作数目的操作数传送指令通用传输指令基本传输指令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表首址对表进行检索有操作码,无操作数。
微机原理指令英文解释
1.通用数据传送指令MOV----> move MOVSX---->extended move with sign data MOVZX---->extended move with zero data PUSH---->pushPOP---->pop PUSHA---->push all POPA---->pop all PUSHAD---->push all data POPAD---->pop all data BSW AP---->byte swap XCHG---->exchang XLAT---->translate CMPXCHG---->compare and change XADD---->exchange and add 2.输入输出端口传送指令.IN---->input OUT---->output3.目的地址传送指令.LEA---->load effective address LDS---->load DS LES---->load ES LFS---->load FS LGS---->load GS LSS---->load SS4.标志传送指令.LAHF---->load AH from flag SAHF---->save AH to flagPUSHF---->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 adjustSUB---->substract SBB---->substract with borrowDEC---->decrease 1 NEC---->negative CMP---->compareAAS---->ascii adjust on substract DAS---->decimal adjust on substractMUL---->multiplication IMUL---->integer multiplicationAAM---->ascii adjust on multiplication DIV---->divideIDIV---->integer divide AAD---->ascii adjust on divideCBW---->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---->notTEST---->test SHL---->shift left SAL---->arithmatic shift leftSHR---->shift right SAR---->arithmatic shift rightROL---->rotate left ROR---->rotate rightRCL---->rotate left with carry RCR---->rotate right with carry四、串指令MOVS---->move string CMPS---->compare stringSCAS---->scan string LODS---->load string STOS---->store string REP---->repeat REPE---->repeat when equalREPZ---->repeat when zero flag REPNE---->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 equal JBE---->jump when below or equal JNA---->jump when not above JG---->jump when greater JNLE---->jump when not less or equal JGE---->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 flag JC---->jump when has carry flag JNC---->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 oddJNS---->jump when not has sign flag JO---->jump when has overflow flag JP---->jump when has parity flagJPE---->jump when parity flag is even JS---->jump when has sign flag 3>循环控制指令(短转移)LOOP---->loop LOOPE---->loop equal LOOPZ---->loop zero LOOPNE---->loop not equal LOOPNZ---->loop not zeroJCXZ---->jump when CX is zero JECXZ---->jump when ECX is zero 4>中断指令INT---->interrupt INTO---->overflow interruptIRET---->interrupt return5>处理器控制指令HLT---->halt W AIT---->wait ESC---->escape LOCK---->lock NOP---->no operation STC---->set carry CLC---->clear carry CMC---->carry make change STD---->set directionCLD---->clear direction STI---->set interrupt CLI---->clear interrupt 六、伪指令DW---->definw wordPROC---->procedureENDP---->end of procedureSEGMENT---->segmentASSUME---->assumeENDS---->end segmentEND---->end。
微机原理汇编常用指令
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一样,只是操作数是有符号数,商和余数均为有符号数,余数符号同被除数符号。
微机原理指令表
根本传送指令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] →FLAGSCMPSW;[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 .。
微机原理指令大全
汇编语言指令大全——吉林大学无线电爱好者协会AAA未组合的十进制加法调整指令 AAA(ASCII Adgust for Addition) 格式: AAA功能: 对两个组合的十进制数相加运算(存在AL 中)的结果进行调整,产生一个未组合的十进制数放在AX 中.说明:1. 组合的十进制数和未组合的十进制数:在计算中,十进制数可用四位二进制数编码,称为BCD 码.当一个节(8位)中存放一位BCD 码,且放在字节的低4位, 高4位为时称为未组合的BCD 码. 2. AAA 的调整操作若(AL) and 0FH>9 或 AF=1,则调整如下:(AL)<--(AL)+6,(AH)<--(AH)+1,AF=1,CF<--AF,(AL)<--(AL) and 0FHAAD未组合十进制数除法调整指令 AAD(ASCII Adjust for Division) 格式: AAD功能: 在除法指令前对AX 中的两个未组合十进制数进行调整,以便能用DIV 指令实现两个未组合的十进制数的除法运算,其结果为未组合的十进制数,商(在AL 中)和余数(在AH 中).说明:1. AAD 指令是在执行除法DIV 之前使用的,以便得到二进制结果存于AL 中,然后除以OPRD,得到的商在AL 中,余数在AH 中.2. 示例: MOV BL,5 MOV AX,0308HAAD ;(AL)<--1EH+08H=26H,(AH)<--0 DIV BL ;商=07H-->(AL),余数=03H-->(AH).AAM 未组合十进制数乘法调整指令 AAM(ASCII Adjust MULtiply) 格式: AAM功能: 对两个未组合的十进制数相乘后存于AX 中的结果进行调整,产生一个未组合的十进制数存在AL 中.说明:1. 实际上是两个未组合的十进制数字节相乘,一个0~9的数与另一个0~9的数相乘其积最大为81.为了得到正确的结果,应进行如下调整: 乘积: (AH)<--(AL)/10 (AL)<--(AL)MOD102. 本指令应跟在MUL 指令后使用,乘积的两位十进制结果,高位放在AH 中,低位放在AL 中.AH 内容是MUL 指令的结果被10除的商,即(AL)/10,而最后的AL 内容是乘积被10整除的余数(即个位数).AAS 未组合十进制减法调整指令 AAS(ASCII Adjust for Subtraction) 格式: AAS功能: 对两个未组合十进制数相减后存于AL 中的结果进行调整,调整后产生一个未组合的十进制数数且仍存于AL 中. 说明: 1. 本指令影响标志位CF 及AF. 2. 调整操作若(AL) and 0FH > 9 或 AF=1 则(AL)<--(AL)-6,(AH)<--(AH)-1,CF<--AF,(AL)<--(AL) and 0FH,否则(AL)<--(AL) and 0FHADC带进位加法指令 ADC(Addition Carry) 格式: ADC OPRD1,OPRD2功能: OPRD1<--OPRD1 + OPRD2 + CF说明: 1. OPRD1为任一通用寄存器或存储器操作数,可以是任意一个通用寄存器,而且还可以是任意一个存储器操作数. OPRD2为立即数,也可以是任意一个通用寄存器操作数.立即数只能用于源操作数.2. OPRD1和OPRD2均为寄存器是允许的,一个为寄存器而另一个为存储器也是允许的,但不允许两个都是存储器操作数.3. 加法指令运算的结果对CF 、SF 、OF 、PF 、ZF 、AF 都会有影响.以上标志也称为结果标志.4. 该指令对标志位的影响同ADD 指令.ADD加法指令 ADD(Addition) 格式: ADD OPRD1,OPRD2 功能: 两数相加说明:1. OPRD1为任一通用寄存器或存储器操作数,可以是任意一个通用寄存器,而且还可以是任意一个存储器操作数. OPRD2为立即数,也可以是任意一个通用寄存器操作数.立即数只能用于源操作数.2. OPRD1和OPRD2均为寄存器是允许的,一个为寄存器而另一个为存储器也是允许的, 但不允许两个都是存储器操作数.3. 加法指令运算的结果对CF 、SF 、OF 、PF 、ZF 、AF 都会有影响.以上标志也称为结果标志.加法指令适用于无符号数或有符号数的加法运算.AND逻辑与运算指令 AND 格式: AND OPRD1,OPRD2功能: 对两个操作数实现按位逻辑与运算,结果送至目的操作数.本指令可以进行字节或字的‘与’运算, OPRD1<--OPRD1 and OPRD2.说明:1. 目的操作数OPRD1为任一通用寄存器或存储器操作数.源操作数OPRD2为立即数,任一通用寄存器或存储器操作数.2. 示例: AND AL,0FH ;(AL)<--(AL) AND 0FHAND AX,BX ;(AX)<--(AX) AND (BX) AND DX,BUFFER[SI+BX] AND BETA[BX],00FFH注意: 两数相与,有一个数假则值为假CALL过程调用指令 CALL 格式: CALL OPRD 功能: 过程调用指令说明:1. 其中OPRD 为过程的目的地址.2. 过程调用可分为段内调用和段间调用两种.寻址方式也可以分为直接寻址和间接寻址两种.3. 本指令不影响标志位.CBW字节扩展指令 CBW(Convert Byte to Word) 格式: CBW功能: 将字节扩展为字,即把AL 寄存器的符号位扩展到AH 中.说明:1. 两个字节相除时,先使用本指令形成一个双字节长的被除数.2. 本指令不影响标志位.3. 示例: MOV AL,25 CBWIDIV BYTE PTR DATA1CLC处理器控制指令-标志位操作指令 格式: CLC ;置CF=0 STC ;置CF=1CMC ;置CF=(Not CF)进位标志求反 CLD ;置DF=0 STD ;置DF =1CLI ;置IF=0,CPU 禁止响应外部中断 STI ;置IF=1,使CPU 允许向应外部中断 功能: 完成对标志位的置位、复位等操作.说明: 例如串操作中的程序,经常用CLD 指令清方向标志使DF =0,在串操作指令执行时,按增量的方式修改吕指针.CLD处理器控制指令-标志位操作指令 格式: CLC ;置CF=0 STC ;置CF=1CMC ;置CF=(Not CF)进位标志求反 CLD ;置DF=0 STD ;置DF =1CLI ;置IF=0,CPU 禁止响应外部中断 STI ;置IF=1,使CPU 允许向应外部中断 功能: 完成对标志位的置位、复位等操作.说明: 例如串操作中的程序,经常用CLD 指令清方向标志使DF =0,在串操作指令执行时,按增量的方式修改吕指针.CLI处理器控制指令-标志位操作指令 格式: CLC ;置CF=0 STC ;置CF=1CMC ;置CF=(Not CF)进位标志求反 CLD ;置DF=0说明: 例如串操作中的程序,经常用CLD 指令清方向标志使DF =0,在串操作指令执行时,按增量的方式修改吕指针.STD ;置DF=1CLI ;置IF=0,CPU禁止响应外部中断STI ;置IF=1,使CPU允许向应外部中断功能: 完成对标志位的置位、复位等操作.CMC 处理器控制指令-标志位操作指令格式:CLC ;置CF=0STC ;置CF=1CMC ;置CF=(Not CF)进位标志求反CLD ;置DF=0STD ;置DF=1CLI ;置IF=0,CPU禁止响应外部中断STI ;置IF=1,使CPU允许向应外部中断功能: 完成对标志位的置位、复位等操作. 说明: 例如串操作中的程序,经常用CLD指令清方向标志使DF=0,在串操作指令执行时,按增量的方式修改吕指针.CMP 比效指令 CMP(CoMPare)格式: CMP OPRD1,OPRD2功能: 对两数进行相减,进行比较. 说明:1. OPRD1为任意通用寄存器或存储器操作数.OPRD2为任意通用寄存器或存储器操作数,立即数也可用作源操作数OPRD2.2. 对标志位的影响同SUB指令,完成的操作与SUB指令类似,唯一的区别是不将OPRD1-OPRD2的结果送回OPRD1,而只是比较.3. 在8088/8086指令系统中,专门提供了一组根据带符号数比较大小后,实现条件转移的指令.CMPS 字符串比较指令格式: CMPS OPRD1,OPRD2CMPSBCMPSW功能: 由SI寻址的源串中数据与由DI寻址的目的串中数据进行比较,比较结果送标志位,而不改变操作数本身.同时SI,DI将自动调整. 说明:1. 其中OPRD2为源串符号地址,OPRD1为目的串符号地址.2. 本指令影响标志位AF、CF、OF、SF、PF、ZF.本指令可用来检查二个字符串是否相同,可以使用循环控制方法对整串进行比较.3. 与MOVS相似,CMPS指令也可以不使用操作数,此时可用指令CMPSB或CMPSW分别表示字节串比较或字串比较.CMPSB 字符串比较指令格式: CMPS OPRD1,OPRD2CMPSB 说明:1. 其中OPRD2为源串符号地址,OPRD1为目的串符号地址.CMPSW功能: 由SI 寻址的源串中数据与由DI 寻址的目的串中数据进行比较,比较结果送标志位,而不改变操作数本身. 同时SI,DI 将自动调整.2. 本指令影响标志位AF 、CF 、OF 、SF 、PF 、ZF.本指令可用来检查二个字符串是否相同,可以使用循环控制方法对整串进行比较.3. 与MOVS 相似,CMPS 指令也可以不使用操作数,此时可用指令CMPSB 或CMPSW 分别表示字节串比较或字串比较.CMPSW字符串比较指令格式: CMPS OPRD1,OPRD2 CMPSB CMPSW功能: 由SI 寻址的源串中数据与由DI 寻址的目的串中数据进行比较,比较结果送标志位,而不改变操作数本身. 同时SI,DI 将自动调整.说明:1. 其中OPRD2为源串符号地址,OPRD1为目的串符号地址.2. 本指令影响标志位AF 、CF 、OF 、SF 、PF 、ZF.本指令可用来检查二个字符串是否相同,可以使用循环控制方法对整串进行比较.3. 与MOVS 相似,CMPS 指令也可以不使用操作数,此时可用指令CMPSB 或CMPSW 分别表示字节串比较或字串比较.CWD 字扩展指令 CWD(Convert Word to Double Word) 格式: CWD功能: 将字扩展为双字长,即把AX 寄存器的符号位扩展到DX 中.说明:1. 两个字或字节相除时,先用本指令形成一个双字长的的被除数.2. 本指令不影响标志位.3. 示例: 在B1、B2、B3字节类型变量中,分别存有8们带符号数a 、b 、c,实现(a*b+c)/a 运算。
微机原理指令总结
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指令用于在零标志位为假时跳转。
这些指令在程序的控制流程中起着关键作用,能够实现复杂的程序控制逻辑。
微机——微机原理指令汇总情况
微机——微机原理指令汇总情况微机原理指令是计算机中执行的最基本的操作。
它们是一条条的机器代码,用于告诉计算机要执行的操作。
微型计算机通过使用特定的指令集,可以执行各种不同的任务。
本文将对微机原理指令进行汇总和分类,以便更好地了解微机原理。
1. 数据传输指令(Data Transfer Instructions):用于将数据从一个位置传送到另一个位置。
- MOV(Move):将一个寄存器或内存的内容复制到另一个位置。
- XCHG(Exchange):交换两个操作数的值。
- PUSH(Push):将数据压入栈中。
- POP(Pop):从栈中弹出数据。
2. 运算指令(Arithmetic Instructions):用于执行一些基本的算术和逻辑运算。
- ADD(Addition):将两个操作数相加。
- SUB(Subtraction):将第一个操作数减去第二个操作数。
- MUL(Multiplication):将两个操作数相乘。
- DIV(Division):将第一个操作数除以第二个操作数。
- INC(Increment):将操作数加一- DEC(Decrement):将操作数减一3. 逻辑指令(Logical Instructions):用于执行一些逻辑运算。
- AND(And):对两个操作数进行逻辑与操作。
-OR(Or):对两个操作数进行逻辑或操作。
- XOR(Exclusive Or):对两个操作数进行异或操作。
- NOT(Not):对操作数进行逻辑非操作。
- SHR(Shift Right):对操作数进行右移操作。
- SHL(Shift Left):对操作数进行左移操作。
4. 跳转指令(Jump Instructions):用于控制程序的跳转。
- JMP(Jump):无条件跳转到指定的地址。
- JZ(Jump if Zero):如果上一个比较指令结果为零,则跳转到指定地址。
- JNZ(Jump if Not Zero):如果上一个比较指令结果不为零,则跳转到指定地址。
微机原理指令大全
微机原理指令大全微机原理是计算机科学中的重要基础知识,而指令则是微机原理中的核心内容之一。
指令是计算机中的基本操作命令,它直接影响着计算机的运行和执行效率。
本文将为大家详细介绍微机原理中常见的指令,并提供一份完整的指令大全,希望能够帮助大家更好地理解和掌握微机原理中的指令知识。
一、数据传送指令。
数据传送指令是微机原理中最基本的指令之一,它用于将数据从一个地方传送到另一个地方。
常见的数据传送指令包括MOV、LDM、STM等。
这些指令可以实现寄存器之间、寄存器和内存之间、内存和输入输出设备之间的数据传送操作,是计算机程序中不可或缺的一部分。
二、算术运算指令。
算术运算指令用于进行各种数值计算操作,包括加法、减法、乘法、除法等。
常见的算术运算指令有ADD、SUB、MUL、DIV等。
这些指令可以对寄存器和内存中的数据进行各种算术运算,是计算机程序中常用的指令之一。
三、逻辑运算指令。
逻辑运算指令用于进行各种逻辑操作,包括与、或、非、异或等。
常见的逻辑运算指令有AND、OR、NOT、XOR等。
这些指令可以对寄存器和内存中的数据进行逻辑运算,是计算机程序中实现逻辑判断和控制流程的重要指令之一。
四、转移指令。
转移指令用于改变程序的执行顺序,包括无条件转移和条件转移两种。
常见的转移指令有JMP、JZ、JNZ、JC、JNC等。
这些指令可以实现程序的跳转和循环控制,是计算机程序中实现各种复杂逻辑的重要指令之一。
五、比较指令。
比较指令用于比较两个数据的大小关系,常见的比较指令有CMP、TEST等。
这些指令可以对寄存器和内存中的数据进行比较操作,并根据比较结果设置标志位,是实现条件转移和逻辑判断的重要指令之一。
六、输入输出指令。
输入输出指令用于实现计算机与外部设备的数据交换,包括输入数据和输出数据两种操作。
常见的输入输出指令有IN、OUT等。
这些指令可以实现计算机与外部设备之间的数据传输,是计算机程序中实现输入输出功能的重要指令之一。
微机原理SBC指令
微机原理SBC指令微机原理SBC指令XCHG O1,O2 : Exchange 交换指令,操作数不能为段寄存器、IP和立即数XLAT 转换表名称(表的首地址) AL=*[DS×16 + BX(表首地址)+AL(距表首地址位移量)]LEA O1, O2 : load efficient address to registerLDS load memory to register and DSLES load memory to register and ESLAHF ( load AH with flag )用FR的低八位装载AH (存储AH)SAHF ( store AH to flag ) 卸载AH 到FR的低八位(取AH) PUSHF (PUSH Flag) 将标志寄存器FR压入堆栈POPF (Pop Flag)将栈顶部的一个字传送到FRADC add with carry 带进位(+CF)加法INC increment 自增1SUB subtract 不带借位减法SBB subtract with borrow(借)带借位(—CF)减法DEC decrement 自减1NEG negative 求补指令(0—操作数)取反后+1在变符号位CMP compare 比较指令MUL multiply 无SF相乘IMUL signed integer multiply 带SF相乘DIV divide 无SF相除IDIV signed integer divide 带SF相除DAA decimal adjust after add 组合BCD码加法调整DAS decimal adjust after subtract 组合BCD码减法调整AAA ASCII adjust after add 非组合BCD码加法调整AAS ASCII adjust after subtract 非组合BCD码减法调整AAM ASCII adjust after multiply 乘法后的BCD码调整AAD ASCII adjust before divide 除法前的BCD码调整NOT 非/ 求反指令(对于二进制位取反)AND 与运算全1为1OR 或运算有1为1XOR 异或运算不同为1MOD 取余运算TEXT 测试指令与运算,只影响FR,不送回SHL shift left 逻辑左移SAL shift arithmetic left 算术左移SHR shift right 逻辑右移SAR shift arithmetic right 算术右移ROL rotate left 循环左移ROR rotate right 循环右移RCL rotate carry left 带进位左移(CF在循环内)RCR rotate carry right 带进位右移MOVS move string 串传送STOS store string 串存储(装)LODS load string 串卸载(取)CMPS compare string 串比较SCAS scan string 串搜索REP repeat CX〉0,重复用于字符传送REPZ/REPE repeat while zero/equal CX〉O且ZF!= 0 计数大于0,两位不相匹配,重复到不相同位,串比较REPNZ/REPNE repeat while not zero/not equal 用于串搜索, 一直搜索到两相同的位(ZF=0)JMP jump 跳转到下条指令地址(CS,IP/IP改变)、CALL NEAR OPRD 段内调用 CS不变,IP变 PUSH IPCALL FAR OPRD 段间调用 CS、IP都变先PUSH CS再PUSH IPRET 返回断点地址原压入堆栈的IP 、CSCS×16+IPRET n 返回 CS*16+IP+nJxx jump while xx condition 带条件跳转JZ jump if ZF=1 结果为0 跳转JNZ JUMP if ZF=0 结果不为0 跳转JS JUMP if SF=1 负数跳转JNS JUMP if SF=O 正数跳转JP JUMP if PF=1JNP JUMP if PF=0JO OF=1JNO OF=0JC CF=1JNC CF=0JA / JNBE above(高于) Not below and equal JAE/JNB 高于等于JB/JNAE 低于JBE/JNA 低于等于JG/JNLE >JGE/JNL >=JL/JNGE 〈JLE/JNG 〈=JCXZ jump when CX=0LOOPZ/LOOPE loop while ZF=1 /equal LOOPNZ/LOOPNE loop while ZF=0/not equal RET returnINT interruptIRET interrupt returnINTO interrupt on overflowCBW convert byte to wordCWD convert word to double wordCLC clear carry Flag CF=0STC set carry Flag CF=1CMC complement carry Flag CF取反CLD clear direction Flag DF=0STD set direction Flag DF=1CLI clear interrupt Flag IF=0STI set interrupt Flag IF=1NOP no operation 设置断点HLT haltESC escape to external device[/color][/quote]EQU equal COUNTER EQU CX 等值赋值伪指令ORG 2000H 代码或数据存放的首地址关系运算符EQ equal 等于NE not equal 不等于LT low to 小于LE low equal 小于等于GT great than 大于GE great equal 大于等于当逻辑判断为真时,返回全1(0FFFFH),当逻辑判断为0时,返回0当PH = 20,则20 EQ PH 返回 0FFFFH ,20 LE PH 结果也为0FFFFH取值运算符SEG 取段地址OFFSET 取偏移地址‘。
微机原理指令大全
微机原理指令大全1. add - 将两个数相加并将结果存储在目标寄存器中2. sub - 将第二个数从第一个数中减去并将结果存储在目标寄存器中3. mul - 将两个数相乘并将结果存储在目标寄存器中4. div - 将第一个数除以第二个数并将结果存储在目标寄存器中5. mov - 将一个数或值从源寄存器复制到目标寄存器6. cmp - 比较两个数的值,并根据比较结果设置条件码寄存器7. jmp - 无条件跳转到指定的内存地址8. je/jz - 如果两个数相等,则跳转到指定的内存地址9. jne/jnz - 如果两个数不相等,则跳转到指定的内存地址10. jl/jb - 如果第一个数小于第二个数,则跳转到指定的内存地址11. jg/ja - 如果第一个数大于第二个数,则跳转到指定的内存地址12. inc - 将指定寄存器的值加113. dec - 将指定寄存器的值减114. and - 将两个数进行按位与运算,并将结果存储在目标寄存器中15. or - 将两个数进行按位或运算,并将结果存储在目标寄存器中16. not - 对指定寄存器中的值进行按位取反操作17. xor - 将两个数进行按位异或运算,并将结果存储在目标寄存器中18. shl - 将指定寄存器的值向左移动指定的位数19. shr - 将指定寄存器的值向右移动指定的位数20. call - 保存当前指令地址,并跳转到指定的内存地址21. ret - 从子程序返回到调用者22. push - 将指定寄存器的值压入栈中23. pop - 从栈中弹出一个值,并存储到指定的寄存器中24. cmp - 比较两个数的值,并根据比较结果设置条件码寄存器25. test - 将两个数进行按位与运算,并根据结果设置条件码寄存器26. fld - 将浮点数加载到浮点寄存器中27. fadd - 将两个浮点数相加,并将结果存储在浮点寄存器中28. fsub - 将第二个浮点数从第一个浮点数中减去,并将结果存储在浮点寄存器中29. fmul - 将两个浮点数相乘,并将结果存储在浮点寄存器中30. fdiv - 将第一个浮点数除以第二个浮点数,并将结果存储在浮点寄存器中。
微机原理汇编指令集合
微机原理及接口技术常用编指令一.寄存器(用来存放存储单元的段地址或偏移地址、参与运算的数据、状态标志等)相关指令8086 CPU 中有14个16位的寄存器,这14个寄存器按照功能分为四类:通用寄存器、段寄存器组、指令指针、标志位寄存器FR。
1.通用寄存器(8个)㈠数据寄存器:①AX(accumulator):寄存器(累加器)它的由来来源于EAX寄存器(32位):EAX累加寄存器EAX分为高16位和低16位。
其中低16位又可单独访问,命名为AX,16位寄存器AX又可单独访问,可分为高、低分别为AH、AL字节个8位。
AX常用于运算;在乘法和除法中指定用来存放操作数,另外所有的I/O指令都使用这一个寄存器与外接设备传送数据。
②BX(base):基址寄存器,寄存器(基址寄存器)它的由来来源于EBX寄存器(32位):EB X累加寄存器EBX分为高16位和低16位。
其中低16位又可单独访问,命名为BX,16位寄存器BX又可单独访问,可分为高、低分别为BH、BL字节个8位。
BX常用于地址索引,查表和间接寻址时存放基地址。
③CX(count):计数寄存器,寄存器(计数寄存器)它的由来来源于ECX寄存器(32位):EC X累加寄存器ECX分为高16位和低16位。
其中低16位又可单独访问,命名为CX,16位寄存器CX又可单独访问,可分为高、低分别为CH、CL字节个8位。
常用于计数;常用于保存计算值,如在移位指令,循环(loop)和串处理指令中用作隐含的计数器.④DX(data):数据寄存器,寄存器(数据寄存器)它的由来来源于EDX寄存器(32位):ED X累加寄存器EDX分为高16位和低16位。
其中低16位又可单独访问,命名为DX,16位寄存器DX又可单独访问,可分为高、低分别为DH、DL字节个8位。
常用于数据传递。
㈡指针和变址寄存器这些寄存器存放的是段内的偏移量,用来形成操作数的存储地址。
SP(Stack Pointer):堆栈指针,与SS配合使用,可指向目前的堆栈位置,SP指向栈顶。
微机原理指令集合
微机原理指令集合微机原理8086指令集合地址总线:AB(单向输出)数据总线:DB(双向总线)控制总线:CB(输出输入或双向)4个16位数据寄存器:AX累加器.BX基址寄存器.CX计数寄存器.DX数据寄存器高八位记作:AH.BH.CH.DH低八位ALBLCLDL指针寄存器:SP 堆栈指针寄存器BP基址指针寄存器变址寄存器:SI 源变址寄存器(源操作数偏移地址)DI目的变址寄存器状态位:CF、PF、AF、ZF、SF、OF(6位,操作结果的特征)控制位:TF、IF、DF进位标志位:CF最高位奇偶标志位:PF低8位1的个数为偶时为1辅助进位标志位:AF低4位向高4为有进位时为1零标志位:ZF算术逻辑运算为零时为1符号标志位:SF运算结果(负数)最高位为1时为1溢出标志位:OF结果超出有符号数补码表示的范围时为1 (字节数据-128~+127,字数据-32768~+32767)跟踪标志位:TF单步中断方式逐条检查方向标志位:DF中断允许标志位:IF为1时CPU可以响应可屏蔽中断(INTR)请求立即数寻址:MOV BL,5BH寄存器寻址:MOV DS,AX存储器寻址:1直接寻址:MOV AX,[2000H]2寄存器间接寻址:MOV AX,[BP]操作数有效地址在BX,BP,SI,DI,当在BX ,SI,DI中默认DS为基址,在BP中默认SS为基址3寄存器相对寻址:MOV AX,COUNT[SI]例:MOV BP:[DI+45H]4基址加变址寻址:MOV AX, [SI+BP]5相对基址加变址寻址指令MOV AX, [SI+BP+1234H]指令P61数据传送P70算数逻辑P83逻辑运算和移位P88字符串操作P92控制转移P93无条件转移P101直接标志条件转移P102间接标志条件转移P103标志操作(概括)数据传送指令通用数据传送指令:MOV/PUSH/POP/XCHG/XLAT输入输出指令:IN/OUT地址目标传送指令:LEA/LDS/LES标志传送指令:LAHF/SAHF/PUSHF/POPF算术逻辑指令加法:ADD/ADC/INC/AAA/DAA减法:SUB/SBB/DEC/NEG/C,P/AAS/DAS乘法:MUL/IMUL/AAM,除法:DIV/IDIV/AAD/CBW/CWD逻辑运算和移位指令逻辑运算:NOT/AND/OR/XOR/TEST算术逻辑移位:SHL/SHR/SAL/SAR循环移位:ROL/ROR/RCL/RCR字符串操作指令MOVS/CMPS/SCAS/LODS/STOSMOVSB/CMPSB/SCASB/LODSB/STOSB控制转移指令JMP/CALL/RET/JZ/JE/JA/JNBE/LOOP/LOOPE/LOOPZ/LOOPNE/LOOPNZ/JCXZ/IN T/INTO/IRET无条件转移指令段内转移直接(8位)JMP SHORT PROG_S (16位)JMP NEARPTR/PROG_N间接(8位)JMP BX (16位)JMP WORD PTR 5[BX]段间转移直接(32位)JMP FAR PTR PROG_F/JMP DWORD PTR[DI]直接标志条件转移JC/JNC/JZ/JE/JNZ/JNE/JS/JNS/JO/JNO/JP/JPE/JNP/JPO间接标志条件转移JA/JNBE/JAE/JNB/JB/JNAE/JBE/JNA/JG/JNLE/JGE/JNL/JL/JNGE/JLE/JNG(较详)数据传送指令MOV dst,src交换指令:XCHG dst,src查表指令:XLAT[表首址]DS:(BX+AL)给AL进栈指令:PUSH src(sp←sp-2)出栈指令:POP src (sp←sp+2)取有效地址指令;LEA dst,src指针送寄存器和DS:LDS dst,src指针送寄存器和ES:LES dst,src标志传送指令:LAHFSAHF PUSHF POPF输入、输出指令:IN、OUT加法指令:ADD dst,src带进位加法指令:ADC dst,src (CF也要加)目的操作数加1指令:INC dst加法ASCII调整指令:AAA加法的十进制调整指令:DAA减法指令:SUB dst,src带借位减法指令:SBB dst,src(也要减CF)减1指令:DEC src111取负指令:NEG src(0减src)比较指令:CMP dst,src(目减源,结果不会送到目的,结果仅反应在标志位无符号看CF有符号看SF)乘法指令:无符号数乘法指令MUL src字节操作数:AL*src给AX或src字操作数:AX*src给AX整数乘法指令:IMUL src字运算AX字节运算AL乘法的ASCII调整指令:AAM除法指令:DIV src字节将AX除以src给AL余数该AH/src 字将(DX,AX)除以src给AX余数给DX整数除法指令:IDIV srcCBW 将字节转换为字CWD将字转换为字节逻辑运算:逻辑与:AND dst,src逻辑或:OR dst,src非:NOT dst异或:XOR dst,src测试:TEST dst,src(测试判断某些位知否同时为0)移位指令(左移一次相当于乘2,最高位进入标志位CF;右移一次相当于除以2,最低位进入标志位)算术左移指令SAL dst, CL;移位位数逻辑左移指令SHL dst ,CL;移位位数算术右移指令:SAR dst ,CL;移位位数逻辑右移指令:SHR dst,CL ;移位位数循环移位指令:循环左移指令:ROL dst,CL;移位位数循环右移指令:ROR dst,CL;移位位数带进位循环左移:RCL dst,CL;移位位数带进位循环右移:RCR dst,CL;移位位数串操作指令:串传送指令:MOVS/W串比较指令:CMPSB/W串搜索指令:SCASB/W取串指令:LODS/W存串指令:STOSB/W重复前缀指令:REP SOPR 重复执行REP指令后紧跟着的一个串操作指令,知直到CX寄存器中的值为0 REPE/REPZ执行REPE/REPZ后紧跟的一个串操作指令,当相等、为0时重复,直到CX=0/ZF=0 REPNE/REPNZ 执行REPNE/REPNZ后紧跟的串操作指令当不为0、不相等时重复,直到CX=0/ZF=0转移指令:远程转移:JMP FAR PTR OPRD(IP=IP+16位移量)近程转移:JMP NEAR PTR OPRD (IP=IP+8位移量)段内间接转移:JMP reg16JMP men16(IP)←reg16或men16段间间接转移:JMP DWORD PTR [BX+SI]调用和返回指令:段内直接调用:CALL dst(SP=SP-2,SP+1,IP指向SP,IP=IP+16段内直接调用:CALL dst(同,同,EA指向IP)段间直接调用:CALL dst(SP=SP-2,SP+1,CS指向SP,SP=SP-2,SP+1,IP指向SP,偏移地址指向IP,段地址指向CS)段间间接调用:CALL dst段内返回:RET(IP=SP+1,SP,SP=SP+2)段内带立即数返回:RET n循环控制指令:LOOP OPRD(CX=CX-1,若CX≠0则循环LOOPNZ/LOOPE OPRD(CX=CX-1,若CX≠0ZF=0则循环)LOOPZ/LOOPEOPRD。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微机原理8086 指令集合
地址总线:AB(单向输出)
数据总线:DB(双向总线)
控制总线:CB(输出输入或双向)
4个16位数据寄存器:AX累加器.BX基址寄存器.CX计数寄存器.DX数据寄存器
高八位记作:AH.BH.CH.DH低八位ALBLCLDL
指针寄存器:SP 堆栈指针寄存器BP基址指针寄存器
变址寄存器:SI 源变址寄存器(源操作数偏移地址)DI目的变址寄存器
进位标志位:CF最高位
奇偶标志位:PF
低8位1的个数为偶时为1 辅助进位标志位:AF低4位向高4为有进位时
零标志位:ZF算术逻辑运算为零时为1
符号标志位:SF运算结果最高位为1时为1
溢出标志位:OF结果超出有符号数补码表示的范围时为1
跟踪标志位:TF单步中断方式逐条检查
方向标志位:DF
中断允许标志位:IF为1时CPU可以响应可屏蔽中断(INTR)请求
立即数寻址:MOV BL,5BH
寄存器寻址:MOV DS,AX
存储器寻址:1直接寻址:MOV AX,[2000H]
2寄存器间接寻址:MOV AX,[BP]
操作数有效地址在BX,BP,SI,DI,当在BX ,SI,DI中
默认DS为基址,在BP中默认SS为基址
3寄存器相对寻址:MOV AX,COUNT[SI] 例:MOV BP:[DI+45H]
4基址加变址寻址:MOV AX, [SI+BP]
5相对基址加变址寻址指令MOV AX, [SI+BP+1234H]
指令
数据传送指令MOV dst,src
交换指令:XCHG dst,src
查表指令:XLAT[表首址]DS:(BX+AL)给AL
堆栈传送指令:PUSH src
取偏移地址指令;LEA dst,src
指针送寄存器和DS:LDS dst,src
指针送寄存器和ES:LES dst,src
标志传送指令:LAHF SAHF PUSHF POPF
输入、输出指令:IN.OUT
加法指令:ADD dst,src
带进位加法指令:ADC dst,src (CF也要加)
加1指令:INC dst
减法指令:SUB dst,src
带借位减法指令:SBB dst,src(也要减CF)
减1指令:DEC src111 求补指令:NEG src (0减src)
比较指令:CMP dst,src(相减但不送回目的操作数,结果都不变)
乘法指令:MUL src 字节操作数:AL*src给AX 字操作数:AX*src给AX
带符号数乘法指令:IMUL src 字运算AX字节运算AL
除法指令:DIV src 字节将AX/src给AL余数该AH 字将(DX,AX)/src给AX 余数给DX 带符号数除法指令:IDIV src
CBW 将字节转换为字CWD将字转换为字节
逻辑运算:
逻辑与:AND dst,src
逻辑或:OR dst,src
非:NOT dst
异或:XOR dst,src
测试:TEST dst,src(测试判断某些位知否同时为0)
移位指令
算术左移指令SAL dst, CL;移位位数
逻辑左移指令SHL dst ,CL;移位位数
算术右移指令:SAR dst ,CL;移位位数
逻辑右移指令:SHR dst,CL ;移位位数
循环移位指令:
循环左移指令:ROL dst,CL;移位位数
循环右移指令:ROR dst,CL;移位位数
带进位循环左移:RCL dst,CL;移位位数
带进位循环右移:RCR dst,CL;移位位数
串操作指令:
串传送指令:MOVS/W
串比较指令:CMPSB/W
串搜索指令:SCASB/W
取串指令:LODS/W
存串指令:STOSB/W
重复前缀指令:REP SOPR 重复执行REP指令后紧跟着的一个串操作指令,知直到CX寄存器中的值为0 REPE/REPZ执行REPE/REPZ后紧跟的一个串操作指令,当相等、为0时重复,直到CX=0/ZF=0 REPNE/REPNZ 执行REPNE/REPNZ后紧跟的串操作指令当不为0、不相等时重复,直到CX=0/ZF=0
转移指令:
远程转移:JMP FAR PTR OPRD(IP=IP+16位移量)
近程转移:JMP NEAR PTR OPRD (IP=IP+8位移量)
段内间接转移:JMP reg16
JMP men16
(IP)←reg16或men16
段间间接转移:JMP DWORD PTR [BX+SI]
调用和返回指令:
段内直接调用:CALL dst(SP=SP-2,SP+1,IP指向SP,IP=IP+16
段内直接调用:CALL dst (同,同,EA指向IP)
段间直接调用:CALL dst(SP=SP-2,SP+1,CS指向SP,SP=SP-2,SP+1,IP指向SP, 偏移地址指向IP,段地址指向CS)
段间间接调用:CALL dst 段内返回:RET(IP=SP+1,SP,SP=SP+2)
段内带立即数返回:RET n
循环控制指令:
LOOP OPRD(CX=CX-1,若C X≠0则循环
LOOPNZ/LOOPE OPRD(CX=CX-1,若C X≠0ZF=0则循环)
LOOPZ/LOOPE OPRD。