2-1、地址加法器CS:IP

news2024/11/27 6:32:53

语雀原文链接

文章目录

    • 1、CPU组成
    • 2、通用寄存器
      • 16位寄存器的存储
      • 16位寄存器兼容8位
      • word 和 byte
      • 进位问题
    • 3、地址加法器
      • 不同的段地址和偏移地址表示同一个物理地址
      • 偏移地址的范围
      • 一个段的起始地址一定是16的倍数
    • 4、CS:IP
      • CS IP工作过程
      • jmp修改CS:IP
    • 5、DS和[address]
      • DS和[address]
      • mov add sub

1、CPU组成

  • 一个CPU由运算器、控制器、寄存器等器件构成,这些器件靠内部总线相连。
    • 运算器进行信息处理
    • 寄存器进行信息储存
    • 控制器控制各种器件进行工作
    • 内部总线连接各种器件,在它们之间进行数据的传递
  • 内部总线实现CPU内部各个器件之间的联系,外部总线实现CPU和主板上其他器件的联系。
  • 不同CPU,寄存器的个数、结构是不相同的。
  • 8086CPU有14个寄存器,AX BX CX DX SI DI SP BP IP CS SS DS ES PSW,这些寄存器都是16位二进制。
    • 其中4个段寄存器:CS、DS、SS、ES

2、通用寄存器

  • AX BX CX DX这四个寄存器通常用来存放一般性的数据,被称为通用寄存器
  • 不同CPU的通用寄存器的大小不一样,有8位,16位等等。8086CPU的所有寄存器都是16位,可以存放两个字节

16位寄存器的存储

image.png
image.png

16位寄存器兼容8位

  • 8086CPU的上一代CPU中的寄存器都是8位的,为了了保证兼容,使原来基于上代CPU编写的程序稍加修改就可以运行在8086之上,8086CPU的AX、BX、CX、DX这4个寄存器都可分为两个可独立使用的8位寄存器来用
    • AX可分为 AH AL
    • BX可分为 BH BL
    • CX可分为 CH CL
    • DX可分为 DH DL

