汇编语言讲义第三章-80x86的寻址方式PPT课件

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第3章 寻址方式
-
1
一、数据寻址方式:与数据有关的寻址方式 (1)16位寻址:操作数的偏移地址由16位二进制数组成,段地址保存在CS、
DS、ES、SS中,20位物理地址是由段基地址加上操作数的偏移地址形成的,最 大寻址空间为1MB。
(2)32位寻址:32位微处理器在保护模式下的一种寻址方式,需要提供32位 偏移地址。80x86从386起就把机器字长从16位增加在32位,相应的16位寄存器 也扩展为32位寄存器( EAX、EBX、ECX、EDX、ESP、EBP、EDI、ESI)。兼容 了16位寻址。在实模式下,这两种寻址方式可同时使用,但段的大小被限制在 64KB之内。8086、80286不支持32位寻址方式。
数的地址。8086/8088系统中的任何内存
地址是由两部分组成的,即段基地址和
偏移地址。为了适应要处理的各种数据
结构的需要,这个段内偏移地址可以由
几个部分组成,把它称为有效地址EA。
-
6
1、立即寻址方式:n
• 所提供的操作数(立即数)紧跟在操作码的后面,与操作码一起放在指令代
码段中。
• 立即数可以是8位数或16位数。
② 指出放在什么地方。
③ 指出操作结果送到哪里去。
• 三种类型的操作数:
(1)立即数操作数:指令中直接给出数据,即立即数。
(2)寄存器操作数:操作数在寄存器中。
(3)存储器操作数:操作数在存储器(内存)中。可以是数据的地址,或其它
能间接获得操作数的信息。
• 操作数的设置情况:
(1)有些指令需要一个操作数。例如:DEC AL
例5 ADD AX,BX ;(AX)+(BX)→AX 执行前:(AX)= 1234H,(BX)= 5620H 执行后:(AX)= 6854H,(BX)= 5620H
例6 MOV AX,BX ; (BX)→AX 执行前:(AX)= 6789H,(BX)= 0000H 执行后:(AX)= 0000H,(BX)= 0000H
做间接寄存器、变址寄存器或基址寄存器,只要有BP寄存器出现,操作数 就在当前的堆栈段。操作数的物理地址由堆栈段寄存器SS的内容左移4位 与偏移地址EA相加;
• 否则,操作数在当前数据段,此时,操作数的物理地址由数据段寄存器DS
的内容左移4位与偏移地址EA相加形成。
• 这是8086的具体约定,即默认状态。当要否定默认状态,到非约定段寻址
• 默认段为数据段。
CS
……
A1H
例7 MOV AX,[2000H] ;((DS)×10H+2000H)→AX
0ຫໍສະໝຸດ BaiduH
20H
执行前:(DS)= 3000H
执行后:(AX)= 5050H
AX
DS
…… …
32000H
50H 50H
……
-
9
跨段访问情况
• 8086的存储器是分段使用的,通常,若选用寄存器(BX、BP、SI和DI)
二、指令寻址方式:与转移地址有关的寻址方式
-
2
寻址方式:寻找数据和指令存放地址的方式。
• 微型计算机系统的每一条指令通常由操作码字段和操作数字段两部分组成 。
(1)操作码字段:指出进行什么操作。每条指令都有自己的操作码;
(2)操作数字段:指出大多数指令涉及的操作数和操作结果放在何处。
① 指出操作数的值为多少。
操作数时,必须用跨段前缀指明操作数所在段的段寄存器名。 段寄存器名:偏移地址 功能:冒号“:”之前的段寄存器指明了操作数所在段。
寻址方式可能有三种情况:
• 操作数包含在指令中,即指令的操作数
字段就包含着操作数本身。这种寻址方
式称为立即寻址,这种操作数就称为立
即数。
• 操作数包含在CPU的某一个内部寄存器中,
这时指令中的操作数字段是CPU内部寄存
器的一个编码,这种寻址方式称为寄存
器寻址。
• 操作数在内存的数据区(存储器)中,
这时指令中的操作数字段包含着此操作
……
-
7
2、寄存器寻址方式:R
• 操作数包含于CPU的内部寄存器之中。寄存器名是操作数的符号地址,寄存器
的内容是指令所需的操作数。
例3 INC AX ;(AX)+1→AX 执行前:(AX)= 3344H 执行后:(AX)= 3345H
例4 DEC CX ;(CX)-1→CX 执行前:(CX)= 78H 执行后:(CX)= 77H
• 只能用于源操作数字段,不能用于目的操作数字段,经常用于给寄存器赋初
值。
以下为错误的指令:
例1 MOV AL,18 ; 18→AL 执行后:(AL)= 12H
MOV 18,AL ; 18←AL
……
例2 MOV AX,2000H ; 2000H→AL
执行后:(AX)= 2000H
CS
E8H 00H 20H
(2)有些指令需要两个操作数。例如:MOV AX,BX
ADD AX,BX
(3)有些指令不需要操作数。 例如:- HLT
3
有效地址:EA = 基址+(变址×比例因子)+位移量(X)
(1)位移量:是存放在指令中的一个8位、16位和32位的数,但它不是立即数, 而是一个地址。
(2)基址:是存放在基址寄存器中的内容。它通常用来访问数组中的某个元素 或字符串中的某个字符。
-
以下为错误的指令: 例 MOV AL,256 例 MOV AX,20000H 例 MOV AL,BX
8
3、直接寻址方式:[n]
• 操作数在存储器中。操作数的偏移地址直接包含在指令中,和指令操作码一
起放在代码段,而操作数则在数据段中。操作数的地址是数据段寄存器DS中
的内容左移4位后,加上指令给定的16位地址偏移量。
目的操作数,源操作数
例 MOV AX,BX 例 ADD AX,BX 例 SUB AX,BX
;(BX)→AX ;(AX)+(BX)→AX ;(AX)-(BX)→AX
-
5
与数据有关的寻址方式 16位寻址
1. 立即寻址方式
2. 寄存器寻址方式
3. 直接寻址方式 4. 寄存器间接寻址方式 5. 寄存器相对寻址方式 6. 基址加变址寻址方式 7. 相对基址加变址寻址方式
(3)变址:是存放在变址寄存器中的内容。它通常用来访问数组中的某个元素 或字符串中的某个字符。
(4)比例因子:是386及其后继机型中新增加寻址方式中的一个术语,其值可为
1、2、4、8。在寻址中,可用变址寄存器的内容乘以比例因子来取得变址
值。这类寻址方式对访问长度为2、4、8字节的数组特别有用。
-
4
操作数字段指出操作结果送到哪里去。 有些指令需要两个操作数。
相关文档
最新文档