

3-CISC,X86,RISC,MIPS指令
对应 北京大学计算机组成与体系结构第三讲 参考教材COD(计算机组成与设计-硬件/软件接口)
计算机组成与体系结构
CISC ,X86,RISC,MIPS指令
CISC:Complex Instruction Set Computer:复杂指令系统计算机
RISC:Reduced Instruction Set Computer:精简指令系统计算机
X86指令
传送类
作用:把数据或地址传送到寄存器或存储器单元中。
分为四大类14条指令
MOV指令
格式:MOV DST,SRC
操作: DST SRC
说明:DST指令表示目的操作数,SRC表示源操作数。MOV指令把一个字节或字节操作数从源传送到目的,源操作数保持距离不变。
传送方向和限制:
XCHG指令(交换)
格式:XCHG OPR1,OPR2
操作: OPTR1 OPTR2
说明:两个操作数的位宽要相同,类型包括寄存器/存储器,存储器/寄存器,寄存器/寄存器,不允许使用段寄存器
XLAT指令(换码,查表)
格式:XLAT
操作:
1. 从BX中取得数据表起始地址的偏移量
2. 从AL中取得数据表项索引值
3. 在数据表中查得表项内容
4. 将查得的表项内容存入AL
运算类
作用:完成加、减、乘、除等算术运算,提供运算结果调整,符号扩展等功能。
操作数限制:对于双操作数的指令,限制与MOV指令相同(目的操作数不能是立即数或CS寄存器,两个操作数不能同时为存储器操作数)
分类:五大类20条指令
加法类指令
ADD:加
格式:ADD DST,SRC
操作:DST DST+SRC
ADC:带进位的加
格式:ADC DST,SRC
操作:DST DST+SRC+CF
INC:加1
格式:INC OPR
操作:OPR OPR+1
十进制调整指令
格式:DAA
操作:跟在二进制加法指令之后,将AL中的和调整为压缩BCD数形式,结果返回AL
示例:
MOV AL,27H; AL=27H
ADD AL,15H; AL=3CH
DAA. ; AL=42H
BCD(binary-Coded Decimal)具有二进制编码的形式,又保持了十进制的特点,可以作为人与计算机联系时的中间表示。
转移类
作用:改变指令执行顺序
分类:根据是否有判断条件,分为无条件转移和条件转移指令;根据转移目的地址的提供方式,分为直接转移和间接转移。
无条件转移指令
直接转移:
短转移: JMP SHORT LABEL
操作:IP IP+8位的偏移量(-128~127Byte)
近转移:JMP NEAR PTR LABEL
操作:IP IP+16位的偏移量(+-32KByte)
远转移:JMP FAR PTR LABEL
操作:IP LABEL的偏移地址;CS LABEL的段基值
间接转移:JMP DWORD PTR OPR
操作:寻址到OPR指定的存储器单元双字->将该双字中的低字送到IP寄存器中->将该双字中的高字送到CS寄存器中
条件转移指令
操作:根据当前的状态标志位判断是否发生转移
说明:8086中,所有的条件转移都是短转移,80386起,条件转移指令可以使用32位的长位移量
循环控制指令
LOOPNE/LOOPNZ指令说明
格式:LOOPNE LABEL或LOOPNZ LABEL
操作:CXCX-1,若CX不为0且ZF为0,转移到LABEL处继续执行,否则结束循环顺序执行下一条指令
串操作指令
作用:对存储器中的数据串进行每次一个元素的操作
分类:共5条串操作指令,3种重复前缀
串的基本单位是字节或字,长度可达64KB
重复前缀
REP(无条件重复)
当CX!=0时,重复执行串操作指令,适用于MOVS,STO
处理完一个串元素后,CX减一
串传送方向:DF=0从低地址开始,DF=1从高地址开始
REPNE/REPNZ(不相等/不为零重复)
当CX!=0且ZF=0时,重复执行串操作指令,适用于CMPS,SCAS
处理器控制指令
作用:控制CPU的功能,对标志位进行操作
X86指令的发展历程:
MIPS指令
全称:Microprocessor without Interlocked Piped Stages
主要关注点:减少指令的类型,降低指令的复杂度
基本原则:A simpler CPU is a faster CPU
指令示例
装载
格式:lw $8,($19)
操作:以19号寄存器的内容为地址,取出存储器中的32位数据,存入八号寄存器
加法
格式:add $10 , $9 , $8
操作:将八号和九号寄存器的内容相加存入十号寄存器中(减法即为sub)
存储
格式:sw $10,32 ($19)
操作:将10号寄存器的内容存入存储器,地址为19号存储器的内容
MIPS的通用寄存器
32个,每个都是32位宽
MIPS指令的特点
1. 固定的指令长度(32-bit,即1word)
简化了从存储器取指令
对比x86长度不定,1~15字节
2. 只有Load和Store指令可以访问存储器
3. 简单的寻址模式
简化了从存储器取操作数
4. 指令数量少,指令功能简单
一条指令只完成一个操作,简化指令的执行过程
影响:处理器设计简单,运行速度快,编程复杂,代码程序量大,需要优秀的编译器
MIPS指令的基本格式
R: Register,寄存器
I:Immediate,立即数
J:Jump,无条件转移
R型指令
R型指令格式包括6个域,2个6-bit域(可表示0~63的数),4个5-bit域(可表示0~31的数)
opcode:用于指定指令的类型,对于所有R型指,该域的值均为0
funct:与opcode域结合,精确指定指令的类型
rs(Source Register):指定第一个源操作数所在的寄存器编号
rt(Target Register):指定第二个源操作数所在的寄存器编号
rd(Destination Register):指定目的操作数(保存运算结果)的寄存器编号
shamt(shift amount):用于指定移位指令进行移位操作的位数,非移位指令设为0
5-bit的域可表示0~31,对应32个通用寄存器
I型指令
大部分域与R指令相同
opcode:用于指定指令的类型
rs:指定第一个源操作数所在的寄存器编号
rt:一般指定用于目的操作数的寄存器编号;对于某些指令指定第二个源操作数所在的寄存器编号
immediate:16-bit的立即数,可以表示 个不同数值
分支指令
分类:
Branch:分支, 改变控制流
Conditional Branch:条件分支,根据比较的结果改变控制流;两条指令: branch if equal(beg);branch if not equal(bne)
Unconditional Branch :非条件分支,无条件改变控制流:指令:jump (j)
I型(条件分支)
beq rs,rt,imm #opcode=4
bne rs,rt,imm #opcode=5
目标地址计算方法:
分支条件不成立:PC=PC+4
分支条件成立:PC=PC+4+(immediate*4)
J型(非条件分支)
j addr
目标地址计算方法:PC = { }
目标地址范围:
R型(非条件分支)
jr rs
串操作指令
MOVSB(字节串传送)
格式:MOVSB
操作:将地址DS:SI所指向的存储器字节单元传送到地址ES:DI;修改SI和DI的内容,指向串的下一元素
MOVSW(字串传送)
格式:MOVSW
操作:将地址DS:SI所指向的存储器字单元传送到地址ES:DI;修改SI和DI的内容,指向串的下一元素