3.1 寻址方式

合集下载

汇编语言第三章答案

汇编语言第三章答案

3.1 给定(BX)=637DH,(SI)=2A9BH,位移量D=7237H,试确定在以下各种寻址方式下的有效地址是什么?(1) 立即寻址(2) 直接寻址(3) 使用BX的寄存器寻址(4) 使用BX的简接寻址(5) 使用BX的寄存器相对寻址(6) 基址变址寻址(7) 相对基址变址寻址答:(1) 操作数在指令中,即立即数;(2) EA=D=7237H;(3) 无EA,操作数为(BX)=637DH;(4) EA=(BX)=637DH;(5) EA=(BX)+D=0D5B4H;(6) EA=(BX)+(SI)=8E18H;(7) EA=(BX)+(SI)+D=1004FH;超过了段的边界,最高进位位丢失,因此EA=004FH。

3.2 试根据以下要求写出相应的汇编语言指令(1) 把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器中。

(2) 用寄存器BX和SI的基址变址寻址方式把存储器中的一个字节与AL寄存器的内容相加,并把结果送到AL寄存器中。

(3) 用寄存器BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和(CX)相加,并把结果送回存储器中。

(4) 用位移量为0524H的直接寻址方式把存储器中的一个字与数2A59H相加,并把结果送回存储单元中。

(5) 把数0B5H与(AL)相加,并把结果送回AL中。

答:(1) ADD DX, BX(2) ADD AL, [BX][SI](3) ADD [BX+0B2H], CX(4) ADD WORD PTR [0524H], 2A59H(5) ADD AL, 0B5H3.3 写出把首地址为BLOCK的字数组的第6个字送到DX寄存器的指令。

要求使用以下几种寻址方式:(1) 寄存器间接寻址(2) 寄存器相对寻址(3) 基址变址寻址答:(1) MOV BX, OFFSET BLOCKADD BX, (6–1)*2MOV DX, [BX](2) MOV BX, OFFSET BLOCK 改为:MOV BX, (6-1)*2MOV DX, [BX+(6–1)*2] 也可MOV DX, BLOCK[BX](3) MOV BX, OFFSET BLOCKMOV SI, (6–1)*2MOV DX, [BX][SI]3.4 现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=B7H,(21203H)=65H,试说明下列各条指令执行完后AX寄存器的内容。

第3章 8086的指令系统—3.1寻址方式

第3章 8086的指令系统—3.1寻址方式
EA=[基址寄存器]+([变址寄存器] *比例因子)+位移量 BX,BP SI,DI 1 0,8,16
例:(BX)=2000H,(SI)=1000H,偏移量=0250H,
则EA= 2000H+1000H+0250H=3250H
寻址目的
确定本条指令的操作数据 在指令中 PA:存储器内的绝对地址(20位) 在存储器中 EA:某个段内的相对地址(16位) 在寄存器中 确定下一条指令的地址 根据指令长度计算 根据转移指令的目标地址
寄存器名表示其内容(操作数)
MOV AX, BX
MOV AL, BH
;AX←BX
;AL←BH
演示
第3章: 3.1.3 存储器寻址方式
操作数在主存储器中,用主存地址表示 程序设计时,8088采用逻辑地址表示主存地址
段地址在默认的或用段超越前缀指定的段寄存器中 指令中只需给出操作数的偏移地址(有效地址EA)
演示
;AX←DS:[SI+06H]
第3章:4. 基址加变址寻址方式
有效地址由基址寄存器(BX或BP)的内容加上 变址寄存器(SI或DI)的内容构成: 有效地址=BX/BP+SI/DI 段地址对应BX基址寄存器默认是DS,对应BP基 址寄存器默认是SS;可用段超越前缀改变
MOV AX, [BX+SI] MOV AX, [BX][SI]
*微型计算机汇编语言特点 *微型计算机指令系统概述 *寻址方式
指令及其格式
指令及指令集 计算机能够识别和执行的基本操作命令
指令的作用
告诉CPU干什么?What? 告诉CPU从哪儿取数据?Where? 告诉CPU下一条指令在哪儿?Where? 操作码 操作数或操作数地址 指令的格式

第3章_指令及动画

第3章_指令及动画