image.png

  • AX的低8位(0位7位)构成了AL寄存器,高8位(8位15位构成了AH寄存器。AH和AL寄存器是可以独立使用的8位寄存器。下图展示了16位寄存器及它所分成的两个8位寄存器的数据存储的情况。

image.png

word 和 byte

  • 字节:byte,一个字节由8个bit组成,可以存放在8位寄存器中
  • 字:word,一个字由两个字节组成,分别称为这个字的高位字节和低位字节
  • CPU中,用16位寄存器来存储一个字(一个字占据两个内存单元,2字节)。高8位存放高位字节,低8位存放低位字节。

image.png

  • 上图中,我们从0地址开始存放4E20H,低8位存放20,高8位存放4E。地址0、1可以看成一个字单元。
  • 有两个概念可以普及下:
    • 0地址单元中存放的字节型数据是20H
    • 0地址字单元中存放的字型数据是4E20H
  • 上述概念总结如下:任何两个地址连续的内存单单元,N号单元和N+1号单元,可以将它们看成两个内存单元,也可看成一个地址为N的字单元中的高位字节单元和低位字节单元。

进位问题

  • 例子1:高位进位
MOV AX,8226H
MOV BX,8226H
ADD AX,BX
AX BX都是16位寄存器,此时AX的值是多少?

答案:8226H + 8226H = 1044CH,但是寄存器只能放16位,AX的值是044CH
  • 例子2:低位进位
MOV AX,00C5H
ADD AL,93H
此时AX的值是多少?

答案:AL原始是C5H,加上93H,等于158H,但是AL只是低8位寄存器(作为一个独立的8位寄存器),最高位1会丢失,丢失1也不会给AH,类似最终结果AX=0158(CPU并没有真的丢弃这个值),所以最终的AX=0058
  • 例子3:
MOV AX,00C5H
ADD AX,93H
此时AX的值是多少
AX=00C5H + 0093H = 0158H,AX是16位寄存器,能正常进位
  • 例子4:指令的操作对象位数不一致,以下都是错误的指令
mov ax,bl  在8位寄存器和16位寄存器之间传送数据
mov bh,ax 在16位寄存器和8位寄存器之间传送数据
mov al, 20000 8位寄存器最大可存放值为255的数据
add al,100H 将一个高于8位的数据加到一个8位寄存器中

3、地址加法器

  • 8086CPU有20位地址总线,似乎多余了,内部只能送出16位地址,寻址能力只有64KB,但是实际有1M的寻址能力。
  • 8086CPU在内部用两个16位地址合成形成一个20位物理地址
    • 两个16位寄存器,一个段地址、另一个偏移地址
    • 段地址和偏移地址通过内部总线送入一个地址加法器的部件,合成一个20位的物理地址

image.png

  • 地址加法器采用物理地址=段地址x16+偏移地址
  • 8086CPU要访问地址123C8H(20位长度)的内存单元

image.png

  • 对于一个16位的CPU,偏移地址范围0000H~FFFFH,如果段地址1000H,则该内存空间的地址范围

1000H * 16 + 0000H ~ 1000H * 16 + FFFFH
10000H ~ 1FFFFH
总共2^16=65536=64KB个内存单元

不同的段地址和偏移地址表示同一个物理地址

  • 下面的几个段地址:偏移地址,最终表示的物理地址都是21F60H

image.png

偏移地址的范围

  • 偏移地址16位,变化范围0FFFFH,最多是216=64KB个内存单元。如果给定一个段地址1000H,则这段寻址范围:10000H1FFFFH
  • 一个段的长度最大为64KB

一个段的起始地址一定是16的倍数

  • 物理地址=段地址x16+偏移地址
  • 16位偏移地址的范围:0~FFFFH
  • 所以一个段的起始地址一定是16的倍数

4、CS:IP

CS IP工作过程

  • CS和IP是8086CPU中最为关键的寄存器,它指出了当前要读取指令的地址。
  • CS寄存器存储段地址,IP寄存器存储偏移地址,CS:IP组成真真的程序入口的物理地址。
  • 每读取一次指令,IP=IP+所读取指令的长度,从而指向下一条指令
  • 8086CPU工作过程,初始化状态:CS=2000 IP=0000

image.png

  • 地址加法器

image.png

  • 输入输出控制电路

image.png

  • 20位地址总线

image.png

  • 读取内存中的数据

image.png

  • 指令缓冲器

image.png

  • IP增加

image.png

  • 执行控制器

image.png

  • AX=0123H

image.png

  • 读取2000:0003处的指令

image.png

  • 执行mov bx,0003H,最终BX=0003H

image.png

  • 读取2000:0006处的指令

image.png

  • 执行mov ax,bx,最终AX=0003 BX=0003

image.png

  • 读取2000:0008处的指令,add ax,bx ,01D8

image.png

  • 执行指令add ax,bx = 01D8,最终结果AX=0003,BX=0003

image.png

  • 8086CPU工作过程简要概述

(1)从CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲器:
(2)IP=IP+所读取指令的长度,从而指向下一条指令;
(3)执行指令。转到步骤(1),重复这个过程。

jmp修改CS:IP

  • MOV CS,AAAAH 这种写法是错误的,8086CPU不支持将数据直接送入段寄存器,CPU提供了jmp指令用于修改段寄存器的值
  • 例子1:mov不能修改段寄存器的值

image.png

  • 例子2:jmp修改IP寄存器,直接写入数据
    • 073F:0100 写入指令 jmp 1234
    • 执行后IP=1234

image.png

  • 例子3:jmp修改IP寄存器,用其他寄存器的值
    • 073F:0100 写入指令 mov ax,1111
    • 执行后AX=1111
    • 073F:0103 写入指令 jmp ax
    • 执行后,最终IP的值等于AX的值,IP=1111

image.png

  • 例子4:jmp同时修改CS:IP寄存器的值
    • 073F:0100 写入指令 jmp 0700:2222
    • 执行后 CS=0700 IP=2222

image.png

5、DS和[address]

DS和[address]

  • [address]表示内存单元的偏移地址,8086CPU自动取DS寄存器中的数据为段地址
  • 例子1
    • 073F:0100 写入指令 mov ax,[011E]
    • 执行后mov ax,[011E],就是将DS作为段地址 011E作为偏移地址,073F:011E的值放到AX寄存器中
    • 此时073F:011E(低8位)存储2E,073F:011F(高8位)存储07
    • 最终结果AX=072E

image.png

  • 例子2

image.png

  • 例子3

image.png

mov add sub

  • mov指令访问内存单元时,mov指令只给出单元的偏移地址,段地址默认在DS寄存器中
  • mov指令可以有以下几种形式
mov 寄存器,数据  		比如:mov ax,8
mov 寄存器,寄存器  	比如:mov ax,bx
mov 寄存器,内存单元	比如:mov ax,[0]

mov 内存单元,寄存器	比如:mov [0],ax
mov 寄存器,内存单元	比如:mov ds,[0]

mov 段寄存器,寄存器  比如:mov ds,ax
mov 寄存器,段寄存器  比如:mov ax,ds

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1287023.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

四.多表查询

多表查询 1.一个案例引发的多表连接1.1案例说明1.2 笛卡尔积(或交叉连接)的理解1.3案例分析与问题解决 2.多表查询分类讲解分类1:等值连接vs非等值连接分类2:自连接vs非自连接分类3:内连接vs外连接 3.SQL99语法实现多表…

记录华为云服务器(Linux 可视化 宝塔面板)-- Nginx配置出现500错误记录

文章目录 1、路由配置,访问显示500如有启发,可点赞收藏哟~ 1、路由配置,访问显示500 错误如图显示500 解决思路如下 1、先查看错误日志 错误日志存放位置 提示 /login配置的文件有问题 开始配置如下图 修改前 修改后(即在/l…

题目:小明的彩灯(蓝桥OJ 1276)

题目描述&#xff1a; 解题思路&#xff1a; 一段连续区间加减&#xff0c;采用差分。最终每个元素结果与0比较大小&#xff0c;比0小即负数输出0。 题解&#xff1a; #include<bits/stdc.h> using namespace std;using ll long long; const int N 1e5 10; ll a[N],…

深度学习之网络优化与正则化

视频链接&#xff1a;7.1 神经网络优化的特点_哔哩哔哩_bilibili 神经网络优化的特点 网络优化的难点 &#xff08;1&#xff09;网络结构差异大&#xff1a;不同模型之间的结构差异大——没有通用的优化算法、超参数多 &#xff08;2&#xff09;非凸优化问题&#xff1a;…

gitee上合并分支

点击pull requests 这个合并代码的位置找了半天没有找到&#xff0c;最后还是搜到才知道

华为云软件冗余依赖智能消除技术Slimming取得重大突破,相应文章已被软工顶会ICSE 2024录用

由于构建工具对软件库的自动化配置管理&#xff0c;使得现代软件项目在版本演化的过程中&#xff0c;引入大量的第三方软件库&#xff0c;依赖树结构日益臃肿。然而&#xff0c;实际上很多引入的软件库并未被真正使用。臃肿的依赖在资源受限的设备上将严重影响代码的性能、增加…

C++智能指针及简单实现

C智能指针 堆内存、栈内存与静态内存静态内存栈内存堆内存 动态内存管理new、delete运算符智能指针实现智能指针 shared_ptr智能指针的线程安全问题解决 unique_ptrweak_ptr循环引用 思维导图本模块思路 动态内存管理 - cppreference.com 堆内存、栈内存与静态内存 静态内存 …

会声会影2024购买多少钱 会声会影在哪里购买

掌握视频编辑技术&#xff0c;能为我们的工作和生活带来很多帮助。例如&#xff1a;将我们精心编辑的视频&#xff0c;上传到抖音、快手等平台进行变现&#xff1b;通过天马行空的视频创意&#xff0c;摇身一变成为B站up主。因此&#xff0c;拥有一款像会声会影这样的视频编辑软…

ATFX汇市:澳洲联储12月决议维持基准利率不变,AUDUSD短线大跌

ATFX汇市&#xff1a;12月5日&#xff0c;澳洲联储利率决议结果显示&#xff0c;将现金利率目标维持在4.35%不变 金融衍生品结算余额的支付利率维持在4.25%不变&#xff0c;符合市场预期。政策声明中提到&#xff1a;更加确定通货膨胀将会在合理的时间内返回目标&#xff1b;劳…

8.HTTP工作原理

HTTP是什么 HTTP工作原理 HTTP协议的请求类型和响应状态码 总结 1.HTTP是什么 HTTP超文本传输协议就是在一个网络中上传下载文件的一套规则 2.HTTP工作原理 HTTP超文本传输协议的本质是TCP通信&#xff0c;链接—>请求—>响应—>断开 3.HTTP协议的请求类型和响应状…

深入理解强化学习——马尔可夫决策过程:占用度量-[基础知识]

分类目录&#xff1a;《深入理解强化学习》总目录 文章《深入理解强化学习——马尔可夫决策过程&#xff1a;贝尔曼期望方程-[基础知识]》中提到&#xff0c;不同策略的价值函数是不一样的。这是因为对于同一个马尔可夫决策过程&#xff0c;不同策略会访问到的状态的概率分布是…

ssm的网上奶茶店系统(有报告)。Javaee项目。

演示视频&#xff1a; ssm的网上奶茶店系统&#xff08;有报告&#xff09;。Javaee项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring SpringMvc Mybat…

相关基础知识

本文引注&#xff1a; https://zhuanlan.zhihu.com/p/447221519 1.方差 2.自协方差矩阵 3.自相关矩阵 4.互协方差矩阵 5.互相关矩阵 6.相关系数 7.自相关函数、自协方差函数与功率谱密度 8.互相关函数、互协方差函数与互功率谱密度

指针基础知识超详细讲解(C语言)(上)

还在为不懂指针而感到烦恼么&#xff1f;那还在等什么呢快来看看吧&#xff01;冲冲冲&#xff01; 文章目录 1&#xff0c;认识指针2&#xff0c;指针变量指针变量的定义指针变量的大小const修饰指针变量 3&#xff0c;指针的运算4, 野指针概念成因规避 5&#xff0c; assert…

Sketch利器大公开:十款使用率超高的懒人插件汇总

在设计领域&#xff0c;Sketch以其高效小巧的优势赢得了众多设计团队的青睐&#xff0c;帮助全球设计师创作了许多令人难以置信的作品。在使用Sketch的过程中&#xff0c;辅助使用一些Sketch插件可以让我们更有效地完成设计任务。在本文中&#xff0c;我们将揭示大厂设计师的收…

Mysql主从复制原理和三种复制:异步、同步、半同步(主的binlog、从的relaylog)

借鉴&#xff1a;https://zhuanlan.zhihu.com/p/651625709 https://www.jb51.net/article/258847.htm 一&#xff1a;Mysql主从复制原理 MySQL的复制原理分三步 1.在主库上把数据更改&#xff0c;记录到二进制日志&#xff08;Binary Log&#xff09;中。 2.从库将主库上的日志…

分享86个选项卡TABJS特效,总有一款适合您

分享86个选项卡TABJS特效&#xff0c;总有一款适合您 86个选项卡TABJS特效下载链接&#xff1a;https://pan.baidu.com/s/1NBtPP2tT5YQqi6c744tCqg?pwd6666 提取码&#xff1a;6666 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0…

软件测试面试题解析--什么题是必问的?

设计测试用例的主要方法有哪些&#xff1f;简述一下缺陷的生命周期&#xff1f;测试流程&#xff1f;项目流程&#xff1f;验收测试中和β测试区别&#xff1f;如何维护测试用例&#xff1f;每天测多少用例怎么分配的测试的一天能找多少bug你在上一家公司&#xff0c;写没写过测…

【Maven】更新依赖索引

有时候给idea配置完maven仓库信息后&#xff0c;在idea中依然搜索不到仓库中的jar包。这是因为仓库中的jar包索引尚未更新到idea中。这个时候我们就需要更新idea中maven的索引了&#xff0c;具体做法如下&#xff1a; 打开设置----搜索maven----Repositories----选中本地仓库-…

装修流程篇

装修流程 https://www.xiaohongshu.com/explore/627ba70d00000000210357b3 https://www.xiaohongshu.com/explore/63b6bc0c000000002203776f 半包装修流程 https://www.xiaohongshu.com/explore/64e5ea3b0000000003021711 户型图 效果 https://www.xiaohongshu.com/ex…