微机原理指令合集 下载本文

内容发布更新时间 : 2024/6/29 11:36:46星期一 下面是文章的全部内容请认真阅读。

地址总线: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

存储器寻址:

直接寻址:MOV AX,[2000H] 寄存器间接寻址:MOV AX,[BP]

操作数有效地址在BX,BP,SI,DI,当在BX ,SI,DI中 默认DS为基址,在BP中默认SS为基址

寄存器相对寻址:MOV AX,COUNT[SI] 例:MOV BP:[DI+45H]

基址加变址寻址:MOV AX, [SI+BP]

相对基址加变址寻址指令 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,若CX≠0则循环 LOOPNZ/LOOPE OPRD(CX=CX-1,若CX≠0ZF=0则循环)

LOOPZ/LOOPE OPRD 地址总线: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

存储器寻址:

直接寻址:MOV AX,[2000H]

寄存器间接寻址:MOV AX,[BP]

操作数有效地址在BX,BP,SI,DI,当在BX ,SI,DI中 默认DS为基址,在BP中默认SS为基址

寄存器相对寻址:MOV AX,COUNT[SI] 例:MOV BP:[DI+45H]

基址加变址寻址:MOV AX, [SI+BP]

相对基址加变址寻址指令 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,若CX≠0则循环 LOOPNZ/LOOPE OPRD(CX=CX-1,若CX≠0ZF=0则循环)

LOOPZ/LOOPE OPRD 地址总线: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

存储器寻址:

直接寻址:MOV AX,[2000H] 寄存器间接寻址:MOV AX,[BP]

操作数有效地址在BX,BP,SI,DI,当在BX ,SI,DI中 默认DS为基址,在BP中默认SS为基址

寄存器相对寻址:MOV AX,COUNT[SI] 例:MOV BP:[DI+45H]

基址加变址寻址:MOV AX, [SI+BP]

相对基址加变址寻址指令 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,若CX≠0则循环 LOOPNZ/LOOPE OPRD(CX=CX-1,若CX≠0ZF=0则循环)

LOOPZ/LOOPE OPRD 地址总线: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

存储器寻址:

直接寻址:MOV AX,[2000H]

寄存器间接寻址:MOV AX,[BP]

操作数有效地址在BX,BP,SI,DI,当在BX ,SI,DI中 默认DS为基址,在BP中默认SS为基址

寄存器相对寻址:MOV AX,COUNT[SI] 例:MOV BP:[DI+45H]

基址加变址寻址:MOV AX, [SI+BP]

相对基址加变址寻址指令 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,若CX≠0则循环 LOOPNZ/LOOPE OPRD(CX=CX-1,若CX≠0ZF=0则循环)

LOOPZ/LOOPE OPRD