微型计算机原理与接口技术第3章

发布时间:2024-11-18

第三章 8086的寻址方式和指令系统 指令系统是微处理器(CPU)所能执行的指令 的集合,它与微处理器有密切的联系,不同的微处 理器有不同的指令系统。在本章中我们主要讲解 INTEL公司生产的8086/8088CPU的寻址方式以及各 种指令系统,并通过具体实例讲述了各条指令的功 能和使用方法。

根据指令内容确定操作数地址的过程, 称为寻址。 根据寻址方式计算所得到的地址叫做有 效地址EA,也就是段内偏移地址。有效 地址还需要与相应的段基地址组合才是 20位的物理地址PA ,该工作由CPU完成。

汇编指令:

操作码

操作数

操作码:指令操作类型; 操作数:指令所需操作数或操作数的地址;操作数可以 有一个,也可以有两个,一个源操作数,一个目的操作 数。

例: MOV AX,CX ;将CX的内容送入AX中。

一、立即寻址方式

指令操作数部分直接给出指令的操作数,操作数与操作 码一起存入代码段中。立即数有8位和16位。例 :MOV AL,5 ;源操作数为立即寻址 指令执行后,AL=05H,8位数据05H存入AL寄存器。 例 :MOV AX,3064H ;源操作数为立即寻址 指令执行后,AX=3064H,16位数据3064H存入AX寄存 器。

二、 寄存器寻址方式

寄存器寻址方式的操作数是寄存器的值,指令中直接 使用寄存器名,包括8位或16位通用寄存器和段寄存器。 可使用的16位寄存器:AX、BX、CX、DX、SI、DI、 SP、BP;其中:AX、BX、CX、DX可分成两8位使用。例: MOV AX,CX ;(AX) (CX)

MOV AL , CL

;(AL)

(CL)

内存寻址方式

c语言 int p; int *p;int **p在内存寻址方式中,操作数是某个内存单元的内容 (值),指令中给出的是内存单元的有效地址EA(即 偏移地址),段地址通常在隐含的某个段寄存器中。

三、直接寻址方式 直接寻址方式的操作数的形式为:Variable或[Variable] 在直接寻址方式中,操作数的偏移地址(有效地址EA) 直接用指令加以指定(有直接地址值和标号两种形式), 它存放在代码段中指定操作码之后,但操作数一般存放 在存储器的数据段中,所以必须先求出操作数的物理地 址,然后再访问存储器才能取得操作数。段地址隐含的 由DS 指定,也可以ES指定,但需在指令中指明。最后 存储器地址为:DS:偏移地址 或 ES:偏移地址。 例: MOV AX,ES:[2000H] 将ES:2000H单元内容送入AX。 例: MOV AX,LABLE 或 MOV AX,[LABEL] 将标号为LABLE(存放操作数单元的符号地址) ,即 DS:LABLE中的内容送入AX。

段超越当操作数在内存单元时,系统根据隐含约定,自动将 寄存器DS的值作为段地址。然而,当操作数段地址 不在隐含的段寄存器时,可以使用段超越前缀取代其 隐含约定。 段超越前缀形

式为: 段寄存器名: 例如: MOV AX,ES:[BP] ;段地址在ES MOV AX,CS:[BX] [SI] ;段地址在CS 段地址的基本约定和允许超越的情况如表所示:

存储器存取方式 约定段 允许超越段

偏移地址

取指令 堆栈操作 源串 目的串 BP作基址 通用数据读写

CS SS DS ES SS DS

无 无 CS,ES,SS 无 CS,DS,ES CS,ES,SS

IP SP SI DI 有效地址EA 有效地址EA

四、寄存器间接寻址 寄存器间接寻址方式的操作数形式为:[reg] 操作数的有效地址包含在基址寄存器BX,基址指针BP 或一个变址寄存器(SI或DI)中。寄存器间接寻址要 用方括号括起来,以便与寄存器操作数相区别。 例: MOV AX,[BX];将由BX决定的存储单元的内 容送到AX寄存器。 DS=100010000 10002 10003 10004 BX 数据段 BB TAB:

AAAA 间接寻址 BB AX

0002

AH

AL

操作数在存储器中,指令中寄存器内容作为操作数所在 单元的有效地址。 (BX) (SI) 有效地址 = (DI) (BP) 段寄存器为SS 段寄存器为DS

物理地址计算方法:物理地址 = (DS)* 16 + (BX)或(SI)或(DI) 物理地址 = (SS)* 16 + (BP)

例:已知:(DS)=2100H,(DI)=2000H 指令: MOV AX,[DI] ;(AX) ((DI))

物理地址=(DS) * 16 + (DI)=2100H * 16 + 2000H

=21000H + 2000H=23000H 指令结果:将23000H单元内容送AL中, 将23001H单元内容送AH中。

五、寄存器相对寻址方式

操作数在存储器内,指令中寄存器内容与指令指定的位 移量(DISP)之和作为操作数所在单元的有效地址。 (BX)有效地址 = (SI) (DI) (BP) + DISP16

DISP8段寄存器为DS

段寄存器为SS

物理地址 = (DS)* 16 +(BX)+DISP8

(SI)、(DI)、DISP16类同。物理地址= (SS) *16 + (BP)+DISP16

例: 如果 (DS)=3000H, (SI)= 2000H, COUNT=3000H,

则执行指令 MOV AX,COUNT[SI],求出此种寻址方 式对应的有效地址和物理地址。有效地址= 2000H + 3000H = 5000H 物理地址=(DS)*16 + 5000H =30000H + 5000H =35000H 六、基址变址寻址方式: 操作数在存储器中,指令将基址寄存器(BX或BP) 与变址寄存器(SI或DI)内容之和作为操作数所在存 储单元的有效地址。

有效地址 =

(BX) (BP)

+

(SI) (DI)

物理地址 = (DS) * 16 + (BX)+ (SI)或(DI) 物理地址 = (SS) * 16 + (BP) + (SI)或(DI)

例: MOV AX,[BX+DI] 或 MOV AX,[BX][DI] DS:(BX)+(DI) 字存储单元内容送AX。

例: MOV AX,[BP+SI] 或 MOV AX,[BP][SI] SS:(BP)+(SI) 字存储单元内容送AX。

例:如果 (DS)=2100H, (BX)= 0158H, (DI)=10A5H, EA=11FDH, 则执行指令 MOV AL,[BX][DI]有效地址:EA=(BX)+(DI)=0158H+10A5H=11FDH

物理地址:(DS) * 16 + 有效地址=21000H+11FDH=221FDH执行结果:将221FDH单元内容送入寄存器AL中。

七、相对基址变址寻

址方式 操作数在存储器内,指令将基址寄存器(BX或BP)与 变址寄存器(SI或DI)的内容之和再加上位移量(8位 或16位),得到操作数所在单元的有效地址。有效地址=

(BX) (BP)

+

(SI) (DI)+

DISP8 DISP16

微型计算机原理与接口技术第3章.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219