传送指令
3.2.1 数据传送
• 通用传送指令 (5)
– MOV、XCHG、XLAT、PUSH、POP
• 输入输出指令 (2)
– IN、OUT
• 地址传送指令 (3)
– LEA、LDS、LES
• 标志传送指令 (4)
– LAHF SAHF PUSHF POPF
14条!
电子信息微机学原院理与严接华口技, 卿术粼波11
• 举例
– PUSH AX
PUSH [BX]
电子信息微机学原院理与严接华口技, 卿术粼波17
PUSH指令演示
3.2.1 数据传送
电子信息微机学原院理与严接华口技, 卿术粼波18
出栈指令POP
3.2.1 数据传送
POP dst
• 功能
– ① dst← SS:[SP] – ② SP ← SP + 2
电子信息微机学原院理与严接华口技, 卿术粼波23
地址传送指令LEA
LEA reg,src
3.2.1 数据传送
Load Effective Address
• 功能
– 将存储器操作数src的有效地址送至指定的16 位通用寄存器
• 说明
– reg:16位通用寄存器 src:存储器操作数
• 举例
– MOV DI,2000H
第3 章
EI Electronics Information Engineering
Sichuan University
Principle of Microcomputer and Interface Technology
微机原理与接口技术
第3章 指令系统
电子信息学院 严华, 卿粼波
教学重点

[物理]单片机3第三章寻址方式

[物理]单片机3第三章寻址方式
单片机原理及应用
北京化工大学 信息科学与技术学院 郭 青
1
第三章
本章重点
寻址方式
80C51指令系统
指令格式
操作结果及对标志位影响
3.1
111条指令
概述
29 24 24 17
数据传送类指令 数学运算类指令
分类
逻辑运算类指令 控制转移类指令
位操作指令
17
单字节指令 按指令长度分类
双字节指令
三字节指令 12个振荡周期 64
COUNT:PUSH DPH; 保护DPTR内容
PUSH DPL;
MOV DPTR,#TABLE ;赋表首地址给DPTR
MOVC A, @A+DPTR
; POP DPL; 根据A中内容查表 恢复DPTR内容 返回主程序
POP DPH
RET;
ORG 1000H TABLE:DB 00 DB 01 DB 04 DB 09 DB 16 DB 25 DB 36 DB 49 DB 64 DB 81
19
3.3.1 数据传送类指令
按操作方式,分为三种: 数据传送 数据交换 栈操作
一、普通传送类指令 格式: MOV (目的操作数),(源操作数) 操作码助记符 操作: 将源操作数单元内容,传送到目的操作数 单元中,源操作数内容不变。不影响标志 位Cy,AC和OV。
操作数的组合关系
1、立即数的传送 MOV A, #data MOV Rn, #data (A) (Rn) #data #data
d:MOV direct,#data
将8位立即数送入由direct直接寻址的地 址单元中。 direct:00H~FFH,8位二进制地址码
寻址内部RAM(00H~7FH)及SFR

3-1 寻址

3-1 寻址

一般数据存取
3.直接寻址方式
操作数的地址的 16位偏移量直接包含 在指令中,它与操作 码一起在码段区域中 ,但操作数一般在数 据段区域中,它的地 址为数据段寄存器 DS 加 上 它 的 16 位 地 址偏移量。 指 令 中 的 16 位 地址偏移量是低位字 节在前,高位字节在 后。 这种寻址方法,是 以数据段寄存器的地 址为中
四、有效地址
8086的内存地址 : 段基址
存放在 CS DS ES SS 中
+
段内偏移量。
存放 在 BX、BP、SI、DI 中 , 或 直接地址 如 [3000H]中, 或 上述形式的组合中。
段内偏移量可以由几部分组成,组成后的地址称为有效地址 EA。 EA可以由以下各种情况构成:
三、操作数存在方式
在微型计算机中,操作数可能以以下四种方式存在: • 操作数包含在指令中——即指令的操作数部分就包含着操作数本身。 MOV AX, 1234 ; ADD AL, 2 • 操作数包含在CPU的某一个内部寄存器中 —— 这时指令中的操作数是CPU内部的某一个寄存器 MOV DS, AX • 操作数在内存存储单元中—— 这时指令中的操作数包含着此操作数的地址 MOV AX,[2000] ; MOV buffer[SI],AX
4.寄存器间接寻址
在这种寻址方式中, 操作数是在存储器中, 但是,操作数的地址的 16位偏移量包含在以下 四个寄存器SI、DI、BP 、BX之一中。这又可分 成两种情况: 1、 BX、SI、DI间址 时以DS为默认段地址; 例:MOV AX,[SI] 2、BP间址时以SS为默 认段地址。 例:MOV AX,[BP]
第3章 8086/8088指令系统
• 主要内容 一、 指令格式与寻址方式 二、 数据传送类指令 三、 算术运算指令 四、 逻辑运算指令 五、 串操作指令 六、 控制转移指令 七、 处理器控制指令 他们彼此深信,是瞬间迸发的热情让他们相遇。 这样的确定是美丽的,但变幻无常更为美丽。

