
第3章 16位/32位微处理器指令系统 ➢指令:要求计算机执行各种特定操作的命令。 ➢指令系统:微机能够识别和执行的全部指令集合。 ➢不同的微处理器所对应的指令系统也不相同。 ➢本章内容: ◼ 指令的基本格式 ◼ 8086/8088的寻址方式 ◼ 8086/8088的指令系统 ◼ 80386的寻址方式和指令系统 ◼ Pentium新增加的指令

3.1 指令的基本格式 本节内容: ◼ 指令的构成 ◼ 8086/8088的指令格式

3.1.1 指令的构成 ➢ 包括两部分: ◼ 操作码:表示操作性质或类型编码 ◼ 操作数:操作对象。 ➢ 一般来说,第一字节表示操作码,第二字节表示 寻址方式,第三、四字节表示操作数在内存的位 移量或者是立即数(在指令中没有位移量时),第 五、六字节表示立即数

3.1.2 8086/8088的指令格式 基本格式: [标号:] 操作码助记符 目的操作数,源操作数 [;注释] ◼ 标号:为该条指令所在内存单元的符号地址,后面要跟冒号。 标号一般由字母开头,后跟字母、数字或特殊字符,不允许 使用保留字。 ◼ 操作码助记符:指示CPU执行什么样的操作。 ◼ 操作数:分目的操作数和源操作数两种。目的操作数是指令 结果存放的位置,源操作数是指令操作的对象。 ◼ 注释:说明本条指令或一段程序的功能,使程序可读性强。 汇编程序对其不进行处理

3.2 8086/8088的寻址方式 ➢一条汇编语言指令,有两个问题需要关注: ◼ 该条指令将进行什么操作 ◼ 操作的对象和操作后结果的存放位置。 ➢操作数的寻址方式就是指寻找操作数位置的方式。 ➢本节内容: ◼ 立即寻址 ◼ 寄存器寻址 ◼ 直接寻址 ◼ 寄存器间接寻址 ◼ 基址寻址和变址寻址 ◼ 基址变址寻址 ◼ 固定寻址

1.立即寻址 ➢ 操作数包含在指令中,这种操作数称为立即数 ◼ 可以是8位数值(00H~FFH) ◼ 也可以是16位数值(0000H~FFFFH) ➢ MOV AL,80H;将80H送入AL MOV AX,306AH;将306AH送入AX ➢ 立即数寻址方式常用来给寄存器和存储单元赋值。 ➢ 操作数直接在指令中取得,不需要使用另外的总线 周期,执行时间短、速度快

2.寄存器寻址 ➢ 操作数在CPU的内部寄存器中: ◼ 8位寄存器: AH、AL、BH、BL、CH、CL、DH、DL ◼ 16位寄存器: AX、BX、CX、DX、SI、DI、BP、SP ◼ 4个段寄存器: CS、DS、SS、ES ➢ MOV AL,BL;将BL的内容传送到AL中 MOV BX,AX;将AX的内容传送到BX中 ➢ 采用寄存器寻址的指令在执行时,操作数就在CPU中,不需 要访问存储器来取得操作数,执行速度快。另外寄存器名比 内存地址短,指令所占内存空间少

3.直接寻址 ➢有效地址EA (EffectiveAddress):操作数的偏移地址。 ➢EA可通过不同的寻址方式来得到。 ➢直接寻址方式的有效地址在指令中直接给出。 ➢默认的段基址在DS段寄存器,可使用段前缀改变。 ➢用方括号包含有效地址,如:MOV AX,[1000H]。 ➢如果有效地址是以符号地址形式提供,则可不加方括号。 MOV AX,BUFA;BUFA为符号地址,这时不加跨段前 缀,默认仍为DS数据段。如BUFA变量 在附加段中,就必须书写为: MOV AX,ES:BUFA

例子 段基址:2000H 有效地址:1000H 物理地址:21000H AX 已知: (DS)=2000H ,(21000H)=12H, (21001H)=34H。 试给出指令 MOV AX,[1000H]执行后AX的内容。 20000H 数据段 2FFFFH 21000H 21001H 12H 34H 存储器 指令执行后,(AX)=3412H

4.寄存器间接寻址 ➢ 有效地址存放在基址寄存器BX、BP或变址寄存器SI、DI中。 ➢ 如用BX、SI或DI作为间址寄存器,则默认的段基址在DS段寄存器。 ➢ 如用BP作为间址寄存器,则默认的段基址在SS段寄存器。 ➢ 可使用段前缀改变。 ➢ MOV AX,[BX] ;若(DS)=2000H,(BX)=1000H,则将数据段 21000H、21001H两个单元的内容送到AX中。 ➢ MOV CX,[BP] ;若 (SS)=4000H,(BP)=1000H,则将堆栈段 41000H、41001H两个单元的内容送到CX中。 ➢ MOV AX,ES:[SI] ;若(ES)=3000H,(SI)=1000H,则将附加段 31000H、31001H两个单元的内容送到AX中