(完整版)微机原理电子教案:指令格式及寻址方式
微机原理课件第三章8086寻址方式和指令系统
数寻在址堆方栈式段来中说,,操就作相数当的于段钥地匙址在段寄存器SS中,操 作放数在的寄物存理器地中址,=即SS寄×存1器6+给BP出。 了要访问的存储单元地址。
DS 3000H ×16
┋
SI 2000H
操作码
+ COUNT 4000H
00
代码段
40
寄存器3相60对00H寻址方式也允许使┋用段超越前缀,
如MOV BX,ES:COUNT[DI]则段地址为ES,物
理地址=ES×16+DI+COUNT。
BH
BL
┋
BX 56
78
36000H
78
56
数据段
┋
指令MOV BX,COUNT[SI]的执行过程
{{ }} 组合起来([B只X能]+相[S加I)]+,D同8或时D还1可6 以加上一个8位或
((1SE86IE8和位A种A种=D的=)I)位也移不[[[[[[[BBB量能BSDBXPPPIIX]],]同]]]]+++但时++++[[[DDDDSDB出8888IIIX现或 或或 或]]]和+++在DDBDDD11P方1188866不66或 或 或括能DDD号111同寄中666时;存出器现相 变在相对 址方对基 寻括寻号址 址址中,
{ 设((D3E86A种S0==0M)300HO0)V[[[[0HBSBD=XIPIB,5]]]]X6或S7,+I8=18H[2S6位0I位0+位0C位H移O,移U量位N量T移] 量COU默 默N认 认T=DS4SS0段 段00H,
微机原理指令系统讲解
2012-3-21
10
四、寄存器间接寻址(Register Indirect 寄存器间接寻址 Addressing) MOV AX,[DI] 指令中的16位寄存器的内容不是操作数,而是 指令中的 位寄存器的内容不是操作数, 位寄存器的内容不是操作数 操作数的偏移地址,操作数本身则在存储器中。 操作数的偏移地址,操作数本身则在存储器中。 可用的寄存器有四个,分别是: 、 、 可用的寄存器有四个,分别是:SI、DI、BX 和BP,但如果使用不同的间址寄存器,则相 ,但如果使用不同的间址寄存器, 应的段寄存器有所不同
2012-3-21 23
一般传送指令MOV (Movement) ⑴ 一般传送指令 MOV dest,src ;(dest)←(src) ← 既可传送字节操作数( 位 既可传送字节操作数(8位),也可传送 字操作数( 位 字操作数(16位); 可使用本章讨论过的各种寻址方式; 可使用本章讨论过的各种寻址方式; 可实现以下各种传送: 可实现以下各种传送:
2012-3-21 26
堆栈操作指令PUSH和POP (Push ⑵ 堆栈操作指令 和 word onto stack, Pop word off stack) 堆栈是内存中一个特定的区域, 堆栈是内存中一个特定的区域,用以存放 寄存器或存储器中暂时不用但又必须保存 的数据。 的数据。
2012-3-21
2012-3-21 7
直接寻址: MOV AX,[3200H] 如果DS=5000H,则所 寻找的操作数的物理 地址: 5000H×10H+3200H =50000H+3200H =53200H
2012-3-21 8
段超越 : MOV BX,ES:[2100H]
2012-3-21
微机原理第三章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指令从第一个操作数中 减去第二个操作数,并将结 果存储在目标操作数中。
逻辑运算类指令
逻辑运算类指令用于执行逻 辑与、或、非等逻辑运算。
微机原理指令系统课件
指令
8B
05
32000
0B
40
思考: 指令 MOV AX,[ DI ] 与MOV AX, DI有什么不同?
微机原理指令系统课件
13
用 SI、DI、BX 、BP作为间接寻址允许段跨越
指令中可以指定段跨越前缀来取得其他段中的数据。
例:MOV ES:[DI], AX MOV DX, DS:[BP]
例: MOV AX,ES:[2000H]
将ES:2000H单元内容送入AX。
例: MOV AX,LABLE 或 MOV AX,[LABEL]
将标号为LABLE(存放操作数单元的符号地址) ,即
DS:LABLE中的内容送入AX。
微机原理指令系统课件
7
例:MOV AX , [ 1000 H]
若 ( DS ) = 2000H
8B
指令
47
30
21030
76
89
17
(3)基址变址寻址方式:
操作数在存储器中,指令将基址寄存器(BX或BP)与变 址寄存器(SI或DI)内容之和作为操作数所在存储单元的有 效地址。
(BX) (SI)
EA =
+
(BP) (DI)
PA = (DS) * 16 + (BX)+ (SI)或(DI)
PA = (SS) * 16 + (BP) + (SI)或(DI)
指令操作数部分直接给出指令的操作数,操作数与操 作码一起存入代码段中。立即数有8位和16位。
例 :MOV AL, 05H ;源操作数为立即寻址 指令执行后,AL=05H,8位数据05H存入AL寄存器。
微机原理第3章微型计算机原理及应用教案
第3章 8088/8086MPU的指令系统
PA=(ES)*10H+
(BX) (SI) (DI)
+
DISP8 DISP16
DISP叫做位移量,实际上它是一个数值,可以是8位也 可以是16位。
第3章 8088/8086MPU的指令系统
4.基址加变址寻址方式 这是一种基址加变址来定位操作数地址的方式,操作数 的有效地址是一个基址寄存器(BP或BX)和一个变址寄存器 (SI或DI)的内容之和。 MOV CL,[BX+SI] PA=(DS)*10H+(BX)+(SI) MOV CH,[BX+DI] PA=(DS)*10H+(BX)+(DI)
注意事项: PUSH 和POP 指令只能是字操作,不能是字节操作。 POP的DST不允许是CS寄存器。 PUSH和POP 指令不能使用立即数方式。 PUSH 和 POP不影响标志位。
第3章 8088/8086MPU的指令系统
3.交换指令: (XCHG) 格式:XCHG OPR1,OPR2 其中,OPR代表操作数寄存器。 功能:(OPR1)(OPR2) 注意:
第3章 8088/8086MPU的指令系统
5.相对基址加变址寻址方式 操作数的有效地址是基址加变址,再加上一个位移量得 到。一般用于寻址复杂的数组中的元素。
MOV DH,[BX+DI+20H] 源操作数PA=(DS)*10H+(BX)+(SI)+20H 中20H即为DISP
;其
第3章 8088/8086MPU的指令系统
两个操作数不能同时在存储器中。也不能为立即数。 不允许使用段寄存器。 不影响标志位。
第3章 8088/8086MPU的指令系统
微机原理及接口技术课件第3章 8086寻址方式与指令系统
17
3.2 8086寻址方式
4.寄存器间接寻址 MOV AX, [SI] ; 将[SI]为有效地址的存储器单元中的操作数送至 ; AX,默认DS为当前段基寄存器 MOV AX, [BP] ; 将[BP]为有效地址的存储器单元中的操作数送至AX, ;默认SS为当前段基寄存器
18
3.2 8086寻址方式
如果转向地址直接放在指令中,则这样的转移称为直接转移,视转移地 址是绝对地址还是相对地址(即地址位移量)又可分别称为绝对转移和相 对转移;如果转向地址间接放在其他地方(如寄存器中或内存单元中), 则这样的转移称为间接转移。
26
3.2 8086寻址方式
1.段内直接寻址 采用段内直接寻址方式,在汇编指令中直接给出转移的目标地
13
3.直接寻址
3.2 8086寻址方式
MOV AX, [2000H] MOV BX, NUM MOV VAR, AL MOV DATA, SP
; 将数据段中2000H单元内容送至AX中 ; 把数据段存储单元NUM中的字内容送至BX ; 把AL的字节内容送至数据段存储单元VAR中 ; 把SP的内容送至数据段存储单元DATA中
5
3.2 8086寻址方式
8086CPU的寻址方式有两类:数据寻址和转移地址寻址。 在讨论寻址方式之前,先简单介绍一条汇编语言中最常用 的指令:
MOV dst, src ; dst←(src)
其功能是将由“源操作数src”所指出的数据传送到由“目 的操作数dst”所指定的地方,其dst用于指定目的操作数的 寻址方式,src用于指定源操作数的寻址方式。
微机原理课件第三章8086寻址方式和指令系统
支持外部中断和内部中断,用于处理各种事 件和异常。
通过寄存器的内容来访问数据。
寄存器相对寻址
通过寄存器的内容加上偏移量来计算内存地 址,然后访问数据。
指令格式
操作码和操作数
指令由操作码和操作数组成。
操作数的个数
指令前缀
指令可以有不同数量的操作数, 包括零个、一个、两个或更多。
指令前缀用于改变指令的行为 或影响指令的执行方式。
指令系统
1
数据传送指令
微机原理课件第三章8086 寻址方式和指令系统
本章将介绍8086微处理器的寻址方式和指令系统。内容包括不同的寻址方式, 指令格式,指令系统,指令执行周期,以及8086处理器的特点和功能。
寻址方式
直接寻址
通过直接给出内存地址来访问数据。
寄存器间接寻址
通过寄存器的内容所指向的内存地址来访问 数据。
寄存器直接寻址
从内存中获取指令。 执行指令中的操作。 将结果存储回内存。 处理器响应中断请求。
8086处理器
8086处理器的特点
具有16位的数据总线和地址总线,支持最多 1MB的内存。
8086处理器的工作模式
包括实模式和保护模式,可以用于运行不同 类型的软件。
8086处理器的寄存器
包括通用寄存器、段寄存器和指令指针寄存 器。
用于在寄存器和内存之间传输数据。算,如加法、减法、乘法、除法和位操作。
3
逻辑指令
执行逻辑操作,如与、或、非和异或。
4
比较指令
用于比较两个值的大小,并根据比较结果设置标志位。
5
转移指令
用于无条件或有条件地改变指令执行的顺序。
指令执行周期
取指令周期 执行指令周期 存储指令周期 中断响应周期
微机原理电子教案:指令格式及寻址方式(最新整理)
指令格式及寻址方式§4-1-1 8086/8088的通用指令格式机器语言指令是由二进制代码组成。
一条指令是由操作码与操作数字段构成,其一般格式为:操作码字段 + 操作数字段。
操作码字段指明计算机所要执行的操作(即功能);操作数字段指出在指令执行过程中所需要的操作数。
比如指令指明作加法,则操作数就是加数,而且有两个。
计算机的任何操作不容有模糊的地方。
指令中的操作数同样如此,指令中不仅要指出有几个操作数,还要指明每个操作数到底在什么地方。
例如:ADD AX, BX其中ADD 是操作码助记符,指明做加法运算:AX和BX 是操作数助记符,指出被加数和加数,AX 还存放相加后的结果(原来被加数被冲掉)。
对有操作数的指令,在执行指令所规定的操作之前首先要寻找操作数。
操作数可放在CPU寄存器中,或内存单元中,或I/O端口内,寻找这些操作数的方式称为寻址方式,即指令中用于说明操作数或操作数所在地址的方法。
汇编语言是一种很接近于机器语言的低级计算机语言,在汇编语言中,助记符代替了操作码,而操作数部分也象机器语言一样需要指明具体位置,具有机器语言相应的寻址方式,当然表现形式不是二进制符号,而是数值、寄存器名、变量等。
为了更好的理解和掌握寻址方式及其用法,先对后面例子中使用的一条汇编语言指令做简单说明。
MOV指令是汇编语言最常用的指令之一,指令的基本格式是:MOV d1,d2该指令的功能是把操作数d2的值(如果在内存或寄存器中则取出它的值)传送到操作数d1指明的地方,相当于高级语言中的赋值语句功能。
操作数d1的寻址方式可以是内存型,也可以是寄存器型,但不能是立即数。
汇编语言的指令根据所带有的操作数的数量分为无操作数指令、单操作数指令、双操作数指令三类。
MOV等双操作数指令中绝大多数都是把写在前面的操作数d1作为存放操作结果的目的地,所以称为目的操作数,而d2称为源操作数。
§4-1-2 立即寻址(立即数)特点:操作数直接存放在指令中,作为指令的一部分存放在代码段里,这种操作数称为立即寻址。
微机原理与接口技术 8086的寻址方式和指令系统[3-1]
微机原理与接口技术第五讲第三章8086的寻址方式和指令系统内容提要z8086的寻址方式z微机系统指令的机器码表示方法z8086的指令系统§3-1 8086的寻址方式概述z计算机的指令包括:操作码+操作数↓↓操作的性质操作的对象↓存放寄存器、存储器、I/O端口地址、立即数(由寻址方式决定)z寻址方式:指令中说明操作数所在地址的方法。
z指令分类:单操作数、双操作数、无操作数。
(双操作数指令形式:操作码目的操作数,源操作数)各种寻址方式指令执行速度不同:z操作数在寄存器中指令执行速度快:在CPU内部立即执行;z立即数寻址指令执行速度较快:直接从指令队列中取数;z操作数在存储器中指令执行速度较慢:通过总线与CPU交换数据。
CPU进行读/写存储器的操作:①把一个偏移量送到BIU,计算出20位物理地址;②执行总线周期存取操作数。
寻址方式举例:8086指令的寻址方式类型一、立即寻址方式二、寄存器寻址方式三、直接寻址方式四、寄存器间接寻址方式五、寄存器相对寻址方式六、基址变址寻址方式七、相对基址变址寻址方式八、其它一、立即寻址方式(Immediate Addressing )1.含义:操作数是立即数(即8位或16位的常数),直接包含在指令中。
2.特点:翻译成机器码时,立即数是指令的一部分,紧跟在操作码之后存放在代码段内。
在取出指令的同时也就取出了操作数,立即有操作数可用,所以称之为立即寻址。
16位数:高字节→代码段的高地址单元,低字节→低地址单元;3.作用:常用于给寄存器赋初值。
§3-1 8086的寻址方式—概述8086指令的寻址方式类型一、立即寻址方式二、寄存器寻址方式三、直接寻址方式四、寄存器间接寻址方式五、寄存器相对寻址方式六、基址变址寻址方式七、相对基址变址寻址方式八、其它§3-1 8086的寻址方式——寄存器寻址方式§3-1 8086的寻址方式—概述8086指令的寻址方式类型一、立即寻址方式二、寄存器寻址方式三、直接寻址方式四、寄存器间接寻址方式五、寄存器相对寻址方式六、基址变址寻址方式七、相对基址变址寻址方式八、其它§3-1 8086的寻址方式——直接寻址方式三、直接寻址方式(Direct Addressing)1.含义:存储单元的有效地址EA(即:操作数的偏移地址)直接由指令给出。
微机原理与接口技术(第2版)电子教案3
指 令 系 统
3.2.1 数据传送指令
数据传送指令用来实现寄存器和存储器间字节 或字的数据传送。 数据传送指令包括堆栈操作、地址传送等指令。 下面分别从以下几个方面介绍: 1、通用数据传送指令 2、地址传送指令 3、标志寄存器传送指令
指 令 系 统
1.通用数据传送指令
(1)数据传送指令 MOV 格式:MOV OPD, OPS 功能:OPD是目的操作数,OPS是源操作数,该语名的功能 是将源操作数送至目的操作数中,即 OPS → OPD 说明: (1)MOV指令不允许在两个存储单元之间直接传送数据。 (2)MOV指令不允许在两个段寄存器之间直接传送数据。 (3)MOV指令不允许用立即数直接为段寄存器赋值。 (4)MOV指令不影响标志位。
执行后:
AX=5678H,SI、DS、 (31234H) 的内容不变。
指 令 系 统
5.寄存器相对寻址
寄存器相对寻址又称为直接变址寻址,操作数的偏移地址EA是一个 基址或变址寄存器的内容和指令中给出的8位或16位位移量之和。寻址 方式如下图所示:
R 操作码
rel 变址值
寄存器名
段寄存器 段首址
左移4位 位移量
演示
指 令 系 统
举例说明
例如,MOV AX,[SI] 执行前:
AX=0ABCDH,SI=1234H,DS=3000H, (31234H)=5678H。 这是一条双操作数指令,AX是目的操作数地址,其寻址方式为寄存器寻
址方式; [SI]指明了源操作数采用寄存间接寻址方式, SI的内容为源操
作数的偏移地址EA。 原操作数的物理地址为:PA = (DS)左移4位+SI = 31234H。
部数据线为16位),地址线为32条,实际寻址范围为4GB,虚拟存储空间达 64TB。 80386的内部寄存器共16个,分别是: ①8个32位通用寄存器:EAX、EBX、ECX、EDX、ESI、EDI、ESP 和EBP。 ②6个16位段寄存器:CS、DS、SS、ES、FS、GS。与ES相似,FS和
微机原理 第三章1
(2)立即(数)寻址
② MOV AX,1234H
说明:这条指令的功能就是将立即数 1234H传送到寄存器AX中。 执行完该条指令后, AX=1234H
(3)寄存器寻址(Segment Addressing)
当操作数在寄存器中时为寄存器寻址(或称寄 存器直接寻址)。如: ① MOV AL,12H 说明:目的操作数AL即为寄存器寻址。
DS(BX的默认段)值
0000
Memory
ES值
SS(BP的默认段)值
CS值
BP: +)位移量:
0000 0000 0000
…… ××
0100 0000 0000 0000 0000 0000 0000 0010
20 位 物 理 地 址
MOV [SI]10 ,AH ( 设SI原值为008CH)
Bit 19 4 3 0
1、通用数据传送指令
(1)MOV指令 (2)PUSH和POP指令 (3)交换指令XCHG (4)换码指令XLAT
(1)MOV指令
是基本传送类指令,实现字或字节数据的 复制。
指令格式:MOV dst,src
指令功能:将源操作数src,传送到目的操作 数dst中。 如:MOV AL,12H
功能:执行指令就是将立即数12H传送到 AL中,执行完指令后AL=12H。
(6)寄存器相对寻址方式 使用基址寄存器(BX或BP)、并带位移 量的间接寻址。操作数EA=BX或BP值+位 移量。 例:MOV DL,[BP+2] 其它等效写法: MOV DL,[BP] 2 MOV DL,2 [BP]
MOV DL,[BP+2] ( 设BP原值为4000H)
Bit 19 4 3 0
汇编语言 用指令助记符表示机器码,例如对应于机器码 B8H、C3H的助记符为MOV AX,BX 。 CPU不同,机器码不同,助记符也不同。
微机原理寻址方式
2024/7/23
7
第8页/共27页
4. 8086/8088寻址方式
操作数的存放地点
• 操作数可能存在于寄存器、存储器、I/O端口所对应的位置,也可能直接跟在指令后面(即立即数)
CPU
控 制 器
ALU Register
2024/7/23
memory 00000 H
~ FFFFFH
8
第9页/共27页
DS:
ES:
ES:
— SS: —
—
CS:
CS:
固定 搭配 的寄 存器
2024/7/23
SP
24
第25页/共27页
DI
IP
4. 8086/8088寻址方式
Exercise:
• Reference book page 61 to page 64 • Ta lking a bo ut a ddress ing mode belo w (so urc e o perand and dest ina t ion o pera nd ),
R/M字段和MOD字段的组合确定单操作数在存储器EA。
R/M和MOD字段编码的定义同双操作数指令。
DISP1为5 8位9或186位7的地6 址5位移3量2。 0
格式①
OP W MOD OP
R/M
00
23 17 16
14
11
8
格式②
OP W MOD OP
R/M
01
31 25 25
22
19
16
格式③
OP W MOD OP
R/M
2024/7/23
10
5
第6页/共27页
MOD=00
微机原理寻址方式
•1、立即寻址(immedi ate addres sing)双字节指令,第一个字节是操作码,第二个字节是操作数,操作数在指令中直接给出,故称为立即数。
在立即数前面必须加上前缀“#”。
如:MOV DPTR,#1234H1234H是立即数,指令功能是把16位立即数1234H送到数据指针DPT R中,如图。
•注意:立即寻址只能用于源操作数。
MOV A,#12H (√)MOV DPTR,#1200H(√)MOV #1200H,DPTR (×)•2、直接寻址(direct addres sing)在指令中直接给出操作数单元的地址。
如:MOV A,3AH指令功能:把片内RAM中3AH单元内的数据传送给累加器A。
如图所示:直接寻址方式只能给出8位地址,限于片内RA M:(1)低128单元,在指令中直接以单元地址形式给出。
(2)特殊功能寄存器,在指令中直接以单元地址形式给出,还可以寄存器符号形式给出。
如:PUSH DPH==PUSH 83H。
直接寻址访问累加器A时,用ACC表示累加器,以便与寄存器寻址方式区别。
•3、寄存器寻址(regist er addres sing)在指令中将指定寄存器的内容作为操作数。
寄存器寻址方式中,用寄存器名表示寄存器。
寻址范围:四组通用寄存器Rn(R0~R7)、部分专用寄存器(A, B, DPTR,)。
如:INC R0指令功能:把寄存器R0的内容加1,再送回R0中。
•4、寄存器间接寻址(regist er indire ct addres sing)在指令中给出的寄存器内容是操作数的地址,从该地址中取出的才是操作数。
在该寻址中,寄存器的名称前需加前缀“@”。
例如,指令MOVA,@R0指令功能:若R0寄存器的内容是3A H,指令的功能是以3AH为地址,将3AH地址单元的内容送到累加器A中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
指令格式及寻址方式§4-1-1 8086/8088的通用指令格式机器语言指令是由二进制代码组成。
一条指令是由操作码与操作数字段构成,其一般格式为:操作码字段 + 操作数字段。
操作码字段指明计算机所要执行的操作(即功能);操作数字段指出在指令执行过程中所需要的操作数。
比如指令指明作加法,则操作数就是加数,而且有两个。
计算机的任何操作不容有模糊的地方。
指令中的操作数同样如此,指令中不仅要指出有几个操作数,还要指明每个操作数到底在什么地方。
例如:ADD AX, BX其中ADD 是操作码助记符,指明做加法运算:AX和BX 是操作数助记符,指出被加数和加数,AX 还存放相加后的结果(原来被加数被冲掉)。
对有操作数的指令,在执行指令所规定的操作之前首先要寻找操作数。
操作数可放在CPU寄存器中,或内存单元中,或I/O端口内,寻找这些操作数的方式称为寻址方式,即指令中用于说明操作数或操作数所在地址的方法。
汇编语言是一种很接近于机器语言的低级计算机语言,在汇编语言中,助记符代替了操作码,而操作数部分也象机器语言一样需要指明具体位置,具有机器语言相应的寻址方式,当然表现形式不是二进制符号,而是数值、寄存器名、变量等。
为了更好的理解和掌握寻址方式及其用法,先对后面例子中使用的一条汇编语言指令做简单说明。
MOV指令是汇编语言最常用的指令之一,指令的基本格式是:MOV d1,d2该指令的功能是把操作数d2的值(如果在内存或寄存器中则取出它的值)传送到操作数d1指明的地方,相当于高级语言中的赋值语句功能。
操作数d1的寻址方式可以是内存型,也可以是寄存器型,但不能是立即数。
汇编语言的指令根据所带有的操作数的数量分为无操作数指令、单操作数指令、双操作数指令三类。
MOV等双操作数指令中绝大多数都是把写在前面的操作数d1作为存放操作结果的目的地,所以称为目的操作数,而d2称为源操作数。
§4-1-2 立即寻址(立即数)特点:操作数直接存放在指令中,作为指令的一部分存放在代码段里,这种操作数称为立即寻址。
操作数可以是各种数制下的数。
一般常用于给寄存器或存储单元赋初值(即初始化),立即数只能用于源操作数字段,不能用于目的操作数字段。
例4-1: MOV AX,5 ;(AX)← 5 十进制形式的立即数MOV AX,1234H ;(AX)← 1234H 十六进制形式的立即数MOV AL,11001101B ;(AL)← 11001101B 二进制形式的立即数MOV AL,’3’;(AL)← 33H 字符形式的立即数立即数还有一些比较复杂的情况。
如果操作数是由数值和运算符构成的表达式,汇编程序在翻译时会计算出表达式的值,并把结果以立即数形式翻译到机器指令中。
比如:MOV AL,’3’-30H ;表达式计算结果是3,并以3作为立即寻址方式的操作数。
MOV 200H,AX ;(错误的,立即数不能作目的操作数)立即数可是二进制、十进制、十六进制。
§4-1-3 寄存器寻址特点:操作数在某寄存器中,存取这类操作数在CPU内部进行,所以执行速度快。
存放16位操作数的寄存器有:AX,BX,CX,DX,BP,SP,SI,DI;存放8位操作数的寄存器有: AH,AL,BH,CH,CL,DH,DL。
CS、DS、SS、ES---------16位的段寄存器例4-2:以知:(BX)=1234HMOV AX,BX ;(AX)←(BX)执行后(AX)=1234H,(BX)不变。
下面指令中的操作数都是寄存器寻址方式MOV AL,BL MOV AL,DH MOV BP,SP MOV AX,SI MOV AX,CS MOV DS,DX 注意:指令指针IP和标志寄存器PSW以及所有标志位的代号CF、ZF、OF等都不能作为寄存器寻址方式的操作数,不允许出现在汇编语言的任何指令中。
另外,,8088汇编语言还规定,不允许用MOV等具有赋值功能的指令修改CS的值,在8088汇编语言中MOV CS, AX不符合语法规则。
§4-1-4 存储器操作数寻址内存型寻址方式是指参与操作的数据在内存中,因此必须指明操作数究竟在内存的什么地方,即指出内存的逻辑地址。
存储器是分段管理的,要找到操作数,必须指明操作数所在的段(段基址由段寄存器指明)及段内偏移地址(以有效地址EA的形成方式指出)。
1.直接寻址方式特点:指令中指接给出操作数在段内的偏移量,段基址隐含给出或用段前缀指明。
该寻址方式适用于处理单个变量。
一般操作数存放在数据段,故操作数的物理地址为:物理地址=(DS)× 16 + EA=(段基址的寄存器)× 16 + 偏移地址例 4-3:以知:(DS)=4000H,[1000H]=3355HMOV AX,[2000H]执行后:(AX)=3355H物理地址=40000H+1000H=41000H EA=1000H,寻址过程如图4-1所示。
存储器图4-1 例4-3直接寻址示意图说明:(1)偏移地址(EA)在指令中直接给出。
指令中缺省段寄存器说明,段基址在DS段寄存器中;否则在指令中需对段寄存器加以说明。
例如:MOV AX,ES:[2300H](2)可用符号地址代替数值地址,例如:MOV AX,VALUE ;此时,VALUE 为存放操作数单元的符号地址,即变量名,也可写成:MOV AX,[VALUE];两者等价。
2.寄存器间接寻址特点:操作数有效地址在基址寄存器BP、DI中,而操作数则在存储器中。
它适用于表格处理,执行完一条指令后,只需修改寄存器内容就可取出表格中的下一项元素。
(1)令中的有效地址(EA)存放在BX,SI,DI寄存器中,则操作数在数据段中,即操作数的物理地址为:(BX)物理地址=16D×(DS)+ (SI)(DI)(2)若有效地址存放在BP寄存器,则操作数在堆栈段中,即操作数物理地址为:物理地址=(SS)16+(BP)(3)可使用段跨越前缀来取得其他段中的数据,如:MOV AX,ES:[BX]注意:MOV AX,BX;(AX)←(BX)与上面的 MOV AX,[BX]含义不同。
例4-4:已知:(DS)=1000H,(BX)=0A00HMOV AX,[BX]物理地址=10000H+0A00H=10A00H执行后:(AX)=4422H ,如图4-2所示。
存储器10000HDS+BX数据段10A00H `图4-2 例4-4寄存器间接寻址示意图3.寄存器相对寻址其特点:操作数的有效地址是一个基址寄存器或变址寄存器的内容和指令中指定的8位或16位位移量(即偏移量)之和。
适用于表格处理,修改基址或变址寄存器的内容来取得表格中的元素。
一般形式:(BX)物理地址=16D ×(DS)+ (SI) + 8位位移量或16位位移量(DI)物理地址=(SS)×16D+(BP)+8位位移量或16位位移量例4-5:已知(DS)=2000H,(SI)=50H,其中DISP为16位位移量的符号地址,其值DISP=1000H。
MOV AX,DISP[SI]或 NOV AX,[DISP+SI]物理地址=20000+1000H+50H=21050H执行后:(AX)=6688H,如图4-3所示。
该寻址方式可使用段跨越前缀,例如:MOV DL,ES:STRING[SI]存储器20000H 21000H 4. 基址变址寻址特点:操作数的有效地址是一个基址寄存器的一个变址寄存器内容之和。
(SI )物理地址=(DS )×16D+(BX )+(DI )SI ) 物理地址=(SS )×16D+(BP )+(DI )适用表格或数组处理,表格或数组首地址可存放在基址寄存器中。
例4-6:已知:(DS )=3000H ,(BX )=1100H ,(SI )=0050HMOV AX ,[BX][DI]或 MOV AX ,[BI+DI]EA=1100H+0050H=1150H物理地址=30000H+1150H=31150H执行后:(AX )=5678H5. 相对基址变址寻址特点:操作数据有效地址是一个基址寄存器与一个变址寄存器的内容之和再加上8位或16位位移量。
同样,当基址寄存器为BX 时,使用DS 为段寄存器;而当基址寄存器为BP 时,则使用SS 为段寄存器。
因此物理地址为:(SI ) 8位物理地址=(DS )×16D+(BX )+ + 位移量(DI ) 16位(SI ) 8位物理地址=(SS )×16D+(BP )+ + 位移量(DI ) 16位例4-7:已知(DS )=5000H ,(BX )=3000H ,(SI )=2000H ,BUFF=0350HMOV AX ,BUFF[SI][BX]或 MOV AX ,[BUFF][BX][SI]或 MOV AX,[BUFF+SI+BX]物理地址=(DS)×16D+(BX)+(SI)+BUFF=50000H+3000+2000+0305=55350H执行后:(AX)=6684H,如图4-5。
该寻址方式为堆栈和多重表格处理提供了方便,无段跨越前缀。
§4-1-5 I/O端口寻址1.直接端口寻址方式I/O端口地址以8位立即数方式在指令中直接给出.例如 IN AL,PORT; PORT为寻址端口编号,只能在0~255范围之内.2.间接端口寻址方式I/O地址超过8位时,应放在DX寄存器中,即通过DX间接寻址,所能寻址的端口编号为0~65535。
如 OUT DX,AL,表示将AL的内容输出到由(DX)指出的端口中去。
在16位PC机中,仅用A9~A0 十条地址线表示I/O端口,所以DX间接寻址的范围为0~1023(即0~3FFH)。
本节小结本节介绍了微型计算机的指令格式、寻址方式。
通过本节学习,读者应该熟悉指令的格式,了解指令中各字段的功能;掌握各种寻址方式极其应用,学会有效地址的计算方法;练习1、给定BX=874EH,SI=2A9B,位移量DISP=8117H,试确定在以下各寻址方式下的有效地址是什么?(1)立即寻址(无)(2)直接寻址(8117)(3)使用BX的寄存器寻址(无)(4)使用BX的寄存器间接寻址(874EH)2、假定DS=4000H,ES=4100H,SS=3500H,SI=00B0H,BX=0200H,BP=0020H,V AL=0100H,试指出以下源操作数字段的寻址方式是什么?其物理地址是什么?(1)MOV AX,0BCH 立即无(2)MOV AX,BX 寄存器无(3)MOV AX,[200H] 直接寻址(DS)X16+200H(4)MOV AX,V AL 直接寻址(DS)X16+0100H(5)MOV AX,[BX] 寄存器间接寻址(DS)X16+0200H(6)MOV AX,ES:[BX] 寄存器间接寻址(ES)X16+0200H(7)MOV AX,[BP] 寄存器间接寻址(SS)X16+0200H(8)MOV AX,[SI] 寄存器间接寻址(DS)X16+0200H(9)MOV AX,[BX+06H] (10)MOV AX,V AL[BX](11)MOV AX,[BX][SI] (12)MOV AX,V AL[BX+SI]3、现有DS=4000H,BX=0300H,SI=0002H,(40300H)=01H,(40301H)=23H,(40302H)=45H,(40303H)=67H,(41400H)=3BH,(41401H)=7EH,(41402H)=C2H,(41403H)=56H,试指出下列各条指令执行完毕后AX寄存器的内容。