汇编语言第3章 指令系统和寻址方式

汇编语言第3章 指令系统和寻址方式

5.寄存器相对寻址方式(register relative addressing)
EA=基址(base) 或变址( index)+偏移量 (displacement)
基址寄存器有:BX,BP 变址寄存器有:SI,DI 注:默认段是数据段和堆栈段
(SI) 物理地址=(DS)*16+(BX)+displacement
(DI) =(SS)*16+(BP)+ (SI)+displacement (DI)
例:mov AX,ARRAY[BX][DI] (DS)=1000H,(BX)=1200H, (DI)=1000H, ARRAY=1000H 物理地址=DS*16+(BX)+(DI)+ARRAY =DS*16+1200+1000+1000=13200H 若:(13200)=34H,(13201)=12H 则,(AX)=1234H 允许段超越。 例:mov AL,ES:ARRAY[BX][DI] 用途:处理成组数据(举例说明)
2.段内间接寻址(intrasegment indirect addressing) (IP)新=EA=寄存器或存储单元的内容 寄存器:所有寄存器寻址方式可用的寄存器 存储单元:所有存储单元寻址方式均适用 例:JMP SI (IP)=(SI) JMP WORD PTR VAR或简写JMP VAR (DS)=1000H,VAR=2000H 存储单元的物理地址=(DS)*16+VAR=12000H (12000H)=1234H 则,(IP)新=1234H
4.寄存器间接寻址方式(register indirect addressing)
EA=基址(base) 或变址( index) 基址寄存器有:BX,BP 变址寄存器有:SI,DI 注:默认段是数据段和堆栈段 (SI) 物理地址=(DS)*16+(BX) (DI) =(SS)*16+(BP)

【微机原理】3.1-8086寻址方式

【微机原理】3.1-8086寻址方式

3.1.6 基址变址寻址方式
Based Indexed Addressing
• 有效地址是一个基址寄存器(BX或BP)和一个变址寄 存器(SI或DI)的内容之和,两个寄存器均由指令指 定。
• 若基址寄存器为BX时,段址寄存器用DS,则: 物理地址 = 16×DS+BX+SI 或 = 16×DS+BX+DI
§3.1 8086的寻址方式
3.1.1 立即寻址方式 3.1.2 寄存器寻址方式 3.1.3 直接寻址方式 3.1.4 寄存器间接寻址方式 3.1.5 寄存器相对寻址方式 3.1.6 基址变址寻址方式 3.1.7 相对基址变址寻址方式 3.1.8 其它寻址方式
3.1.4 寄存器间接寻址方式
Register Indirect Addressing
• 这种情况下,也允许用段超越前缀将SS修改为CS、DS或ES中的一个, 计算物理地址时,应将上式中的SS改为相应的段寄存器。
• 其余情况均隐含使用DS提供基地址,它们的物理地址计算方法: 物理地址=16×DS+EA
相对基址变址寻址
• 这类操作数可以有以下几种形式:
― [DISP]
;EA=DISP
立即寻址
• 立即数可以送到寄存器中,还可送到一个存储单元 (8位)中或两个连续的存储单元(16位)中去。 • 立即数只能作源操作数,不能作目的操作数。
• 以A~F打头的16进制数字出现在指令中时,前面一 定要加一个数字0。 例如,将FF00H送到AX的指令必须写成:
MOV AX,0FF00H
§3.1 8086的寻址方式
• 寻址方式就是指令中说明操作数所在地址的方法。
• 指令有单操作数、双操作数和无操作数之分。如 果是双操作数,要用逗号分开,左边的为源操作 数,右边的为目的操作数。

51单片机指令系统

51单片机指令系统

第 3 章 MCS - 51单片机指令系统
POP DPH POP DPL POP ACC POP PSW 执行之后, SP内容修改为 60H, 而64H、 63H、 62H、 61H 单元中的内容依次弹出到DPH、DPL、A、PSW中。
MCS -51 提供一个向上升的堆栈, 因此SP设置初值时要
的总线。由Ri作为间接寻址寄存器时, P0 口上分时输出Ri指
定的 8 位地址信息及传输 8 位数据。
第 3 章 MCS - 51单片机指令系统
5. 堆栈操作指令 PUSH direct POP direct 在MCS -51 单片机的内部RAM中, 可以设定一个先进后 出的区域, 称其为堆栈。在特殊功能寄存器中有一个堆栈指针 SP, 它指出栈顶的位置。 进栈指令的功能是: 首先将堆栈指针 SP的内容加1, 然后将直接地址所指出的内容送入SP指出的内 部RAM单元; 出栈指令的功能是: 将SP所指出的内部RAM单 元的内容送入由直接地址所指出的字节单元, 接着将堆栈指针
第 3 章 MCS - 51单片机指令系统
3.2 指令系统
3.2.1 指令分类
按指令的功能, MCS -51 指令系统可分为下列 5 类:
(1) 数据传送;
(2) 算术运算; (3) 逻辑运算; (4) 位操作; (5) 控制转移。
第 3 章 MCS - 51单片机指令系统
Rn——当前选定的寄存器区中的 8 个工作寄存器R0~R7, 即 n=0~7。 Ri——当前选定的寄存器区中的 2 个寄存器R0、 R1, i=0、1。 direct—— 8 位内部RAM单元的地址, 它可以是一个内部数据 区 RAM单元(00H~7FH)或特殊功能寄存器地址(I / O端口、 控 制寄存器、 状态寄存器 80H~0FFH)。 #data——指令中的 8 位常数。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

