第三章操作数的寻址方式课堂

合集下载

微机原理 宋志平 第三章课件

微机原理 宋志平 第三章课件

011
100 101
[BP]+[DI]
[SI] [DI]
[BP]+[DI]+D8
[SI]+D8 [DI]+D8
[BP]+[DI]+D16
[SI]+D16 [DI]+D16
110
111
D16(直接地址)
[BX] 15 1 0 0 0 1 0 操作码
[BP]+D8
[BX]+D8 8 D W 7
[BP]+D16
微机原理与接口技术
例: MOV CX , 36H[BX] MOV -20[BP] , AL
11
6、基址加变址寻址(Based Indexed addressing) 它的EA是由三部分组成的,基址寄存 器BX或BP的内容加上变址寄存器的内容 再加位移量。物理地址由基址寄存器按规 则选择段寄存器,也可以使用段超越。
01 11 00 10
CS DS ES SS
210 R/M
MOD
0:数据从寄存器传出 1:数据传至寄存器
24
MOD R/M 000 001 010
微机原理与接口技术 11 00 [BX]+[SI] [BX]+[DI] [BP]+[SI] 01 [BX]+[SI]+D8 [BX]+[DI]+D8 [BP]+[SI]+D8 10 [BX]+[SI]+D16 [BX]+[DI]+D16 [BP]+[SI]+D16 W=0 AL CL DL BL AH CH DH BH 210 R/M W=1 AX CX DX BX SP BP SI DI

第三章 操作数的寻址方式

第三章 操作数的寻址方式

2
一、立即数寻址方式(P24)
直接把参与操作的数据写在指令中,是指令的一部分, 该数据称为立即数。操作数可以是各种数制下的数值(8位或16 位二进制数),也可以是带单引号的字符。 例如:MOV AX,2050H MOV AL,05H MOV AL,‘A’ 观察下面指令中的错误: MOV 05H,AL MOV BL,324D MOV CH,2050H 注意:1.立即数永远不能作目的操作数。 2.源操作数和目的作码
操作数
2、说明:
操作码:每条指令必有。 操作数:不同的指令其操作数的个数不同 例如: MOV AX,2050H
在上面的MOV指令中,MOV是操作码,AX和2050H是操作 数。其中: AX是目的操作数, 2050H是源操作数。该指令的 作用是将2050H存入寄存器AX中。
7
四、寄存器间接寻址方式(P27)
把参与操作数的偏移地址写在寄存器中,而操作数在内 存中。物理地址的计算需要利用段寄存器。 偏移地址(或有效地址)通过寄存器间接给出,可用的 寄存器只能为BX、BP、SI、DI。 段寄存器可以指定,也可以不指定。如果没有指定段寄 存器,则使用默认的寄存器(BP对应SS,其余3个对应DS) 例1: MOV [BX],2050H 目的操作数[BX]是寄存器间接寻址方式。 例2: MOV AX,[BP] 原操作数[BP]是寄存器间接寻址方式。
答案: ① MOV AX, [ARRAY+8] ② MOV SI, ARRAY+8 MOV AX ,[SI] ③ MOV SI,8 MOV AX ,[ARRAY+SI] ④ MOV BX,ARRAY MOV SI ,8 MOV AX,[BX][SI]
17
例4:指令MOV AX,[BX] [SI] ( 或写为MOV AX,[BX+SI] ) 若(DS)=2000H,(BX)=0500H,(SI)=0010H, (2050FH)=00H,(20510H)=12H,(20511H)=34H, (20512H)=56H。则: ①偏移地址为多少? ②物理地址为多少? ③指令执行完后AX为多少?

汇编语言从入门到精通-3操作数的寻址方式

汇编语言从入门到精通-3操作数的寻址方式

汇编语⾔从⼊门到精通-3操作数的寻址⽅式操作数的寻址⽅式 操作数是指令或程序的主要处理对象。

如果某条指令或某个程序不处理任何操作数,那么,该指令或程序不可能有数据处理功能。

在CPU的指令系统中,除NOP(空操作指令)、HLT(停机指令)等少数指令之外,⼤量的指令在执⾏过程中都会涉及到操作数。

