当前位置:
文档之家› 第3章(1) 寻址方式和指令系统
第3章(1) 寻址方式和指令系统
EA的组成不同,寻找其中的操作数的方式也随之不同。如何寻找操作数 的有效地址,进而找到所需操作数的方式就是寻址方式 因为EA的组成方式都体现在指令中,故寻址方式也可以说是在指令中获得 操作数所在地址的方法。
3.1 Pentium的寻址方式
• 指令的两个问题
– 指出进行什么操作 – 涉及的操作数和操作结果放在何处
在这种寻址方式中,操作数是在存储器中,但是,操作 数的地址的16位偏移量包含在以下四个寄存器SI、DI、 BP、BX之一中。这又可分成两种情况: 1、 BX、SI、DI间址时以DS为默认段地址; 例:MOV AX,[SI] 2、BP间址时以SS为默认段地址。 例:MOV AX,[BP]
医药信息工程学院 何永玲
二、操作数存在方式
在微型计算机中,操作数可能以以下四种方式存在:
• 操作数包含在指令中——即指令的操作数场就包含着操作数本身。
MOV AX, 1234 ; ADD AL, 2
• 操作数包含在CPU的某一个内部寄存器中—— 这时指令中的操作数场是
CPU内部 寄存器的一个编码。
MOV DS, AX
• 操 作 数 在 内 存 的 数 据 区 中 —— 这 时 指 令 中 的 操 作 数 场 包 含 着 此 操 作 数 的
医药信息工程学院 何永玲
3.2.2 算术运算指令(1-P88)
– 不带进位位的加法指令ADD
比如: ADD ADD ADD ADD 比如: ADC ADC ADC CX,1000H ;CX=CX+1000h DI,SI [BX+DI],AX EAX,[BX+2000H]
• 无符号数和有符号数采用同一套加法指令及减法 所有算术运算指令均影响状态标志。 指令有两个条件:
规则: – 同为无符号数或有符号数 当无符号数运算产生溢出时, CF为1; – 用不同的方法检测无符号数或有符号数的运算结果是 否溢出 当有符号数运算产生溢出时,OF为1; 无符号数 SF和OF支持有符号数的运算; 8位位范围为: 0~255, 16位范围为0~65 535 如运算结果为0,则ZF=1; 有符号数 如运算结果为负数,则 SF=1; -32 768~+32 767 8位范围为-128~+127, 16位范围为: 如运算结果的低 8 位中有偶数个 1 ,则 PF=1 。
间接的I/O指令 IN IN IN OUT OUT
AL,DX AX,DX EAX,DX DX,AX DX,EAX
① 只能用累加器作为执行 输入输出的机构 ② 寻址范围: 直接: 0~255 间接: 0~65 535 ③ 用 间 接 I/O 指 令 时 , 只能 用DX
医药信息工程学院 何永玲源自 3.2.1 传送指令(5-P84)
医药信息工程学院 何永玲
5 相对的基址加变址寻址
医药信息工程学院 何永玲
存储器寻址
6 相对的带比例因子的变址寻址 IMUL EBX,[ESI*4+7] 7 基址加比例因子的变址寻址 MOV EAX,[EBX][ESI*4] MOV ECX,[EDI*8][EAX] 8 相对的基址加比例因子的变址寻址 MOV EAX,[EDI*4][EBP+80]
医药信息工程学院 何永玲
4 基址加变址的寻址
医药信息工程学院 何永玲
存储器寻址
5 相对的基址加变址寻址 MOV AX,[BP+SI+0050] • 相对基址加变址寻址即以某 一基地址寄存器(通常为 BX、BP)的内容,加上某 一变址寄存器(通常为SI, DI)的内容,再加上给定的 8位或16位偏移量,形成了 操作数的有效地址。 • 段地址规则同上。
医药信息工程学院 何永玲
3 寄存器相对寻址
医药信息工程学院 何永玲
存储器寻址
4 基址加变址的寻址 MOV AX,[BX+SI] MOV EDX,[EBX+ESI] MOV EDX,[EBX] [ESI] 基址加变址寻址即以某一基 地址寄存器(通常为BX、 BP)的内容,加上某 一 变址寄存器(通常为SI, DI)的内容,形成操作数 的有效地址。段地址规则 同上。
医药信息工程学院 何永玲
3.2.1 传送指令(6-P85)
• 地址传送指令LEA和LDS/LES/LSS/LFS/LGS 比如: LEA AX,[2728] LEA BX,[BP+SI] LEA ESI,[EBX+ECX+2530H] LEA EDI,[BX+1946H]
源操作数总是来 自存储器!!!
取段码和偏移量的指令LDS/LES/LSS/LFS/LGS 比如: LDS DI,[2530H] :将2531H和2530H中的内容(16位)送DI,
2533H和2532H中的内容送DS。
LES LSS
EDI,[1000H] ESP,[EDX]
医药信息工程学院 何永玲
3.2.2 算术运算指令-P86
• XLAT/XLATB
– 换码指令XLAT/XLATB 格雷码编码规则如下:
0——11000 2——00101 4——01001 6——01100 8——10010 1——00011 3——00110 5——01010 7——10001 9——10100
MOV BX,1000H MOV AL,5 XLAT ;AL=(BX+AL)
POP POP POP
BX ES EAX
② 推入指令,SP减2或4,低地址低 字节,数据在栈顶。弹出指令正好 相反。 ③ 允许PUSH CS,但不允许POP CS。 ④ 堆栈的后进先出。
医药信息工程学院 何永玲
3.2.1 传送指令(3-P82)
• 字节交换指令 思考P82: XCHG
XCHG AL,BL 为什么说一条 XCHG指令相当于三条MOV XCHG BX,CX 指令? XCHG [2530],CX
医药信息工程学院 何永玲
3.2 Pentium指令系统
• Pentium的指令分为如下几类:
– – – – – – – – – – 传送指令; 串操作指令; 算术运算指令; 逻辑运算和移位指令; 转移和调用指令; 标志操作和处理器指令; 控制指令; 条件测试和字节设置指令; 系统管理指令; 支持高级语言的指令。
医药信息工程学院 何永玲
数据传送指令
将数据从机器的一个地方传送到机器 的另 一个地方。它们有数据传送、交换、堆栈 操作和其它传送等不同类型的指令
医药信息工程学院 何永玲
医药信息工程学院 何永玲
3.2.1 传送指令(1-P80)
• 通用传送指令MOV
– 两个操作数的数位相同的传送指令MOV
MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV AL,BL ;AL=BL ES,DX AX,[BX] [DI],AX CX,[1000] WORD PTR [SI],6070H DX,5040H EAX,[EBX+ECX*2+1000H] CRn,EAX DRn,EAX
第3章(2) Pentium的指令系统
重点内容: •寻址方式; •传送指令中的堆栈指令、交换指令、换码 指令、输入/输出指令; •算术运算指令中的比较指令; •串操作指令;
医药信息工程学院 何永玲
指令系统
计算机是通过执行指令来管理计算机并完成一系列给定功能的。因而, 每种计算机都有一组指令集提供给用户使用,这组指令集叫做计算机的指令 系统。不同的计算机指令不同,指令集中指令的数量也不同,大体上在几十 种到百余种。 指令通常应提供的信息 1. 做什么操作 2. 操作数从哪里来 3. 操作结果放在哪里 4. 对于调用和转移指令,还要涉及转移或调用地址的提供方式 一、 8086的指令格式 指令的一般格式为: 操作码 操作数 … 操作数
AL,80H 80H,AX EAX,80H
IN OUT OUT
AL,DX DX,AX DX,EAX
医药信息工程学院 何永玲
存储器寻址
1 直接寻址 MOV
AX,[2000H]
医药信息工程学院 何永玲
1 直接寻址
医药信息工程学院 何永玲
存储器寻址
2 寄存器间接寻址 MOV MOV
AX,[BX] EAX,[EBX]
操作数是
由指令中的寄存器决定
医药信息工程学院 何永玲
立即数寻址
医药信息工程学院 何永玲
立即数寻址
医药信息工程学院 何永玲
寄存器寻址
医药信息工程学院 何永玲
寄存器寻址
医药信息工程学院 何永玲
寻址方式
• 3.1.3 输入/输出端口寻址
– I/O直接寻址 比如:
IN OUT IN
– I/O间接寻址
交换指令注意点:
XCHG XCHG
EAX,EDI ESI,[EBX]
① 目的操作数和源操作数不能均为内存单元。 ② 段寄存器和IP、EIP不能作为交换指令的 操作数。
医药信息工程学院 何永玲
3.2.1 传送指令(4-P83)
• 累加器专用传送指令IN/OUT
– 输入/输出指令IN/OUT
直接的I/O指令比如: IN AL,50H IN AX,70H IN EAX,70H OUT 80H,AX
操作码 —— 告诉计算机要执行的操作是什么,如:加、减、逻辑与等。 操作数 ——指出指令在执行过程中所需要的 操作数(值为多少 或者放在什么地方),以及操作结果送到哪里
操作码场
字节1 字节2 字节3
操作数的 低位地址 或 低位数据 字节
操作数场
字节4
操作数的 高位地址 或 位数据 字节
字节5
操作数的 低位数据 字节
• 两种情况下涉及寻址方式
– 操作数寻址 – 转移地址和调用地址进行寻址
医药信息工程学院 何永玲
寻址方式