代码段
数据段
AH = A2H AL = ADH
30
基址变址寻址
(5)相对基址变址寻址方式
• 有效地址是基址寄存器(BX/BP)、变址寄存器 (SI/DI)与一个8位或16位位移量之和:
EA = BX BP +
SI
DI
+
DISP

段地址对应BX基址寄存器默认是DS,对应BP 基址寄存器默认是SS;可用段超越前缀改变 ;AX←DS:[BX+SI+06H]
35
多种表达形式
• 同一寻址方式可以写成不同的形式:
MOV AX , [BX][SI] ;等同于 MOV AX , [BX+SI] MOV AX , COUNT[SI] ;等同于 MOV AX , [SI+COUNT] MOV AX , WNUM[BX][SI] ;等同于 MOV AX , WNUM[BX+SI] ;等同于 MOV AX , [BX+SI+WNUM]
5
指令的组成:
操作码 目的操作数,源操作数 ;注释
• 操作码说明计算机要执行哪种操作,如传送、运算、 移位、跳转等操作,是指令中不可缺少的组成部分 • 源操作数 src,它表示参与指令操作的一个对象 • 目的操作数 dst,它不仅可以作为指令操作的一个对 象,还可以用来存放指令操作的结果 • 有些指令不需要操作数,通常的指令都有一个或两 个操作数,指出参与操作的有哪些数据 • 分号后的内容是对指令的解释
偏移地址
SI、DI、BP、 BX
MOV AX,[1000H]
MOV AX,[SI]
寄存器相对寻址
SI、DI、BP、 BX +DISP
MOV AX,DISP[SI]
BP、BX+SI、DI MOV AX,[BX][SI] 基址变址寻址 基址变址相对寻址 BP、BX+SI、DI MOV AX, +DISP DISP[BX][SI]
复习:8088的内部寄存器
• 含14个16位寄存器,按功能可分为 • 8个通用寄存器 4个段寄存器 1个指令指针寄存器 1个控制寄存器
1
寄存器与存储器的比较
寄存器
在CPU内部
访问速度快 容量小,成本高 用名字表示 没有地址
存储器
在CPU外部
访问速度慢 容量大,成本低 用地址表示 地址可用各种方式形成
20000H 操作码 02H 20001H 01H 20002H
代码段
注意: •只能用于SRC字段 • SRC 和 DST的字长一致 MOV AH, 3064H
AH = 01H AL = 02H
13
立即数寻址
2. 寄存器寻址方式
• 操作数存放在CPU的内部寄存器reg 中,可以是: – 8位寄存器:
31233H 31234H 31235H AAH A1H 65H
代码段
数据段
AH = 65H AL = A1H
20
直接寻址
默认的段地址在DS段寄存器,可使用段超越前缀改变
段超越是在偏移地址的前面加上段名来表示。 段寄存器:偏移地址
例:MOV BX,ES:[2000H] 20000H 操作码 20001H 00H 20002H 20H
20000H 操作码 20001H 34H 20002H 12H 31233H 31234H 31235H AAH A1H 65H
代码段
数据段
19
② MOV AX,[1234H]
DS = 3 0 0 0 H + 1234H 31234H
20000H 操作码 20001H 34H 20002H 12H
18
(1)直接寻址方式
EA由指令中直接给出的16位偏移量单独构成时,称为 直接寻址。默认的段地址在DS段寄存器。 物理地址PA = (DS) 16d + EA
16位偏移量在方括号之内。
例:① MOV AL,[1234H]
DS = 3 0 0 0 H + 1234H
31234H AL = A1H