所以,在指令中如何表达操作数或操作数所在位置就是正确运⽤汇编指令的⼀个重要因素。

在指令中,指定操作数或操作数存放位置的⽅法称为寻址⽅式。

操作数的各种寻址⽅式是⽤汇编语⾔进⾏程序设计的基础,也是本课程学习的重点之⼀。

微机系统有七种基本的寻址⽅式:、、、、、、等。

其中,后五种寻址⽅式是确定内存单元有效地址的五种不同的计算⽅法,⽤它们可⽅便地实现对数组元素的访问。

另外,在32位微机系统中,为了扩⼤对存储单元的寻址能⼒,增加了⼀种新的寻址⽅式——。

为了表达⽅便,我们⽤符号“(X)”表⽰X的值,如:(AX)表⽰寄存器AX的值。

3.1 ⽴即寻址⽅式 操作数作为指令的⼀部分⽽直接写在指令中,这种操作数称为⽴即数,这种寻址⽅式也就称为⽴即数寻址⽅式。

⽴即数可以是8位、16位或32位,该数值紧跟在操作码之后。

如果⽴即数为16位或32位,那么,它将按“⾼⾼低低”的原则进⾏存储。

例如: MOV AH, 80H ADD AX, 1234H MOV ECX, 123456H MOV B1, 12H MOV W1, 3456H ADD D1, 32123456H 其中:B1、W1和D1分别是字节、字和双字单元。

以上指令中的第⼆操作数都是⽴即数,在汇编语⾔中,规定:⽴即数不能作为指令中的第⼆操作数。

该规定与⾼级语⾔中“赋值语句的左边不能是常量”的规定相⼀致。

⽴即数寻址⽅式通常⽤于对通⽤寄存器或内存单元赋初值。

图3.1是指令“MOV AX, 4576H”存储形式和执⾏⽰意图。

图3.1 ⽴即寻址⽅式的存储和执⾏⽰意图3.2 寄存器寻址⽅式 指令所要的操作数已存储在某寄存器中,或把⽬标操作数存⼊寄存器。

微机原理第三章8086的寻址方式和指令系统PPT课件

微机原理第三章8086的寻址方式和指令系统PPT课件

04 寻址方式和指令系统的关 系
寻址方式对指令执行的影响
01
寻址方式决定了指令操作数的来源和访问方式,从而
影响指令的执行效率和正确性。
02
不同的寻址方式可能导致指令执行时间不同,因为它
们可能需要不同的计算步骤和内存访问次数。
03
寻址方式的正确选择可以简化指令的执行过程,提高
指令的执行效率。
指令系统对寻址方式的支持
在个人电脑(PC)领域,IBM PC/AT是基于8086的扩展版 80286开发的,奠定了现代PC 的基础。
8086也被广泛应用于工业控制、 自动化设备、仪器仪表等领域。
现代计算机系统中8086的继承和发展
尽管随着技术的进步,更先进的微处理器已经取代了8086在主流应用中的地位, 但8086的设计理念和架构仍然在许多嵌入式系统、低功耗应用中得到继承和发展 。
CALL指令用于调用子程序, 并将返回地址压入堆栈。
处理器控制类指令
处理器控制类指令用于控制 处理器的状态和行为。
包括HLT、INT、IRET等指令。
02
01
03
HLT指令用于暂停处理器执 行,等待中断或系统调用。
INT指令用于触发软件中断, 执行中断处理程序。
04
05
IRET指令用于从中断返回, 恢复程序的执行。
算术运算类指令用于执行 加、减、乘、除等算术运 算。
ADD指令将两个操作数 相加并将结果存储在目标 操作数中。
ABCD
包括ADD、SUB、MUL、 DIV等指令。
SUB指令从第一个操作数中 减去第二个操作数,并将结 果存储在目标操作数中。
逻辑运算类指令
逻辑运算类指令用于执行逻 辑与、或、非等逻辑运算。

第三章操作数的寻址方式

第三章操作数的寻址方式

