微机原理指令整理

合集下载

微机原理常用命令

微机原理常用命令

一、数据传输指令它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据。

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 欢迎您的下载,资料仅供参考!。

微机原理指令小结

微机原理指令小结

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。

微机原理指令大全

微机原理指令大全

汇编语言指令大全——吉林大学无线电爱好者协会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, 标号。

微机原理指令

微机原理指令

微机原理指令指令是计算机程序中的基本操作单位,它告诉计算机执行什么操作。

在微机原理中,指令的执行是实现计算机数据处理的关键。

本文将介绍微机原理中的指令,包括指令的组成、指令格式、寻址方式和常用指令的功能。

一、指令的组成在微机原理中,指令由操作码和操作数组成。

操作码用来标识指令的类型和功能,操作数用来表示操作的对象或操作的数据。

二、指令格式微机原理中常用的指令格式有紧凑指令格式(RISC)和指令字格式(CISC)两种。

1. 紧凑指令格式(RISC)紧凑指令格式采用统一长度的指令格式,操作码和操作数都占据特定的位数。

这种格式的指令长度固定,适合于高速执行和高效率的指令流水线处理。

2. 指令字格式(CISC)指令字格式中,操作码和操作数的长度可以不固定,根据指令的功能需求来改变。

这种格式的指令可以包含更多的操作和功能,但执行速度相对较慢。

三、寻址方式指令的寻址方式决定了指令中操作数的获取方式。

常见的寻址方式有直接寻址、间接寻址、寄存器寻址、立即寻址和相对寻址等。

1. 直接寻址直接寻址是指操作数所在的存储单元的地址已经明确指明在指令中,CPU可以直接访问该地址来读取或写入操作数。

2. 间接寻址间接寻址是指操作数所在的存储单元的地址不在指令中,而是存储在另一个地址中,CPU先读取该地址中的内容,然后再根据读取的内容来获取实际操作数的地址。

3. 寄存器寻址寄存器寻址是指操作数存储在CPU的寄存器中,指令中指定了寄存器的编号来访问操作数。

4. 立即寻址立即寻址是指操作数直接包含在指令中,CPU可以直接使用指令中的数据作为操作数。

5. 相对寻址相对寻址是指操作数的地址是相对于当前指令地址的一个偏移量,CPU根据当前指令地址和偏移量可以计算出操作数的真实地址。

四、常用指令及功能在微机原理中,常用的指令包括数据传送指令、算术逻辑指令、控制指令等。

以下列举几种常见的指令及其功能:1. MOV指令:用于将数据从一个存储单元传送到另一个存储单元。

微机原理指令大全

微机原理指令大全

微机原理指令大全微机原理是计算机专业的一门重要课程,它主要研究计算机系统的基本组成和工作原理。

在微机原理课程中,指令是一个非常重要的概念,它是计算机能够理解和执行的基本操作命令。

本文将对微机原理中常见的指令进行详细介绍,帮助读者更好地理解和掌握这一知识点。

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等。

这些指令可以实现计算机与外部设备之间的数据传输,是计算机程序中实现输入输出功能的重要指令之一。

微机原理指令整理

微机原理指令整理

类别指令类型指令名称指令缩写指令功能影响标志格式格式含义源操作数目的操作数传送指令通用传输指令基本传输指令MOV将源操作数中的数据传送至目的操作数,以实现寄存器与寄存器、寄存器与存储器之间数据传送以及立即数送往寄存器或存储器无1.MOV WORD PTR[2000],AX将AX送2000和2001单元(低位在低地址,高位在高地址,下同)至少有一个是寄存器(除立即数送存储器外);不能在两个存储单元之间直接传送数据;不能在两个段寄存器之间直接传送数据;不能将立即数直接送至段寄存器;SS和SP赋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)可编辑文本字单元内容送ES值必须紧邻指令指针IP既不作目的操作数也不做源操作数5.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送CX可编辑文本11.MOV BYTE PTR [DI],0立即数0送(DI)字节单元堆栈操作指令PUSH将来自通用寄存器、段寄存器或存储单元的一个字(16位)内容压入堆栈(SP指向的栈顶个单元)无1.PUSH AX AX内容进栈通用寄存器、段寄存器、存储单元的一个字CS不能作目的操作数;2.PUSH SI SI内容进栈3.PUSH ES ES内容进栈4.PUSH CS CS内容进栈5.PUSH WORD PTR [BX](BX)和(BX+1)单元内容进栈6.PUSH WORD PTRBETA [BX](BX+BETA)字单元内容进栈不能使用8位源或目的操作数POP将栈顶个单元的内容退出(弹出)到通用寄存器、段寄存器或存储单无 1.POP BX栈顶2个字节出栈到BX不能使用8位源或目的操作数可编辑文本元2.POP DX栈顶2个字节出栈到DX 通用寄存器、段寄存器、存储单元的一个字节;CS不能作目的操作数3.POP ES栈顶2个字节出栈到ES4.POP SS栈顶2个字节出栈到SS5.POP [BX+50]栈顶2个字节出栈到(BX+50)字单元6.POP [BP+DI]栈顶2个字节出栈到(BP+DI)字单元交换指令XCHG实现数据宽度相同的源操作数与目无 1.XCHG AL,BL AL与BL之间字段寄存器、CS、IP、立可编辑文本的操作数之间的数据交换,亦即同为8位或16位的累加器与寄存器、寄存器与寄存器以及寄存器与存储单元之间的数据交换节交换即数不能作为源或目的操作数;两个存储单元之间、段寄存器与段寄存器之间不能进行交换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并将其中的值无MOV 设置SEGCODE有操作码,无操作数。

