微机原理与应用电子PPT课件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4
指令举例: ADD CL,BH ; CL←CL+BH
寻址方式就是指令中用于说明操作数所在地址的方 法,或者说是寻找操作数有效地址的方法。寻址方式一 般是针对源操作数而言的。在8086/8088系统中,一般 将寻址方式分为两种不同的类型,一类是寻找操作数的 地址,另一类是寻找要执行的下一条指令的地址,即程 序的地址。
3
4.1 Intel x86的寻址方式
指令的一般格式:操作码
操作数
计算机中的指令由操作码字段和操作数字段组成。
操作码:指计算机所要执行的操作,是一种助记符。
操作数:指在指令执行操作的过程中所需要的操作
数。 分目标操作数、源操作数。该字段除可以是操作
数本身外,也可以是操作数地址或是地址的一部分,还
可以是指向操作数地址的指针或其它有关操作数的信息。
立即寻址主要用来给寄存器或存储单元赋初值。
7Leabharlann Baidu
4.1.2 直接寻址 操作数地址的16位偏移量直接包含在指令中,所以 这种寻址方式叫直接寻址。16位偏移量与操作码一起存 放在代码段区域,操作数一般在数据段区域中,它的地 址为数据段寄存器DS加上这16位地址偏移量。如图4-2 所示。 例如:MOV AX,DS:[3000H] ;AX←(DS:3000H)
MOV AX,DS:[BP] ;操作数地址是:(DS)×16+(BP)
14
4.1.5变址寻址(又称为寄存器相对寻址)
由指定的寄存器内容,加上指令中给出8位或16位的偏 移量(当然要由一个段寄存器作为基地址)作为操作数的 偏移地址,称为变址寻址。(操作数在存储器中) 可以作为变址寻址的四个寄存器是SI、DI、BX、BP。
6
立即数若是8位的,可以是无符号数,取值范围是 00H-0FFH,也可以是带符号数,取值范围是80H-7FH。 立即数若是16位的,可以是无符号数,取值范围是 0000H-0FFFFH,也可以是带符号数,取值范围是 8000H-7FFFFH。若是16位的,则存储时低位在前,高 位在后。在指令中,立即数操作数只能作源操作数,而 不能作目的操作数。
1) 若用SI、DI和BX作为变址,则与数据段寄存器相加, 形成操作数的地址默认在数据段。
2) 若用BP变址,则与堆栈段寄存器相加,形成操作数 的地址默认在堆栈段。 例如:
MOV AX,DATA[BX] ;指令的执行过程如图4-5所示 操作数地址是:(DS)× 16+(BX)+DATA 假设(DS)= 4000H,(BX)= 2000H, DATA= 0020H 则物理地址= 4000H×10H+2000H+0020H= 42020H
第4章 80x86微处理器的指令系统
内容提要:本章以8086/8088为例,介绍微型计算机的 指令系统,指令格式和基本的寻址方式及有效地址的计 算。指令系统包括数据传送指令、 算术运算指令、位 操作指令、串操作指令、控制转移指令和处理器控制指 令。只所以采用8086/8088CPU的指令系统,是因为 8086/8088指令系统是所有80X86系列CPU指令系统的 基础,80286、80386、80486乃至Pentium等新型 CPU的指令系统仅是在这个基础上做了一些补充。用 8086/8088指令系统编写的程序可以毫无改动地在 80286、80386、80486、Pentium等CPU
学习要求:熟练掌握8086/8088微处理器的指令系统, 6种基本寻址方式和各种常用指令。
返回主目录
1
标题添加
点击此处输入相 关文本内容
标题添加
点击此处输入相 关文本内容
总体概述
点击此处输入 相关文本内容
点击此处输入 相关文本内容
2
第4章 80x86微处理器的指令系统
本章目录 4.1 Intel x86的寻址方式 4.2 Intel x86指令系统 小结
8086/8088的基本寻址方式有六种,下面我们来讨 论这六种寻址方式。
5
4.1.1 立即寻址 所提供的操作数直接包含在指令中,这种寻址方式 就叫立即寻址,这个操作数叫立即数。所谓立即数是指 具有固定数值的操作数,即常数。它紧跟在操作码的后 面,与操作码一起放在代码段区域中。如图4-1所示。 例如: MOV AX,2345H ; AX←2345H
8
设DS = 1000H。 直接寻址方式如图所示。
(对DS来讲可以省略成 MOV AX,[3000H],系统 默认为数据段)
9
这种寻址方式是以数据段的地址为基础,可在多达 64KB的范围内寻找操作数。
这种寻址方式允许段超越,即还允许操作数在以代码段、 堆栈段或附加段为基准的区域中。此时只要在指令中指明 是段超越的,则16位地址偏移量可以与CS或SS或ES相加, 作为操作数的地址。
MOV AL,BH ;AL←BH
11
4.1.4寄存器间接寻址 操作数是在存储器中,但是,操作数地址的16位偏移 量包含在以下四个寄存器SI、DI、BP、BX之一中,所以 这种寻址方式叫寄存器间接寻址。可以分成两种情况: 1) 以SI、DI、BX间接寻址,则通常操作数在现行数 据段区域中,即数据段寄存器(DS)×16(或10H)加上SI、 DI、BX中的16位偏移量,为操作数的地址,如图4-4所示。
12
例如: MOV AX,[SI] ; 操作数地址是:(DS)×16+(SI)
13
2) 以寄存器BP间接寻址,则操作数在堆栈段区域中。即 堆栈段寄存器(SS)×16与BP的内容相加作为操作数的地址。 例如:
MOV AX,[BP] ; 操作数地址是:(SS)×16+(BP)
若在指令中规定是段超越的,则BP的内容也可以与其它的 段寄存器相加,形成操作数地址。 例如:
MOV AX,[2000H] ;数据段 MOV BX,ES:[3000H] ;段超越,操作数在附加段
即绝对地址=(ES)× 16+3000H
10
4.1.3寄存器寻址 操作数包含在CPU的内部寄存器中,所以这种寻址方 式叫寄存器寻址。它们可以是数据寄存器(8位或16位), 也可以是地址指针寄存器、变址寄存器或段寄存器,如寄 存器AX、BX、CX、DX、SI等。如图4-3所示。 例如: MOV BX,AX ;BX←AX
相关文档
最新文档