第一节 汇编指令格式
2、单操作数指令
指令助记符 操作数
只有把数据先送入隐含的寄存器中、才能执行此操
作的指令。
例:mul cx
;(ax) ×(cx)→(dx,ax)
3、无操作数指令 指令助记符
例:clc ;0→cf stc ;1→cf
第二节 操作数的寻址方式
一、概述 二、立即数寻址(imm) 三、寄存器寻址(reg) 四、存储器寻址(mem)
如mov ax,varw
mov ax,[varw]
与立即数寻址的区别
在指令中,直接寻址给出操作数的EA,立 即数寻址给出操作数。
用数字书写时,格式不一样。
mov ax,1234h
mov ax,[1234]
2、寄存器间接寻址
操作数在存储器中,操作数的有效地址用si、di、 bx和bp等四个寄存器之一来指定,称这种寻址方式 为寄存器间接寻址方式。
2、寄存器间接寻址
例:假设有指令:mov ax, [bx],在执行时, (ds)=3000h,(bx)=2000h,存储单元32000h的内容是 1234h。问执行指令后,ax的值是什么?
PA=(ds)*16+(bx)=3000h*16+2000h=32000h (bx)=1234h
图示
3、寄存器相对寻址
立即数寻址(imm)
操作数出现在指令中,是指令的一个组成部分。这 样的操作数叫做立即数.以这种指定操作数的方式 就叫做立即数寻址。 执行过程
例:
mov ah, 80h add ax, 1234h mov b1, 12h mov w1, 3456h add d1, 32123456h
其中:b1、w1和d1分别是字节、字和双字内存变量。

操作数的寻址方式

操作数的寻址方式

2.立即寻址方式
指令字中的地址字段指出的不是操 作数的地址,而是操作数本身。这种所 需的操作数由指令的地址码字段直接给 出的寻址方式称为立即寻址方式。用这 种方式取一条指令时,操作数立即同操 作码一起被取出,从而节省了访问内存 的时间,提高了指令的执行速度,所以 这种寻址方式的特点是指令执行时间很 短。
(2)存储器间接寻址方式
存储器间接寻址时,需要访问两次 存储器才能取得数据,第一次先从存储 器读出操作数地址,第二次才能根据读 出的操作数地址再取出真正的操作数。
有效地址EA的数学形式为: EA=(A), 即Data=(EA)=((A))
6.相对寻址方式
所谓相对寻址方式,是指根据一个 基准地址及其相对量来寻找操作数地址 的方式。根据基准地址的来源不同,它 又分为基址方式和变址方式,以及PC相 对寻址方式,这里主要指后者。
直接寻址方式表示形式为:
OPCODE 直接寻址方式 操作数直接地址A
直接寻址方式又可分为寄存器直 接寻址和存储器直接寻址两种。
(1)寄存器直接寻址方式
指令地址码字段直接给出所需操作数在 通用寄存器中地址编号。其表示形式为:
OPCODE 寄存器直接寻址 寄存器地址编号Ri
有效地址EA数学形式为:EA=Ri 。
间接寻址又有一次间址和多次间址 之分,一次间址是指形式地址A是操作数 地址的地址,即EA=(A);多次间址是指 这种间接变换在二次或二次以上.若 Data表示操作数,间接寻址过程可用如 下逻辑符号表示:
一次间接寻址 Data=(EA)=((A))
二次间接导址 Data=((EA))=(((A)))
但是,由于操作数是指令的一部分, 不能修改,而指令所处理的数据大多都 是在不断变化的,故这种方式只适用于 操作数固定的情况。通常用于给某一寄 存器或存储器单元赋初值或提供一个常 数等。立即寻址方式表示形式为:

第三章操作数的寻址方式

