微机原理-----指令系统

一.寻址方式

   1.1立即寻址

   1.2寄存器寻址

   1.3存储器寻址

                      EA = (BX/BP) + (SI/DI) +DISP

               有效地址 =     基址        变址      位移量

寻址方式 有效地址EA 默认的段寄存器
直接寻址 【DISP】 DS
寄存器间接寻址 【BX】 DS
  【BP】 SS
  【SI】 DS
  【DI】 DS
基址寻址 【BX+DISP】 DS
  【BP +DISP】 SS
变址寻址 【SI+DISP】 DS
  【DI+DISP】 DS
基址加变址寻址 【BX+SI+DISP(或无DISP)】 DS
  【BX+DI+DISP(或无DISP)】 DS
  【BP+SI+DISP(或无DISP)】 SS
  【BP+DI+DISP(或无DISP)】 SS

二.指令

    2.1数据传送指令 

分类 功能 助记符格式     操作
通用数据传送 传送 MOV d,s d<--s
  交换 XCHG d,s  
  压入堆栈 PUSH s  
  弹出堆栈 POP d  
  查表转换 XLAT  
地址传送 取有效地址 LEA reg16,s  
  取逻辑地址(指针) LDS reg6,s  
  取逻辑地址(指针) LES reg16,s  
标志传送 标志寄存器送AH LAHF  
  AH送标志寄存器 SAHF  
  标志入栈 PUSHF  
  标志出栈 POPF  
输入输出 从I/O端口输入数据 IN 累加器,端口地址(例如:IN AL,201H )只能为AL或者AX  
  数据输出至I/O端口 OUT 端口地址,累加器  


注:IN AL,port

        MOV DX,port  16位的不能直接传到AX

        IN AX,DX

    2.2算术运算指令   

        2.2.1加法

             1.加法:ADD d,s
           2.带进位加:ADC d,s
           3.加1:INC d

        2.2.2减法

                1.减法:SUB d,s

                2.带借位减:SBB d,s

                3.减1:DEC d

                4.取补:NEG d

                5.比较:CMP d,s

        2.2.3乘法

                1.无符号乘法:MUL s

                2.有符号乘法: IMUL s

        2.2.4除法

        2.2.5符号扩展
        2.2.6BCD码

                 1.加压缩BCD码调整: DAA

                 2.加压非压缩BCD码: AAA

                 3.减法压缩BCD码: DAS

    2.3逻辑运算和位移循环指令

分类 功能   操作 状态标志位
逻辑运算 AND d,s  
  OR d,s  
  异或 XOR d,s  
  NOT d  
  测试 TEST d,s 只影响标志位(d,s求与)  
移位 算术左移 SAL  
  算术右移 SAR (最左边新添加的为==前一次最左边的值)  
  逻辑左移 SHL  
  逻辑右移 SHR  
循环移位 向左小循环 ROL (最左边给最右边,同时给CF)  
  向右小循环 ROR(最右边给最左边,同时给CF)  
  向左大循环 RCL (最左边移入CF,CF移入最右边)  
  向右大循环 RCR (最右边移入CF,CF移入最左边)  

    2.4程序控制指令

分类 功能 助记符格式 条件
无条件转移 无条件转移 JMP 目标地址  
  子程序调用 CALL 子程序地址  
  从子程序返回 RET或RET n  
条件转移--》 单标志 结果是0/相等 JZ/JE ZF=1
  结果不是0/不相等 JNZ/JNE ZF=0
  有进位(借位) JC CF=1
  无进位(借位) JNC CF=0
  有溢出 JO OF=1
  无溢出 JNO OF=0
  符号位为1 JS SF=1
  符号位不为1 JNS SF=0
  1的个数是偶数 JP/JPE PF=1
  1的个数是奇数 JNP/JPO PF=0
条件转移--》无符号数 高于/不低于等于 JA/JNBE CF=0且ZF=0
  高于或等于/不低于 JAE/JNB CF=0
  低于不高于等于 JB/JNAE CF=1
  低于或等于/不高于 JBE/JNA CF=1或ZF=1
条件转移--》有符号数 大于/不小于等于 JG/JNLE (OF异或SF=0)且ZF=0
  大于或等于/不小于 JGE/JNL OF异或SF=0
  小于/不大于等于 JL/JNGE OF异或SF=1
  小于或等于/不大于 JLE/JNG OF异或SF=1或ZF=1
循环控制   LOOP CX-1->CX !=0
  相等/结果是0 LOOPE/LOOPZ ZF=1且CX-1->CX !=0
  不相等/结果不是0 LOOPNE/LOOPNZ ZF=0且CX-1->CX !=0
  CX是0 JCXZ CX=0
中断 中断调用 INT n  
  溢出中断 INTO  
  中断返回 IRET  

    2.5串操作指令
    2.6处理器控制指令

分类 功能 助记符格式 操作
标志位操作 进位标志清0 CLC CF<-0
  进位标志置1 STC CF<-1
  进位标志取反 CMC CF<-非CF
  方向标志清0 CLD DF<-0
  方向标志置1 STD DF<-1
  中断允许标志清0 CLI IF<-0
  中断允许标志置1 STI IF<-1
同步控制 等待 WAIT  
  交叉 ESC外部操作码,源操作数  
  封锁总线 LOCK  
暂停及空操作 暂停 HLT  
  空操作 NOP  

猜你喜欢

转载自blog.csdn.net/mengdeng19950715/article/details/80788819