指令系统
指令格式
指令(机器指令)是指示计算机执行某种操作的命令
一台计算机的所有指令的集合构成该机的指令系统,也称指令集
指令的基本格式
指令 = 操作码字段 + 地址码字段
指令字长取决于操作码的长度、操作数地址码的长度和操作数地址的个数。与机器字长没有固定的关系
(单字长指令、半字长指令、双字长指令)
(定长指令字结构、变长指令字结构)
(指令字长一般都是字节的整数倍)
-
零地址指令: OP
1)不需要操作数的指令:空操作指令、停机指令、关中断指令
2)零地址的运算类指令仅用在堆栈计算机中 -
一地址指令:OP A1
1)只有目的操作数的单操作数指令
2)隐含约定目的地址的双操作数指令
OP(A1) → A1 -
二地址指令:OP A1 A2
(A1)OP(A2) → A1 -
三地址指令:OP A1 A2 A3(结果)
(A1)OP(A2) → A3 -
四地址指令:OP A1 A2 A3(结果) A4(下址)
(A1)OP(A2) → A3,A4 = 下一条将要执行指令的地址
扩展操作码指令格式
-
不允许短码是长码的前缀,即短操作码不能与长操作码的前面部分的代码相同
-
各指令的操作码一定不能重复
指令的操作类型
指令的寻址方式
程序的机器级代码表示
常用汇编指令介绍
// X86汇编指令
// 1. 数据传送指令
MOV 复制 不能用于直接从内存复制到内存
PUSH 压栈
POP 出栈
// 2. 算术和逻辑运算指令
ADD/SUB 加/减 结果保存到第一个操作数
INC/DEC 自加1、自减1
IMUL 带符号整数乘法 操作数有两个和三个两种,第一个操作数必须为寄存器,结果保存在第一个操作数
IDIV 带符号整数除法
AND/OR/XOR 与、或、异或 结果保存到第一个操作数
NOT 位翻转
NEG 取负
shl/shr 逻辑左移/逻辑右移 第一个操作数表示操作数,第二个操作数表示移位的位数
// 3. 控制流指令
JMP
jcondition
CMP/TEST
CALL/RET