第三章操作数的寻址方式
(4)基址变址寻址: lea bx,num mov si,4 mov dx,[bx][si]
P33 1、2、3、5、6(单数)、
图示
1、直接寻址
例:指令:mov bx,es:[1234h],(es)=1000h, (11234h)=1234h。问该指令执行后,bx的值是什 么?
PA=(es)×16+1234h=11234h (bx)=1234h
1、直接寻址
要点:
地址也常用内存变量名来表示,书写格式:v_1或 [v_1]。
综合
例4:如图所示,取第三个字数 据→(dx) 解:取第3个数据,其偏移量: num+3 (1)直接寻址: mov dx,num+4 ;num为字变量 (2)寄存器间接寻址: lea bx,num+4 mov dx,[bx]
综合
(3)寄存器相对寻址: mov si,4 mov dx,num[si]
一、概述 二、立即数寻址(imm) 三、寄存器寻址(reg) 四、存储器寻址(mem)
寄存器寻址(reg)
指令所要的操作数已存储在某寄存器中,或把目标 操作数存入寄存器。把在指令中指出所使用寄存器 (寄存器符号)的寻址方式称为寄存器寻址方式。
执行过程
指令中可以引用的寄存器及其符号如下: 8位寄存器有:ah、al、bh、bl、ch、cl、 dh和dl。 16位寄存器有:ax、bx、cx、dx、si、di、 sp、bp、ip和段寄存器。
寄存器寻址(reg)
例:
add varw,ax add varb,bh
;其中varw,varb是字、字节内存变量。
add bh,78h
add ax,1234h
mov ax,bx
mov bh,al

操作数的寻址方式

操作数的寻址方式
OPCODE 寻址方式特征MOD 形式地址A
形式地址,是指令字结构中给定的 地址量。而寻址方式特征位,通常由间址 位(I)和变址位(X)组成,若指令无间 址和变址要求,则形式地址就是操作数的 有效地址;若指令中指明要进行变址或间 址变换,则形式地址就不是操作数的有效 地址,而必须按指定方式进行变换,才能 形成有效地址.因此,操作数的寻址过程 就是将形式地址变换为操作数的有效地址 的过程。
7.基址寻址方式
计算机中设置了一个寄存器,专门用 来存放基准地址,该寄存器就是基址寄存 器(RB)。RB既可在CPU中专设,也可由 指令指定某个通用寄存器担任。先将指令 地址码给出的地址A和基址寄存器RB的内 容通过加法器相加,所得的和作为有效地 址,再从存储器中读出所需的操作数。
这种操作数的有效地址由基址寄存 器中的基准地址和指令的地址码A相加得 到的方式称为基址寻址方式。
但是,由于操作数是指令的一部分, 不能修改,而指令所处理的数据大多都 是在不断变化的,故这种方式只适用于 操作数固定的情况。通常用于给某一寄 存器或存储器单元赋初值或提供一个常 数等。立即寻址方式表示形式为:
OPCODE 立即寻址方式 操作数DATA
3.寄存器寻址方式
当操作数不放在存储器中,而是放在 CPU的通用寄存器中时,存放操作数的寄 存器,其地址编号便可通过指令地址码 指出。这种所需要的操作数存放在某一 通用寄存器中,由指令地址码字段给出 该通用寄存器地址的方式,称为寄存器 寻址方式。
(2)存储器直接寻址方式
一般简称直接寻址方式,其指令地 址码字段直接给出存放在存储器中操作 数的存储地址。
有效地址EA数学形式为:EA=A
图4.5
5.间接寻址方式
间接寻址是相对于直接寻址而言的。 间接寻址时,指令地址码字段给出的不 是操作数的真正地址,而是存放操作数 地址的地址,换句话说就是形式地址A所 指定单元中的内容才是操作数的有效地 址.这种操作数有效地址由指令地址码 所指示的单元内容间接给出的方式,称 为间接寻址方式,简称间址。

微型计算机原理与接口技术课件-第三章指令系统和寻址方式