微机原理指令

微机原理指令

DB DW DD DF
12H,34H,56H,78H,90H 1122H,3344H,5566H 13572468H,87654321H 112233445566H
DNUM:
代码段: „„
MOV AX, SEG 数据段段名 MOV DS, AX MOV BX, WORD PTR DNUM[ 3 ] ;BX=?
设数据段: BNUM
WNUM DNUM FNUM
DB DW DD DF
12H,34H,56H,78H,90H 1122H,3344H,5566H 13572468H,87654321H 112233445566H
代码段: „„
MOV MOV MOV
AX,SEG 数据段段名 DS,AX ;对DS初始化 BL,BNUM ;BL=?
12H,34H,56H,78H,90H 1122H,3344H,5566H 13572468H,87654321H 112233445566H
代码段: „„
DNUM:
MOV AX,SEG 数据段段名 MOV DS,AX MOV BL,BYTE PTR DNUM ;BL=?
68H 24H 57H 13H
双字节操作数 低字节 高字节 堆栈区
34H 12H
34H 12H X X H ←SP XXH
★数据进栈过程(以16位操作数进栈为例)
高8位→SS:[SP1] 低8位→SS:[SP2] SP2→SP
双字节操作数 低字节 高字节 堆栈区
34H 12H
3 4 H ←SP 12H XXH XXH
★数据出栈过程(以16位操作数出栈为例)
12H,34H,56H,78H,90H 1122H,3344H,5566H 13572468H,87654321H 112233445566H

微机原理汇编常用指令

微机原理汇编常用指令

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相同,只是操作数是有符号数,商和余数均为有符号数,余数符号同被除数符号。

微机原理指令大全

微机原理指令大全

微机原理指令大全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指向栈顶。

微机原理指令知识点总结

微机原理指令知识点总结

微机原理指令知识点总结一、指令概述指令是计算机硬件执行的基本命令。

计算机中的指令由操作码和地址码两部分组成,操作码用来表示指令的功能,地址码用来表示操作数的地址。

根据指令的功能不同,可以分为数据操作指令、控制指令和I/O指令等。

指令的执行是按照存储在内存中的程序顺序执行的,每条指令都有其对应的操作过程和执行结果。

二、指令的格式在计算机中,指令一般由操作码、地址码和操作数等部分组成。

操作码用来表示指令的功能,地址码用来表示操作数的地址,操作数是指令执行的对象,可以是数据或者地址等。

指令的格式一般有以下几种:三地址指令、二地址指令、一地址指令和零地址指令。

不同的指令格式对应了不同的指令功能和操作方式,程序员需要根据具体的需求选择合适的指令格式。

三、指令的执行过程指令的执行过程一般包括指令的取指、指令的译码、指令的执行和存储结果等步骤。

在执行指令的过程中,计算机需要根据指令的操作码和地址码来确定要执行的操作以及操作数的来源。

指令的执行结果一般存储在寄存器或者内存中,以便后续的指令继续执行。

四、指令的体系结构指令的体系结构一般包括指令系统的设计原则、指令的寻址方式、指令的格式设计和指令的执行过程等内容。

指令系统的设计原则是指在设计指令系统时需要考虑的指导思想,例如简洁、高效和易于理解等。

指令的寻址方式是指指令中的地址码如何确定操作数的地址,有直接寻址、间接寻址、寄存器寻址和变址寻址等方式。

指令的格式设计是指指令的操作码、地址码和操作数等部分的组织方式,不同的格式设计对指令的功能和效率有着重要影响。

