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 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 汇编语言中各种寄存器的总结 -> 正文阅读

[嵌入式]汇编语言中各种寄存器的总结

早期的8086cpu中共有14个寄存器:
分别为:AX,BX,CX,DX,SP,BP,SI,DI,IP,FLAG,CS,DS,SS,ES
按照功能来分,大致可分为三类

1、通用寄存器

数据寄存器

AX

Accumulator:累加寄存器,也称之为累加器,常用于存放算术、逻辑运算中的操作数或结果。另外,所有的外部设备的输入输出指令都只能使用AL或AX作为数据寄存器。

BX

BX (Base):基地址寄存器,可用于数据寄存器,访问存储器时、可以存放被访问内存的地址,是具有双重功能的寄存器

CX

CX (Count):计数器寄存器;在循环、串操作指令中用作计数器。如在loop循环中用作计数器。

DX

DX (Data):数据寄存器;在乘除法中作为数据累加器,在输入输出操作中存放端口的地址。此外,在做双字长乘除法运算时,DX 与AX合起来存放一个双字长数(32位),其中DX存放高16位(余数),AX存放低16位(商)。

指针寄存器

SP

Stack Pointer:堆栈指针寄存器,存放栈顶的偏移位置,供堆栈操作使用,常用SS搭配进行使用

BP

Base Pointer:基指针寄存器;存放堆栈内数据的基地址

变址寄存器

SI

Source Index:源变址寄存器;主要用于存放地址,在字符串操作中存放源操作数的偏移地址。变址寄存器内存放 的地址在数据传送完成后,具有自动修改的功能。

DI

Destination Index:目的变址寄存器;主要用于存放地址,在字符串操作中存放目的操作数的偏移地址。

2、控制寄存器

IP

IP(Instruction Pointer):指令指针寄存器,常与CS进行配合使用,用于共同寻址。

FLAG

标志寄存器

3、段寄存器

  1. CS(Code Segment):代码段寄存器
  2. DS(Data Segment):数据段寄存器
  3. SS(Stack Segment):堆栈段寄存器
  4. ES(Extra Segment):附加段寄存器

CS:代码段寄存器

基本概念解释

CS,代码段寄存器常与IP(指令指针寄存器)共同使用,指示cpu当前将要读取的指令的地址。

那么cpu如何知晓该执行指令的地址呢?

当我们运行一个可执行文件时,我们需要另外一个程序来将这个可执行文件加载到内存当中,

一般是通过操作系统的外壳程序(也就是 Shell 程序),

Shell 将可执行文件加载到内存中以后,就会设置 CPU 中的两个寄存器,即设置 CS:IP 两个寄存器指向可执行文件的起始地址,此后 CPU 便从这个起始地址开始读取内存中的指令,并且执行。

start作用

start用于标记可执行文件的起始地址。

DS:数据段寄存器

DS,全称:Data Segment register,为数据段寄存器,其作用主要用于访问内存中的数据,常与偏移地址共同使用,那么ds的作用是什么呢?通俗点来说就是寻找数据。cpu要读写一个内存单元时,必须要知晓这个内存单元在哪,因此便可以通过ds(数据段寄存器)和偏移地址两个参数,来确定这个内存单元在哪。

访问内存中的数据的方式

方式一:段地址(ds):[偏移地址]
方式二:[偏移地址],等同于ds:[偏移地址]

需要注意 在访问内存中数据的时候,段地址不能直接写数值而必须由段地址寄存器来提供,比如:

mov ax 3423h
mov 1000h:[0h] ,ax//这种写法就是错误的

而正确的写法

mov ax, 3423h
mov bx, 1000h // 现将内存段地址写书数据寄存器中
mov ds,bx // 将数据寄存器中的内存段地址写入 数据段寄存器中
mov ds:[0], ax // 将数据段寄存器中的数据 写入内存地址、(ds:[0]) 中

DS常见的误用

段寄存器是不支持将数据直接写入的,而是需要借用其他寄存器将数据写入:
如:

mov ds,1000h
//这种方式是错误的

//正确写法
mov bx,1000h
mov ds,bx

SS

堆栈寄存器,一般作为栈和sp搭档,其中ss用作堆栈段的首地址,sp用于堆栈段的偏移地址。
当放入数据时,sp应当先进行移位,再放入数据;当释放数据时,应当先释放数据,sp再进行移位。

ES

扩展段寄存器。

总结

每个寄存器都是16位的,即dword双字节,除了数据寄存器外的寄存器均不可分为两个8位的寄存器使用。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-10-09 16:26:44  更:2021-10-09 16:28:26 
 
开发: 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 4:39:09-

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