段地址对应BX/SI/DI寄存器默认是DS,对 应BP寄存器默认是SS;可用段超越前缀改 变 MOV AX , [SI] ;AX←DS:[SI] MOV AX, [BP] ;AX←SS:[BP]
23
例:设DS = 3000H,SI = 1000H。MOV AX,[SI]
DS = 3 0 0 0 H + SI = 1 0 0 0 H
AH、AL、BH、BL、CH、CL、DH、DL
– 16位寄存器: AX、BX、CX、DX、SI、DI、BP、SP – 段寄存器seg:CS、DS、SS、ES
15
寄存器寻址指令
MOV BX , 1234H MOV AX , BX
注意:
;BX←1234H ;AX←BX
•SRC 和 DST的字长一致

基本寻址方式有七种:立即寻址、寄存器 寻址、(存储器)直接寻址、寄存器间接寻址、 寄存器相对寻址、基址变址寻址、基址变址相 对寻址
10
3大类寻址方式
• 立即数寻址方式 • 寄存器寻址方式
直接寻址方式
寄存器间接寻址方式
• 内存寻址方式
寄存器相对寻址方式
基址变址寻址方式
相对基址变址寻址方式
11
1. 立即数寻址方式
BP BX SI DI
EA =
+ DISP
段地址对应BX/SI/DI寄存器默认是DS,对应BP寄存
器默认是SS;可用段超越前缀改变
MOV AX,[DI+06H] ;AX←DS:[DI+06H]
MOV AX,[BP+06H]
;AX←SS:[BP+06H]
26
例:设DS = 3000H,SI = 2000H,DISP = 1000H。 MOV AX,DISP[SI]
20000H 操作码 20001H 20002H
31000H 31001H 31002H AAH A1H 65H
代码段
31000H
数据段
AH = A1H AL = AAH
24
寄存器间接寻址
(3)寄存器相对寻址方式
• 有效地址是寄存器内容与有符号8位或16位位移量 之和,寄存器可以是BX、BP或SI、DI
(4)基址变址寻址方式
• 有效地址由基址寄存器(BX或BP)的内容 加上变址寄存器(SI或DI)的内容构成:
BX EA = BP

+
SI DI
段地址对应BX基址寄存器默认是DS,对应BP基 址寄存器默认是SS;可用段超越前缀改变 MOV AX,[BX+SI] MOV AX,[BP+DI] ;AX←DS:[BX+SI] ;AX←SS:[BP+DI]
EA = 2000H PA = (DS)×10H+EA= 32000H (AX) = 6745H
41
寄存器间接寻址
【例4】已知:(AX)=0,(BP)=30H,(DS)=4000H, (SS)=2000H,(20030H)=34H ,(20031H)=12H 执行指令:MOV AX ,Word ptr [BP] 执行后:(AX)=? EA = BP = 0030H PA = (SS)×10H+EA = (SS)×16 + (BP) = 20030H (AX) = 1234H
MOV dst , src ;dst←src
• 功能:将源操作数src传送至目的操作数dst
• 例:
MOV AL,05H MOV BX,AX MOV AX,[SI]
;AL←05H ;BX←AX ;AX←DS:[SI]
8
3.1 寻址方式
指令中用于说明操作数所在地址的方法称 为寻址方式(Addressing Mode)。也就是指寻 找操作数或操作数地址的方式。
DS = 3 0 0 0 H + SI = 2 0 0 0 H + DISP=1 0 0 0 H 33000H
20000H 操作码 20001H 00H 20002H 10H 33000H 33001H 33002H AAH A1H 65H
代码段
数据段
AH = A1H AL = AAH
27
寄存器相对寻址
则 (AL)=15H
40
直接寻址
【例3】已知:(AX)=1212H , (DS)=3000H, BUF为数据段定义的变量,其偏移地址是 2000H,(32000H)=45H ,(32001H)=67H. 执行指令:MOV AX ,BUF 执行后:(AX)=? 等价:MOV AX ,[BUF] MOV AX ,[2000H]
32
MOV AX,[BX+SI+06H]
设DS=3000H,BX=1000H,SI=2000H,DISP=0200H。 MOV AX,DISP[BX][SI]
DS = 3 0 0 0 H + BX = 1 0 0 0 H + SI = 2 0 0 0 H + DISP=0 2 0 0 H 33200H
39
直接寻址
【例2】 已知(DS)=2000H , (ES)=3000H , (32000H)字节=15H, (32001H)字节=24H。 执行指令 MOV AX , ES:[ 2000H ] 执行后(AX)=?
EA = 2000H PA = (ES)×10H+EA= 32000H (AX) = 2415H 若执行 MOV AL , ES :[2000H]
20000H 操作码 20001H 00H 20002H 02H 33200H 33201H 33202H DAH A3H 65H
相关文档
最新文档