指令的执行过程是指计算机在执行指令时的操作过程和执行结果,需要考虑指令的周期、时序和流水线等方面。

五、常见的指令类型常见的指令类型包括数据操作指令、控制指令和I/O指令等。

数据操作指令是用来对数据进行操作的指令,包括数据传输、逻辑运算、算术运算和移位操作等。

控制指令是用来控制程序执行流程的指令,包括跳转、调用子程序、返回子程序和中断等。

微机原理指令表和解释

微机原理指令表和解释
LEA DEST,SRC;DEST(寄存器)SRC(偏移地址)
LDS DEST,SRC;DSET(16位通用寄存器)[SRC](第一个字的内容)
DS [SRC](第二个字的内容)
LES DEST,SRC;DSET(16位通用寄存器)[SRC](第一个字的内容)
ES [SRC](第二个字的内容)
7.输入输出指令
SCL DEST,COUNT;带进位循环左移带CF一起的循环
SCR DEST,COUNT;带进位循环右移带CF一起的循环
12.基本串操作类指令
MOVSB;(字节传送)ES:[DI] DS:[SI] SI [SI+-1] DI [DI+-1]
MOVSW;(字传送)ES:[DI] DS:[SI] SI [SI+-2] DI [DI+-2]
REPNZ;每执行依次串指令CX(CX)-1 CX=0或ZF=1重复执行结束
14.无条件转移类指令
JMP DEST;无条件转移到DEST所指定的地址
15.循环指令
LOOP DEST;CXCX)-1直至CX=0结束循环
LOOPE/LOOPZ DEST;CXCX)-1直至CX=0或ZF=0结束循环
LOOPNE/LOOPNZ DEST;CXCX)-1直至CX=0或ZF=1结束循环
取串指令
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]
串比较指令

微机原理指令集合

微机原理指令集合

微机原理指令集合微机原理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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

类别指令类型指令名称指令缩写指令功能影响标志格式格式含义源操作数目的操作数传送指令通用传输指令基本传输指令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表首址对表进行检索有操作码,无操作数。