微型计算机原理与接口技术课件-第三章指令系统和寻址方式
指出的存储区进行直接寻址,应在指令中指定段
超越前缀。例如,数据若放在附加段中,则应在
有效地址前加“ES:”,这里的冒号“:”称为 修改
属性运算符,计算物理地址时要用ES作基地址, 而不再是默认值DS。
例如: MOV AX,ES:[500H] 该指令的源操作数的物理地址等于16×ES+
500H。
3.符号地址 在汇编语言中还允许用符号地址代替数值地
MOV CL,AH 注意:源操作数的长度必须与目的操作数一
致,否则会出错。例如,不能将AH寄存器的内 容传送到CX中去,尽管CX寄存器放得下AH的 内容,但汇编程序不知道将它放到CH还是CL中。
这种寻址方式的优点是:寄存器数量 一般在几个到几十个,比存储器单元少很 多,因此它的地址码短,从而缩短了指令 长度,节省了程序存储空间;另一方面, 从寄存器里取数比从存储器里取数的速度 快得多,从而提高了指令执行速度。
用汇编语言(即主要由指令系统组成的语言)编写的程 序称为汇编语言源程序,若直接将它送到计算机,机器
并不认识那些构成程序的指令和符号的含义,还必须由
汇编程序将源程序翻译成计算机能认识的二进制机器语
言指令(机器码)后,才能被计算机识别和执行,得到运算 结果。
8086指令系统采用变长指令,指令的长度可由l~6 字节组成。一字节指令中只包含8位操作码,没有操作数。 如清进位位指令CLC的机器码为1111 1000,可直接从指 令编码表中查到。对于大部分指令来说,除了操作码(不 一定是8位)外,还包含操作数部分,所以要由几个字节组 成。不同的指令,其操作码和寻址方式都是不一样的,
例如:AREA1 EQU 0867H MOV AX,AREA1
例如:AREA1 DW 0867H MOV AX,AREA1 (该指令也可

指令、操作数的寻址方式

指令、操作数的寻址方式

计算机组成原理 指令、操作数的寻址方式
2.2.7、变址寻址方式 在变址寻址方式中,通常在CPU内部设置 有一个或几个专用的变址寄存器,操作数 的有效地址=(变址寄存器)+形式地址。
计算机组成原理 指令、操作数的寻址方式
具体的指令如:MOV AL,[SI+0FH] 其中SI是CPU的16位变址寄存器,是变址寻 址方式,它的内容加上形式地址0FH是操作 数的有效地址,同样是一个偏移量,该内存 单元的内容即为操作数,假设为0。操作码 MOV表示传送操作,即把0传送给AL。
计算机组成原理 指令、操作数的寻址方式
若一个指令系统中只有上述8种寻址方式, 那么需要3位寻址方式特征位(23=8)。
计算机组成原理 指令、操作数的寻址方式
寻址方式特征 位 000 001 010 011 100 101 110 111
寻址方式
寄存器寻址 立即数寻址
直接寻址 间接寻址 隐含寻址 相对寻址 变址寻址 基址寻址
计算机组成原理 指令、操作数的寻址方式
•跳跃寻址方式 当执行到转移指令时,下一条指令地址不是 由PC给出,而是由本条指令给出,程序跳跃 后,按新的指令地址开始顺序执行,这时内容也相应改变,以便及时跟踪新的指令地 址。
计算机组成原理 指令、操作数的寻址方式
2、操作数的寻址方式 2.1、概述 通常操作数可以用如下三种方式给出: 指令中的操作数部分就是操作数本身。
计算机组成原理 指令、操作数的寻址方式
一般地,指令系统中都包含有如下8种典 型的寻址方式:寄存器寻址、立即数寻址、 直接寻址、 间接寻址、隐含寻址、相对 寻址、变址寻址、基址寻址。但是一个操 作数只能有一种寻址方式,到底是哪一种 寻址方式呢?由寻址方式特征位来决定, 即在指令的每个操作数部分中留出几位作 为寻址方式特征位。

实验3_认识寻址方式

实验3_认识寻址方式

实验三 认识寻址方式3.1 实验目的(1)学习和掌握操作数的各种寻址方式(2)学习使用Debug创建和调试程序3.2 预备知识1.操作数和寻址方式操作数是指令或程序的主要处理对象。

在CPU的指令系统中,除了NOP空操作、HLT停机等少数指令外,大量的指令在执行过程中都会涉及到操作数。

所以,在指令中如何表达操作数或操作数所在的位置是正确运用汇编指令的一个重要因素。

寻址方式是指操作数或操作数存放位置的方法。

通俗地说,就是寻找操作数位置的方法。

操作数的各种寻址方式是用汇编语言程序解决问题的基础。

8086系统有7种寻址方式:立即寻址方式、寄存器寻址方式、直接寻址方式、寄存器间接寻址方式、基址变址寻址方式和相对基址变址寻址方式。

在80386CPU之后,增加了比例变址寻址、基址比例变址寻址和相对基址比例变址寻址等3种方式。

除了立即寻址方式和寄存器寻址方式外,其余均为存储器寻址方式。

2. 传送指令MOV传送指令是使用最为频繁的指令,它相当于高级语言中的赋值语句。

指令格式:MOV Reg/Mem,Reg/Mem/ImmReg:寄存器;Mem:存储器;Imm:立即数。

它们可以是8位、16位或32位。

指令的功能是将源操作数SRC(第二操作数)的值传送给目的操作数DST(第一操作数)。

指令执行后,目的操作数被改变,而源操作数的值保持不变。

当存储单元作为操作数时,该操作数的寻址方式可以是任意一种存储单元寻址方式。

3. 加法指令ADD指令格式:ADD Reg/Mem,Reg/Mem/Imm受影响的标志位:AF,CF,OF,PF,SF,ZF。

指令的功能是把源操作数的值加到目的操作数中。

4. 减法指令SUB指令格式:SUB Reg/Mem,Reg/Mem/Imm受影响的标志位:AF,CF,OF,PF,SF,ZF。

指令的功能是把源操作数与目的操作数的值相减并存到目的操作数中。

5.中断INT 20功能:终止当前程序的运行。

入口参数:CS=PSP的段地址出口参数:无3.3 实验内容一、寻址方式通过实验观察和分析在不同的寻址方式下存储单元逻辑地址的表示以及指令的执行结果。

第三讲2 操作数的寻址方式

第三讲2 操作数的寻址方式

AX, [BX] 等效 MOV AX, DS:[BX] 例:MOV BX, [BP] 等效 MOV AX, SS:[BP]
例:MOV
操作数的EA为寄存器的内容 BX、SI 、DI-------DS BP------SS MOV BX,[SI]
例如:MOV AX,[BX]
该指令执行之前,DS=2000H,AX=54C8H,BX=0300H, 存储单元20300H的内容是6A9BH。 问:执行指令后,相关寄存器及存储单元的值是什么? 源操作数的地址为: EA=(BX)= 0300H PA=(DS)*16+EA=2000H*16+0300H=20300H
例 将内存缓冲区中以BUFA开始的一组字数据传送到BUFB开始的内存区
DATA BUFA COUNT BUFB DATA STACK STACK CODE START: SEGMENT DW 367BH,2845H,0A78H, 9DE3H,0F6BH,6532H BUFB EQU ($-BUFA)/2 DW COUNT DUP (?) ENDS SEGMENT STACK DB 200 DUP(?) ENDS BUFA SEGMENT ASSUME DS:DATA,SS:STACK,CS:CODE MOV AX,DATA MOV DS,AX INC DI MOV SI,0 INC DI MOV DI,0 DEC CX MOV CX,COUNT JNZ LOP MOV AX,BUFA[SI] MOV AH,4CH MOV BUFB[DI],AX INT 21H INC SI CODE ENDS INC SI END START
将[DS:SI]为地址的一个字节/字传送到 [ES:SI]地址,然 后修改地址指针 SI,DI并使CX减1(计数) I/O端口寻址:端口 累加器(AL/AX) 使用间接端口寻址方式,须先将端口号传送到DX中。 IN AX,35H 直接端口寻址方式 8位地址可访问256 IN AL,DX 个端口 OUT 4FH,AL OUT DX,AX

第三章(寻址方式)

第三章(寻址方式)
MOV AX , [ BX ] MOV AX , ES: [ BX ] MOV AX , [ BP ] PA = 16d × ( DS ) + ( BX ) PA = 16d × ( ES ) + ( BX ) PA = 16d × ( SS ) + ( BP )
* 不允许使用AX、CX、DX 存放 EA MOV AX , [ CX ] * SRC 和 DST 的字长一致 MOV DL , [ BX ] MOV DX , [ BX ] * 适于数组、字符串、表格的处理
(3) 直接寻址方式 * —— 有效地址 EA 由指令直接给出
例:MOV AX , [ 2000H ] EA = 2000H , 假设 (DS) = 3000H , 那么 PA = 32000HAH ALFra bibliotek3050
32000
50H 30H (AX) = 3050H
* 隐含的段为数据段 DS * 可使用段跨越前缀
loop next
(3) 寄存器相对寻址
mov cx, count mov si, 0 next : mov dl, string [ si ] mov ah, 2 int 21h inc si loop next
; mov dl, [ string + si ] ; 显示一个字符 ; mov cx, 17
访问存储器的方式
取指令 堆栈操作 一般数据访问 BP 作为基址的寻址 串操作的源操作数 串操作的目的操作数
默认的 段寄存器
CS SS DS SS DS ES
可跨越的 段寄存器
无 无 CS ES SS CS DS ES CS ES SS 无
偏移地址
IP SP 有效地址 EA BP SI DI

第3章操作数的寻址方式

第3章操作数的寻址方式
第3章操作数的寻址方式
本章主要内容
▪ 预备知识 ▪ 1.什么是寻址方式? ▪ 2.有那些寻址方式?
1. 立即寻址方式 2. 寄存器寻址方式 3. 直接寻址方式 4. 寄存器间接寻址方式 5. 寄存器相对寻址方式 6. 基址变址寻址方式 7. 相对基址变址寻址
▪ 3.本章小结 2
2022/1/4
MOV AX,[SI] ;AX←DS:[SI] ▪ 该指令中有效地址存放于SI寄存器中,而操作数则
存Hale Waihona Puke 在数据段主存单元中。假设SI内容设置为 2000H,则该指令等同于MOV AX, [2000H]。
28
2.4 寄存器间接寻址方式
29
思考题
▪ 指出源操作数的寻址方式,判断对错,并 说明原因:
1. mov ax,[sp] mov ax,sp
▪ 书写汇编指令时要将16位有效地址加上中 括号。
23
2.3 直接寻址方式
▪ 例:将数据段中偏移地址2000H的一个16 位数据传送给AX MOV AX,[2000H] ;AX←DS:[2000H],指令代码:A10020
▪ 该指令中给定了有效地址2000H,它还不是 存储器的物理地址。默认情况下,有效地 址要与数据段寄存器DS一起构成操作数所 在存储单元的物理地址。
(ax):寄存器ax中的内容 (20000h):物理地址为20000h的内存单元
的内容 ((ds)×16+(bx)):
ds寄存器中的内容作为段地址×16加上bx寄存器 中的内容作为的偏移地址所指向的内存单元的内容
(X)的应用
▪ ax的内容为1100h (ax)=1100h
▪ 2000:0100内存单元的内容为0010h (20100h)=0010h
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例:mov ax,[bx]
;(ax)←((ds)×16+(bx))
mov ax,[bp]
;(ax)←((ss)×16+(bp))
mov ax, es:[bp]
;(ax)←((es)×16+(bp))
19
2、寄存器间接寻址 例:假设有指令: mov ax, [bx],在执行时,
(ds)=3000h ,(bx)=2000h ,存储单元 32000h的内容是 1234h。问执行指令后, ax的值是什么?
第三章 操作数的寻址方式
1
第一节 汇编指令格式
汇编指令的格式:
指令助记符[操作数1 [,操作数2 ]][;注释]
根据操作数的个数分,有以下三种格式 :
1、双操作数指令 指令助记符 目的操作数( dst),源操作数( src) 运算之后,结果保存在目的操作数。
例:mov ax,1234h mov bx,5678h add ax,bx
4
概述
寻址方式:在指令中,指定操作数或操作数的存放 位置的方法称为寻址方式。
?操作数出现在指令中 ——立即数寻址 ?操作数保存在寄存器中 ——寄存器寻址 ?操作数保存在内存 ——存储器寻址 ?操作数保存在 i/o端口——i/o寻址 (见第八章)
5
第二节 操作数的寻址方式
一、概述 二、立即数寻址( imm) 三、寄存器寻址( reg) 四、存储器寻址( mem)
13
1、直接寻址
指令所要的操作数存放在内存中,在指令中直接给 出该操作数的有效地址,这种寻址方式为 直接寻址 方式。 执行过程 物理地址 =(段寄存器 )×16+有效地址,其中段地址 在默认的 ds,如果使用段超越前缀,那么,段地址 可在其它段寄存器。
14
1、直接寻址
例:假设有指令: movax,[2000h]
7
立即数寻址(imm)
要点: ? 目的操作数不能使用立即数寻址。 例:mov 1234h,ax ? 立即数可以是 8、16位数。在双操作数指令, 两个操作数的位数、数据类型必须相同。 例:mov al,1234h mov al,bx mov bx,al mov ax,70h mov ax ,-70h
6
立即数寻址(imm)
操作数出现在指令中 ,是指令的一个组成部分。这 样的操作数叫做立即数 .以这种指定操作数的方式 就叫做立即数寻址 。 执行过程
例:
mov ah, 80h add ax, 1234h mov b1, 12h mov w1, 3456h add d1, 32123456h
其中:b1、w1和d1分别是字节、字和双字内存变量。
mov ax,1234h
mov ax,[1234]
17
2、寄存器间接寻址
操作数在存储器中,操作数的有效地址用 si、di、 bx和bp等四个寄存器之一来指定,称这种寻址方式 为寄存器间接寻址方式。
18
2、寄存器间接寻址
在不使用段超越前缀的情况下,有下列规定: ?若有效地址用si、di和bx等之一来指定,则其缺省的段寄存 器为ds; ?若有效地址用bp来指定,则其缺省的段寄存器为ss(即:堆 栈段)。
2
第一节 汇编指令格式
2、单操作数指令
指令助记符 操作数
只有把数据先送入隐含的寄存器中、才能执行此操
作的指令。
例:mul cx
;(ax) ×(cx)→(dx,ax)
3、无操作数指令 指令助记符
例:clc ;0→cf stc ;1→cf
3
第二节 操作数的寻址方式
一、概述 二、立即数寻址( imm) 三、寄存器寻址( reg) 四、存储器寻址( mem)
一、概述 二、立即数寻址( imm) 三、寄存器寻址( reg) 四、存储器寻址( mem)
12
存储器寻址(mem)
指令所要的操作数存放在内存中,在指令中给出存 储器的地址来指定操作数的方法称为 存储器寻址方 式。 ?段地址 默认的段寄存器 ds或ss。如果使用段超越前缀,那 么,段地址可存放在其它段寄存器。 ?EA 形成方式:分为 5种 ?物理地址=段地址× 16+有效地址( EA)
8
第二节 操作数的寻址方式
一、概述 二、立即数寻址( imm) 三、寄存器寻址( reg) 四、存储器寻址( mem)
9
寄存器寻址( 操作数存入寄存器。把在指令中指出所使用寄存器 (寄存器符号 )的寻址方式称为寄存器寻址方式。
执行过程
指令中可以引用的寄存器及其符号如下: ? 8位寄存器有: ah、al、bh、bl、ch、cl、 dh和dl。 ? 16位寄存器有: ax、bx、cx、dx、si、di、 sp、bp、ip和段寄存器。
,在执行时,
(ds)=3000h ,内存单元 32000h 的值为1234h。问该
指令执行后, ax的值是什么?指令变为: mov al,
[2000h], al
的值是什么?
PA=(ds)×16+2000h=32000h (ax)=1234h (al)=34h
图示
15
1、直接寻址
例:指令: mov bx,es :[1234h] ,(es)=1000h , (11234h)=1234h 。问该指令执行后, bx的值是什 么?
PA=(es)×16+1234h=11234h (bx)=1234h
16
1、直接寻址
要点:
?地址也常用内存变量名来表示,书写格式: v_1或
[v_1]。
如mov ax,varw
mov ax,[varw]
?与立即数寻址的区别
? 在指令中,直接寻址给出操作数的 EA,立 即数寻址给出操作数。
? 用数字书写时,格式不一样。
10
寄存器寻址(reg)
例:
add varw,ax add varb,bh
;其中 varw ,varb 是字、字节内存变量。
add bh,78h
add ax,1234h
mov ax,bx
mov bh,al
要点:在双操作数指令,源操作数和目的操作数都 可以使用寄存器寻址。
11
第二节 操作数的寻址方式
PA=(ds)*16+(bx)=3000h*16+2000h=32000h (bx)=1234h
图示
20
3、寄存器相对寻址
操作数在存储器中,其有效地址是一个基址寄存 器(bx、bp)或变址寄存器 (si、di)的内容和指令 中的8位/16位偏移量之和。
相关文档
最新文档