获取更多内容,请关注微信公众号“电路板上的一抹微笑”
第三章 指令系统
**基本概念
指令:计算机要执行的各种操作命令,一条指令对应着一种基本操作【指令是要区别于代码的】
指令系统:对特定计算机而言,其所有指令的集合【每种计算机都有其特定的指令系统】
复杂指令集计算机CISC(Complex instruction set computer),Intel Pentium
精简指令集计算机RISC(Reduced instruction set computer),PowerPC
指令的基本格式
操作码(operation code):规定指令要执行的操作,不可缺少
操作数(operated):指出执行指令所需要操作数的来源
①操作数本身
②操作数地址或操作数地址的计算方法
**多数情况下可以有1或多个操作数
单操作数
双操作数:源操作数、目的操作数
隐含操作数(CLI)
寻址:寻找操作数的过程
操作数可能在的地方:
①直接在指令中
②在CPU的某个寄存器中
③在内存中
④在I/O端口或外部设备中
寻址方式:产生地址的各种方法,对于双操作数指令而言,源和目的操作数有可能不同
寻址方式:
Ⅰ 立即寻址
指令所需操作数就在指令中,紧跟在操作码之后,与操作码一起放在代码段
立即数可以是8位,也可以是16位(如果是16位,则低字节存放在低地址单元中,高字节数存放在高地址单元中)
立即数可用2、8、10、16进制来表示
立即寻址常用来给寄存器和存储单元赋值
Ⅱ 寄存器寻址
操作数存放在CPU的内部寄存器中,在指令中直接给出寄存器名
执行速度快,主要用于存取寄存器中的数据
Ⅲ 存储器寻址方式
操作数在主存储器中,指令需要给出操作数的地址信息
8086/8088采用逻辑地址表示主存地址
①直接寻址
操作数在存储单元中,指令中操作数字段给出的是操作数的16位偏移地址EA,默认的段基地址在DS段寄存器,可使用段超越前缀改变。
用中括号包含有效地址,表达存储单元的内容
**符号地址
在汇编语言中,经常用符号地址来代替数值地址
②寄存器间接寻址
操作数在存储器中,操作数的有效地址EA由BX、BP、SI、DI中的一个指出
对于BX、SI、DI默认的段基地址在DS段寄存器,BP默认的段基地址在SS段寄存器,可使用段超越前缀改变
③寄存器相对寻址
操作数在主存储器中,操作数的有效地址:EA=BX/BP/SI/DI+8/16位偏移量
对于BX、SI、DI,默认的段基地址在DS段寄存器,对于BP,默认的段基地址在SS段寄存器,可使用段超越前缀改变
④基址加变址
操作数在主存储器中,操作数的有效地址:EA=BX/BP+SI/DI
对于BX,默认的段基地址在DS段寄存器,对于BP,默认的段基地址在SS段寄存器,都可使用段超越前缀来改变
⑤相对基址加变址
操作数在主存储器中,操作数的有效地址:EA=BX/BP+SI/DI+8/16位偏移量
对于BX,默认的段基地址在DS段寄存器,对于BP,默认的段基地址在SS段寄存器,都可使用段超越前缀来改变
Ⅳ 隐含寻址
指令的部分或全部操作数被隐含,没有直接出现在指令助记符中,操作对象一般是固定的
判断是不是存储器寻址,只要看是否由方括号即可