微机原理 寻址方式和指令编码
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 指令寻址方式——确定指令中操作数的方法
– 每个操作数都有寻址方式,一条指令可有多种寻址方式
3-1 8086 的寻址方式
AX、BX、CX、DX SP、 SI、BP 、DI
D15—D0
DB
代码段 ZF CF AF PF SF OF IF DF TF A L U DS ES SS CS IP 指令队列 数据段 堆栈段 扩展段
• 寄存器的内容为操作数
– – – – – 8位寄存器:AH,AL,BH,BL,CH,CL,DH,DL 16位通用寄存器:AX,BX,CX,DX, 16位指针寄存器:SI,DI,BP,SP,IP 16位段寄存器: CS、DS、ES、SS 16为标志寄存器:PSW
• 既能做源操作数又能做目的操作数
• 寄存器操作数执行速度快
3-1 8086寻址方式
AX、BX、CX、DX SP、 SI、BP 、DI
D15—D0 寄存器寻址
DB
直接寻址 寄存器间接 寄存器相对 基址变址
直接端口寻址 间接端口寻址
ZF CF AF PF SF OF
IF DF TF A L U
DS ES SS CS IP
立即数寻址
相对基址变址
指令队列
存储器
CB AB
3-1 寻址方式——直接寻址
• 如果直接寻址的数据不在DS段中,则要在指令中使用段超 越前缀指明段的名称。 • 如在有效地址前用“ES: ”标明对附加段的寻址。“:”是 属性修改运算符,表示计算物理地址时,不再使用缺省的 DS,而改用ES。 例: MOV AL,ES:[3024H] MOV AL,[3024H] ;PA= ES × 10H + 3024H ;PA=DS ×10H + 3024H
3-1 6位寄存器的内容 • 8086只能用两个基址寄存器BX、BP ,以及两个 变址寄存器SI、DI。
例:设 AX=0102H,BX=2346H, DS=1000H,ES=2000H
MOV AX,BX MOV AX,[BX] ;AX=2346H ;AX=3344H …
;EA = BX + SI + 12H,DS ;EA = BP + DI + BUF,SS ;EA = BX + DI +ARY,ES
3-1 寻址方式——隐含寻址
1、隐含寻址 指令中不显性指明操作数,此类指令的操作数是预先规 定的,称为隐含寻址方式。
例: STC DAA XLAT
;CF 1 ;对AL中数据进行十进制加法调整 ;查表指令
3 指令寻址方式与指令系统
主要内容
3-1 3-2 3-3 8086 的寻址方式(重点) 指令的机器码表示方法 8086指令系统(重点) 一、数据传送指令 二、算术运算指令 三、逻辑运算、移位、循环指令 四、串操作指令 五、控制转移指令 六、处理器控制指令 七、指令的执行时间和软件延时 第03章小结
3-1 寻址方式——直接寻址
例: 设 DS=5000H AH AL 78
MOV AX,[4321H] 操作码
21H
90 内容 56H
78H 90H
物理地址 54320H
54321H 54322H
43H
1. 操作数物理地址:PA = DS × 16 + EA = 54321H 2. 字数据,PA对应单元内容AL, (PA+1)对应单元内容AH
I/O接口
存储器
CB
15
A0 BHE
WR
RD M/IO
8086最小系统
A19—A1
AB
19
数据存放地点:寄存器,程序存储器,数据存储器,I/O接口
数据传送指令 MOV 目的,源;目的源 操作: 将源操作数的值复制到目的操作数中, 原操作数保持不变
以MOV指令的操作数为例,说明寻址方式
3-1 寻址方式——寄存器寻址
3-1 寻址方式——符号地址
• 在汇编语言中,可以事先把一个存储单元的有效地址定 义为一个符号,在程序中使用符号地址而不直接使用数 值地址 • 定义字节数据用DB,定义字数据用DW。 例: ARRAY1
DW
0506H ;AX=0506H
MOV AX,ARRAY1
对符号地址,可以不加[ ],等价于直接寻址。 MOV AX,ARRAY1 == MOV AX,[ARRAY1]
指令队列缓冲器
3-1 寻址方式——存储器操作数寻址 • 存储器寻址方式的关键是确定操作数的逻辑地址。 PC机中,段内偏移地址被称为有效地址EA
逻辑地址 = 段基址:有效地址EA
• 存储器操作数的执行速度较慢
– EU计算16位有效地址并送BIU
– BIU确定段基址,计算20位物理地址 – BIU读取指定单元中操作数的值,送到EU中运算
•
分为“操作码域”和“操作数域”
– 操作码域:指令的第一个字节或者头两个字节表示指 令的操作码和寻址方式,称为操作码域 – 操作数域:操作码域后面所跟的字节统称为操作数域
3-2 指令的机器码表示方法 1、操作码OP:
例: ;端口直接寻址, PORT=8位端口号 IN AX,PORT OUT PORT,AX IN AL,PORT OUT PORT,AL ;端口间接寻址,DX=16位端口号 IN AX,DX OUT DX,AX IN AL,DX OUT DX,AL
;直接字输入, ; 直接字输出 ; 直接字节输入 ; 直接字节输出 ;间接字输入 ;间接字输出 ;间接字节输入 ;间接字节输出
① EA = BX + 12H = 0AB00H + 12H = 0AB12H ② PA = DS × 10H + EA = 20000H +0AB12H = 2AB12H 例: MOV AL,ARY[BX]
① EA = BX + ARY = 0AB00H + 0F000H = 1 9B00H,进位,而 EA只能取低16位,故EA=9B00H,进位位自然丢失 ② PA=DS × 10H + EA = 20000H + 9B00H = 29B00H
• EA要用[ ]括起来,[EA],以区分其它寻址方式,[ ] 有“取有效地址”的含义
3-1 寻址方式——存储器操作数寻址
EA有五种方法确定,对应不同的存储器寻址方式
寻址方式 直接寻址 寄存器间接寻址 寄存器相对寻址 有效地址EA的值 指令中的16位常数 16位寄存器的值 寄存器 + 8位/16位的相 对位移量 举例 [1234H], Data1 [BP], [BX], [SI], [DI] [BP+Disp], [BX+Disp], [SI+Disp], [DI+Disp] [BP+SI], [BX+SI], [BP+DI] [BX+DI]
19
I/O接口
15
A0 BHE
WR
RD M/IO
8086最小系统
A19—A1
操作数寻址方式
3-2 指令的机器码表示方法
3-2 指令的机器码表示方法
一、机器语言指令的编码目的和特点 • 机器语言指令
– CPU只能识别和执行二进制机器码指令。
•
机器语言指令的编码特点
– 指令机器码有单字节、双字节、多字节之分,8086 CPU最长指令有 6 字节 – 一般通过查表即可找到对应的机器码
• 有效地址EA是一个基址或变址寄存器的内容与一个8位或 16位的位移量之和 • 默认段基址由寄存器决定,BP SS;BX、SI、DI DS • 段超越前缀指定非缺省的段基址 例: MOV AX,[BX- 12H] ;EA=BX-12H,DS MOV AL,CNT [BP] ;EA=BP+CNT,SS MOV BX,ES: ARY[DI] ;EA=DI+ARY,ES
3-1 寻址方式——立即数寻址
AH BH CH DH AL BL CL DL SP BP SI DI 地址 加法 器
∑
20位
操作码 OP 34H 12H
16位
CS DS SS ES IP 内部暂存器
16位
输入/输出 控制电路
ALU
标志寄存器
执行部分 控制电路
8位
OP 1122 3334 44 55 12 66
3-1 寻址方式——基址变址寻址
• 有效地址EA是一个基址寄存器(BX,BP)与一个变址寄 存器(SI,DI)的内容之和 • 默认段由基址寄存器决定,BP SS,BX DS • 用段超越前缀指定非缺省的段基址 • 注意计算EA和PA时进位的自然丢失
例:
MOV AX,[BX +SI] ;EA = BX + SI,DS MOV AL, [BP] [DI] ;EA = BP + DI,SS MOV BX,ES: [BX] [DI] ;EA = BX + DI,ES
3-1 8086的寻址方式
3-1 8086 的寻址方式
每条指令,都是对某些数据进行一定的操作或运算
(1) (2) MOV AX,BX 执行:把BX寄存器的内容复制到AX寄存器中 ADD CL,21H 执行:把常数21H加到CL寄存器中
• 指令的要素
– 指令执行的何种操作——操作码,如:MOV,ADD – 指令执行的哪个对象——操作数,如:AX,BX,CL,CH – 执行前的数称为源操作数,执行后的结果称为目的操作数 – 两个操作数用“,”分隔,左边为目的,右边为源,
• 物理地址PA分两步形成: • 第1步EU计算有效地址EA。EA的计算是16位数据运算, 通过16位内部总线传送,超过16位的数据会自然丢失。 • 第2步BIU根据EA和段基址计算物理地址,这一步在地址 加法器中完成。
3-1 寻址方式——寄存器相对寻址
例:设DS=2000H,BX=0AB00H,ARY=0F000H 例: MOV AL,[BX+12H]
12346H
44H
33H
…
1. 源操作数物理地址:
PA = DS × 16 + EA = 10000H + 2346H = 12346H
2. 取物理地址为12346H的字数据送AX中,即取 (12346H)单元的内容送AL中,(12347H)单元的内 容送到AH中。
3-1 寻址方式——寄存器相对寻址
3-1 寻址方式——直接寻址 • 在指令中以常数形式直接给出操作数的16位有效地 址EA,EA作为指令码的一部分,紧跟操作码存放在 代码段中。 • EA是用[ ]括起来,以与立即数区分。
• 有效地址EA的存储顺序与16位立即数相同,低字节 存放在低地址单元中,高字节存放在高地址单元中
• EU从指令队列中直接获得EA送BIU。 • 段基址的默认值是DS。
例: MOV DS,AX ;DS AX
3-1 寻址方式——立即数寻址
• 立即数是直接包含在指令代码中的8位或16位的常数,其值 在程序运行过程中不变,是软件处理常数的最广泛的方法
• 立即数是指令码的一部分,紧跟在操作码之后存放在程序存 储器(代码段)中。执行时,EU从指令队列中获得该操作数
• 16位立即数,按字数据格式存放,即低字节存放在低地址单 元中,高字节存放在高地址单元中 • 立即数只能做源操作数,不能做目的 • 以A-F打头的立即数,前面加0,以区别其它字符 • 立即数寻址方式不需要计算存储单元地址,执行速度最快 例:MOV AX, 1234H ; AX1234H
3-1 寻址方式——相对基址变址寻址
• 有效地址EA是一个基址寄存器(BX,BP)与一个变址寄存 器(SI,DI)的内容之和,再加上一个8位或16位的位移量 • 默认段由基址寄存器决定,BP SS,BX DS • 用段超越前缀指定非缺省的段基址 • 注意计算EA和PA时的自然丢失
例: MOV AX,[BX +SI+12H] MOV AL,BUF[BP][DI] MOV BX,ES:ARY[BX] [DI]
3-1 寻址方式——I/O端口寻址
I/O端口:I/O接口电路中存放数据的地方 ① 8086使用低16位地址信号寻址I/O端口,寻址范围64kB 空间。I/O端口寻址不使用地址加法器 ② 访问I/O端口使用输入IN、输出OUT指令,M/IO=0;访问 内存用MOV指令,M/IO=1 ③ 直接寻址与间接寻址两种方式
基址变址寻址
基址寄存器+变址寄存器
基址寄存器+变址寄存器 相对基址变址寻址 +相对位移量
[BP+SI+Disp], [BP+DI+Disp] [BX+SI+Disp], [BX+DI+Disp]
段基址的值来自CS、DS、ES、SS,有两种方法确定: 1. 默认段寄存器:有BP则为SS,其它均为DS 2. 指定段寄存器:段超越符,DS:,ES:,SS:,CS: