第三章8086/8088的指令系统 第一节操作数寻址方式 第二节转移地址寻址方式 第三节指令介绍 1/133
1/133 第三章 8086/8088的指令系统 第一节 操作数寻址方式 第二节 转移地址寻址方式 第三节 指令介绍
指令的组成 .MOV [BXIISIL,AX ADD AX,BX 指令一般格式: -标号:助记符参数1,参数2,参数3 -助记符:MOV、ADD等 -BXJ[SI、AX和BX属于参数 ·助记符(操作码) 一标明需要计算机执行的操作 操作数参数 -数量取决于操作码,可以为0~3个 一用于存放指令在执行过程中所需要的操作数和操作结果 ·了解指令的功能,同时也要注意指令对隐含寄存器和标志位的影响 2/133
2/133 指令的组成 •MOV [BX][SI], AX ADD AX, BX •指令一般格式: –标号: 助记符 参数1, 参数2, 参数3 –助记符:MOV、ADD等 –[BX][SI] 、AX和BX属于参数 •助记符(操作码) –标明需要计算机执行的操作 •操作数参数 –数量取决于操作码,可以为0~3个 –用于存放指令在执行过程中所需要的操作数和操作结果 •了解指令的功能,同时也要注意指令对隐含寄存器和标志位的影响
第一节 操作数寻址方式 1.立即数寻址 2.寄存器操作数寻址 3.存储器操作数寻址 直接寻址 寄存器间接寻址 寄存器相对寻址 基址/变址寻址 相对基址/变址寻址 4. IO端口操作数寻址 直接寻址 间接寻址 3/133
3/133 第一节 操作数寻址方式 1. 立即数寻址 2. 寄存器操作数寻址 3. 存储器操作数寻址 直接寻址 寄存器间接寻址 寄存器相对寻址 基址/变址寻址 相对基址/变址寻址 4. IO端口操作数寻址 直接寻址 间接寻址
1.立即数寻址 1) 格式:操作数以常数的形式直接表示在指令中。 MOV AL,5 ;AL←5 MOV AX,1234H ;AX←1234h (2) 物理地址:在内存的代码段内,指令执行时不需再存取存储器, MOV AX,1234H AH=12H,AL=34H 低地址 AX 操作码 12H 34H 34H 12H 高地址 4/133
4/133 (1) 格式:操作数以常数的形式直接表示在指令中。 MOV AL,5 ;AL5 MOV AX,1234H ;AX1234h (2) 物理地址:在内存的代码段内,指令执行时不需再存取存储器。 MOV AX,1234H ;AH=12H,AL=34H 1.立即数寻址 低地址 高地址 12H 34H 12H 34H
(3) 适用于:给寄存器或存储单元赋初值。 (4) 注意: a.不能直接对段寄存器用立即数赋值; b.立即数不能作目的操作数; c.给存储器操作数用立即数赋值时, 要指明WORD/BYTE PTR MOV BYTE PTR [100HL,5FH d.以A-F打头的数字出现在指令中时,前面要加数字0, 以免与变量名等符号混淆 MOV BX,0F77H 5/133
5/133 (3) 适用于:给寄存器或存储单元赋初值。 (4) 注意: a.不能直接对段寄存器用立即数赋值; b.立即数不能作目的操作数; c.给存储器操作数用立即数赋值时, 要指明WORD/BYTE PTR MOV BYTE PTR [100H],5FH d.以A-F打头的数字出现在指令中时,前面要加数字0, 以免与变量名等符号混淆 MOV BX,0F77H
2.寄存器寻址 (1)格式:操作数是通用寄存器或段寄存器中的内容。 寄存器可以是: 通用寄存器(AX,BX,CX,DX,SP,BP,SI,DI, AH,AL,BH,BL,CH,CL,DH,DL) 段地址寄存器(CS,SS,DS,ES) 标志寄存器 INC CX ;CX←CX+1 MOV SS,AX ;SS←AX ADD CL,BH CL←CL+BH (2)物理地址:操作数在CPU内的寄存器中。 6/133
6/133 (1)格式:操作数是通用寄存器或段寄存器中的内容。 寄存器可以是: 通用寄存器(AX,BX,CX,DX,SP,BP,SI,DI, AH,AL,BH,BL,CH,CL,DH,DL) 段地址寄存器( CS,SS,DS,ES) 标志寄存器 INC CX ;CXCX+1 MOV SS,AX ;SSAX ADD CL,BH ;CLCL+BH (2)物理地址:操作数在CPU内的寄存器中。 2.寄存器寻址
MOV AX,BX ;AX←BX AX BX 34H 34H (3)特点:执行时间短,只访问寄存器,不访问内存。 (4)注意: A.CS一般不要求用户赋值。否则语法无错,执行错。 B.两个操作数的长度必须一致 7/133
7/133 (3)特点:执行时间短,只访问寄存器,不访问内存。 (4)注意: A. CS一般不要求用户赋值。否则语法无错,执行错。 B. 两个操作数的长度必须一致 MOV AX, BX ;AXBX 12H 34H AX BX 34H
3.存储器寻址 操作数在内存中除代码段以外的存储区中。 地址总线(Address Bus) 中央处理器 数据总线(Data Bus) (CPU) 控制总线(Control Bus 10接口电路 存储器 (Memory) 10设备 8/133
8/133 操作数在内存中除代码段以外的存储区中。 3.存储器寻址 中央处理器 (CPU) 地址总线(Address Bus ) 数据总线(Data Bus ) 控制总线(Control Bus ) 存储器 (Memory) IO接口电路 IO设备
物理地址=段寄存器<<4bit+EA(有效地址或偏移地址) 确定物理地址的关键:从指令中找出EA,再确定用哪个段 寄存器。 直接寻址 寄存器间接寻址 寄存器间接寻址 ↑ [立即数] [寄存器BXBP] [寄存器SI/DI川 寄存器相对寻址 基址变址寻址 相对基址变址寻址 9/133
9/133 [立即数] [寄存器BX/BP] [寄存器SI/DI] 直接寻址 寄存器间接寻址 寄存器间接寻址 寄存器相对寻址 基址变址寻址 相对基址变址寻址 物理地址=段寄存器<<4bit+EA(有效地址或偏移地址) 确定物理地址的关键:从指令中找出EA,再确定用哪个段 寄存器
3.1直接寻址 (1)格式:操作数表示成立即数]、变量名或变量名 (变量名称符号地址。DEBUG中不能用变量名) MOV AX,[2000H] MOV AX,VALUE 或MOV AX,[VALUE MOV AX,[VALUE+2 或MOV AX,[VALUE+2 也可指明段寄存器(称段超越): MOV AX,ES:[2000H] MOV AX,CS:VALUE 其中的“:”称修改属性运算符 (2)物理地址: PA=DS(或段超越指定的段寄存器)<<4+立即数或变量的偏移 10/133
10/133 (1) 格式:操作数表示成[立即数]、[变量名]或变量名 (变量名称符号地址。DEBUG中不能用变量名) MOV AX,[2000H] MOV AX,VALUE 或MOV AX,[VALUE] MOV AX,[VALUE+2] 或MOV AX,[VALUE]+2 也可指明段寄存器(称段超越): MOV AX,ES:[2000H] MOV AX,CS:VALUE 其中的“:”称修改属性运算符 (2)物理地址: PA=DS(或段超越指定的段寄存器)<<4+立即数或变量的偏移 3.1 直接寻址