操作数AL隐藏在操作码之中输入指令IN在I/O口独立编址时,使用专门的输入指令IN,这种输入操作又是指定累加器AL或AX来担当,因此,IN属于专用累加器传送指令无1.IN AL,60H8位口地址60H中的1个字节到AL不能使用除累加器外的其他寄存器进行操作;不能使用大于255的地址作为8位口地址;不能使用除DX外的其他寄存器作为16位间接口地址,且在间接口寻址时,须对DX预先置2.IN AX,60H60H内容到AL,61H内容到AH3.IN AL,DX16位口地址(DX)单元内容到AL4.IN AX,DX (DX)及(DX+1)口微机原理指令整理 3内容到AX 地址值输出指令OUT 在I/O口独立编址时,使用专门的输出指令OUT,这种输出操作又是指定累加器AL或AX来担当,因此,OUT属于专用累加器传送指令无1.OUT 60H,ALAL中的字节输出到8位口60H不能使用除累加器外的其他寄存器进行操作;不能使用大于255的地址作为8位口地址;不能使用除DX外的其他寄存器作为16位间接口地址,且在间接口寻址时,须对DX预先置地址值2.OUT 60H,AXAX中的字输出到8位口60H及61H3.OUT DX,ALAL中的字节到16位口地址(DX)4.OUT DX,AXAX中的字到(DX)及(DX+1)口地址传送指令有效地址传送指令LEA将存储单元有效(偏移)地址EA(源操作数)装入一个16位通用寄存器(目的操作数),以使该寄存器作为地址指针无1.LEA SP,[1234H]直接地址1234H装入SP存储器操作数(存储单元有效地址EA)作源操作数段寄存器、IP不能作目的操作数;16位通用寄存器(BX、BP、SI及DI)作目的操作数2.LEA BX,TABLE标号或变量TABLE代表的地址装入BX3.LEA SI,[BX]间接地址(BX)装入SI4.LEA DI,[BX+100]基址地址(BX+100)装入DI不能将存储器操作数与寄存器操作数在源与目的操作数的位置上互换(倒置)5.LEA DX,[SI+200]变址地址(SI+200)装入DX6.LEA AX,[BP+DI+500] 基(址)变址地微机原理指令整理 4址(BP+DI+500)装入AX使用DS段的地址指针传送指令LDS将双字地址指针(包括偏移地址和段地址)分别传送到指令中给出的16位寄存器及数据段寄存器DS中,双字地址指针从源操作数的双字内容即(EA)和(EA+2)字单元得到无1.LDS BX,[3250H]由直接地址得到双字地址指针存储器操作数(存储单元有效地址(EA)作为源操作数16位寄存器REG(BX、BP、SI及DI)作为目的操作数2.LDS SI,TMP由标号(符号地址)的内容得到双字地址指针3.LDS BP,[BX]由间接地址(BX)的内容得到双字地址指针4.LDS DI,[BX+20]由基址地址(BX+20)的内容得到双字地址指针5.LDS BX,[DI+40]由变址地址(DI+40)的内容得到双字地址指针不能将存储器操作数(存储单元有效地址EA)与寄存器操作数在源与目的操作数的位置上互换(倒置)6.LDS BX,[BP+SI+500]由基(址)变址地址(BP+SI+500)的内容得到双字地址指针使用ES段的地址指LES功能与上基本相同,差别在于能提供偏移地址直接访问和使用ES段的无微机原理指令整理 5针传送指令只有DI,而BX、SI及BP可通过段超越前缀(ES:)由默认的DS段或SS段改为访问ES段标志传送指令低8位标志取入AH指令LAHF将标志寄存器中低8位FL取入寄存器AH中(AH<-FL),以便于阅读和校核无低8位FL(SF、ZF、AF、PF、CF)寄存器AH存AH到低8位标志指令SAHF将AH内容存到低8位标志寄存器FL中(FL<-AH),以便于设置标志状况影响低8位标志位寄存器AH 低8位FL(SF、ZF、AF、PF、CF) 标志进栈指令PUSHF将16位标志寄存器F(FH、FL)的内容进栈,SP<-SP-2,F的内容不变无16位标志寄存器F(FL、FH)堆栈标志出栈指令POPF将堆栈栈顶的2个字节弹出送16位标志寄存器F(FH、FL),SP<-SP+2,影响标志寄存器的内容影响16位标志位堆栈栈顶的2个字节16位标志寄存器F(FL、FH)算术运算类指令加法类指令加法指令ADD将源操作数与目的操作数的内容相加,其结果(两者之和)存放于目的操作数,或者说将源操作数的内容加到目的操作数中CF、PF、AF、ZF、SF及OF1.ADD DI,SI寄存器SI的内容加到DI中源与目的操作数不能同时为存储器操作数2.ADD CX,[5000]5000和5001单元内容加到CX中寄存器、存储器或立即数寄存器或存储器;不能是立即数3.ADD WORD PTR[BP+DI+30],DX寄存器DX的内容加到(BP+DI+30)字单元中4.ADD WORD PTR[SI+100],2040立即数2040加到(SI+100)字单元中微机原理指令整理 65.ADD BH,86H 立即数86H加到BH中6.ADD AX,FED0H 立即数FED0H加到累加器AX中带进位的加法指令ADC功能与上基本相同,唯一不同之处是,在源操作数与目的操作数的内容相加时,还要加上进位位CF的值CF、PF、AF、ZF、SF及OF 与ADD相同与ADD相同与ADD相同与ADD相同增量(加1)指令INC将目的操作数的内容(8位或16位)加1,源操作数1隐含在操作码中。

目的操作数为寄存器或存储器,但不能是段寄存器或立即数PF、AF、ZF、SF及OF,不影响CF1.INC AL AL中的内容加1 源操作数为1为寄存器或存储器;不能是段寄存器或立即数2.INC DI DI中的内容加13.INC BYTE PTR [2000]2000存储单元内容加14.INC WORD PTR[BP+SI+50](BP+SI+50)存储器字单元内容加1减法类指令减法指令SUB将目的操作数的内容与源操作数的内容相减,其结果(两者之差)存放于目的操作数,或者说从目的操作数的内容中减去源操作数的内容CF、PF、AF、ZF、SF及OF。

CF=1,表示借位;OF=1,溢出1.SUB CH,DLCH中的内容减去DL中的内容,结果在CH中源与目的操作数不能同时为存储器操作数2.SUB BL,[DI]在BL中减去(DI)单元的内容寄存器、存储器或立即数寄存器或存储器;不能是立即数3.SUB [BP+4},cl在SS段的(BP+4)单元中减去CL的内容4.SUB WORD PTR[BX+DI+50],300在(BX+DI+50)字单元中减去立即数300微机原理指令整理75.SUB BX,3050H 在BX中减去立即数3050H6.SUB AL,56 在AL中减去立即数56带借位的减法指令SBB在SUB的基础上再减去CF的值。

相关文档
最新文档