IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 8086的寻址方式 -> 正文阅读

[嵌入式]8086的寻址方式

1. cpu中总的寄存器

8086 CPU 中寄存器总共为 14 个,且均为 16 位 。

即 AX,BX,CX,DX,SP,BP,

SI,DI,IP,FLAG,CS,DS,SS,ES 共 14 个。

而这 14 个寄存器按照一定方式又分为了通用寄存器,控制寄存器和段寄存器。

2. 通用寄存器

2.1 数据寄存器

AX,BX,CX,DX 称作为数据寄存器:

  • AX (Accumulator):累加寄存器,也称之为累加器;

  • BX (Base):基地址寄存器;

  • CX (Count):计数器寄存器;

  • DX (Data):数据寄存器;

可以分为两个独立的 8 位的 AH(BH, CH, DH) 和 AL(BL, CL, DL) 寄存器.

2.2 指针寄存器

SP 和 BP 又称作为指针寄存器:

  • SP (Stack Pointer):堆栈指针寄存器;

  • BP (Base Pointer):基指针寄存器;

2.3 变址寄存器

SI 和 DI 又称作为变址寄存器:

SI (Source Index):源变址寄存器;

DI (Destination Index):目的变址寄存器;

3. 控制寄存器

控制寄存器:

  • IP (Instruction Pointer):指令指针寄存器;

  • FLAG:标志寄存器;

4. 段寄存器

  • CS (Code Segment):代码段寄存器;

  • DS (Data Segment):数据段寄存器;

  • SS (Stack Segment):堆栈段寄存器;

  • ES (Extra Segment):附加段寄存器;

5. 操作数寻址

5.1 立即寻址

MOV AX, 1234H ; 给AX寄存器赋值为1234H

5.2直接寻址

操作数存放在存储器中, 偏移量直接写在操作数中,.

地址为数据段寄存器DS的值* 16 (<<4)然后加上直接给出的偏移量2000H.

MOV BX, DS:[2000H]

5.3 寄存器寻址

MOV DX, AX ;将AX中的值赋给DX 

直接使用寄存器中的值作为操作数, 速度较快.

5.4 寄存器间接寻址

操作数存放在存储器中, 16位偏移地址存放在SI, DI, BP, BX四个寄存器之一中.

若使用BX, SI, DI之一作为寄存器, 操作数默认放在DS所决定的数据段中.
即地址为:DS *16 + BX

MOV AX, [SI] ; 将DS*16 + SI中的值放入AX中

若使用BP做间接寻址, 操作数默认放在SS决定的堆栈段中.

MOV AX, [BP]  ;将SS*16 + BP中的值放入AX中

可以直接指定使用的段寄存器:

MOV  AX, SS:[SI]  ;将SS*16 + SI中的值放入AX中

5.5 寄存器相对寻址

操作数存放在存储器中, 使用段寄存器内容* 16 加SI, DI, BP, BX四个寄存器之一的内容再加直接给出的位移量.

若使用BX, SI, DI之一作为寄存器, 操作数默认放在DS所决定的数据段中; 若使用BP做间接寻址, 操作数默认放在SS决定的堆栈段中.

与寄存器间接寻址相比只是增加了直接给出的偏移量:

MOV AX, [SI-2] ; 将 DS*16 + SI - 2中的值放入AX中
MOV AX, [BP+4]  ;将 SS*16 + BP + 4中的值放入AX中
MOV  AX, SS:[SI-8]  ;将 SS*16 + SI - 8中的值放入AX中

5.6 基址变址寻址

将段地址寄存器的值*16加上基址寄存器(BX,BP)之一的地址加上变址寄存器(SI, DI)之一的值作为地址.

若使用BX作基址 操作数默认放在DS所决定的数据段中; 若使用BP做基址, 操作数默认放在SS决定的堆栈段中.

MOV AX, [BX][SI] ; 将 DS*16 +BX + SI中的值放入AX中
MOV AX, [BP][DI]  ;将 SS*16 + BP + DI 中的值放入AX中
MOV  AX SS:[Bx][SI]  ;将 SS*16 + BX + SI 中的值放入AX中

5.7 基址变址相对寻址

在基址变址寻址基础上再加一个直接给出的偏移量:

MOV AX, 1234H[BX][DI] ;将DS * 16 + BX + DI + 1234H中的值放入AX中.

还有几种表示方法与上式等价:

MOV AX, [BX+DI+1234H]

MOV AX, 1234H[BX+DI]

MOV AX, 1234H[BX][DI]

referenc:
参考1

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-06-01 15:23:19  更:2022-06-01 15:24:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 0:46:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码