汇编原理(二)寄存器——CPU工作原理

devtools/2024/9/23 3:05:36/

寄存器:所有寄存器都是16位(0-15),可以存放两个字节

        AX,BX,CX,DX存放一般性数据,称为通用寄存器

        AX的逻辑结构。最大存放的数据为2的16次方减1。可分为AH和AL,兼容8位寄存器。

:1word = 2Byte。二进制和八进制、十六进制的转化(0000)-(0)。

汇编指令

        不区分大小写

        “越位”会“丢弃”:“丢弃”只是指禁止为不能在8位的寄存器中保存,但是cpu不是真的丢弃这个进位值。

物理地址:内存单元有地址,所有的内存单元构成的储存空间是一个一维的线性空间

16位的cpu:运算器一次最多可以处理16位的数据;寄存器的最大宽度位16位;寄存器与运算器之间的通路是16位。(64位同理)

        

        地址加法器:         物理地址(20位) = 段地址(16位) × 16 + 加偏移地址(16位 )

                          1. cpu可以用不同的段地址和物理地址形成同一个物理地址    

                          2.仅通过变化偏移地址来进行寻址,最多可以定位0 - FFFFH,64K个内存单元。    (不太明白各种量度之间的转换)

                          3.格式:短地址XXXX:偏移地址YYYY。意思是在短地址XXXX的基础上,乘16,加上偏移地址,之间用冒号隔开。              

        比喻:

:并不是内存被划分位一个一个段,是自己怎么看

        一个段的起始地址一定是16的倍数,因为“段地址×16”;偏移地址为16位,所以一个段的最大长度为16位

段寄存器:用来存储段地址(CS、DS、SS、ES等)

        CS(存放段地址)和IP(存放偏移地址):最关键的寄存器,指示当前CPU要读取指令的地址:CS是代码段寄存器,IP是指令指针寄存器

        用CS作为寄存器,代码将会被当作指令,其他三种寄存器则不然,有可能当作数据或其他。

        IP怎么知道他每次移动多少?比如说怎么知道从20000到20003?整个工作原理过程还不是很懂

修改CS、IP的指令:传送指令mov不能修改CS、IP的内容,而应该用转移指令jmp。

                     指令:jmp 段地址:偏移地址。含义:用指令中给出的段地址修改CS,偏移地址修改IP

                     指令:jmp 某一合法寄存器。含义:仅修改IP的内容,类似于:jmp IP, ax

         举例:如果不跳转,IP每次加2或者3。但如果遇到例如 jmp bx,IP变为0,跳转回去。

                流程如下:死循环

代码段:将长度为N(<64KB)的一组代码段,存在一组地址连续、起始地址为16的倍数的内存单元中,这段内存是用来存放代码的,从而定义了一个代码段。

        怎么看这个代码段的长度、存储在那一段内存单元、段地址

        要将CS:IP指向,所定义的代码段中的第一条指令的首地址

debug调试程序:(后面还需要学)

        r:查看、改变CPU寄存器的内容。

        d:查看内存中的内容

        e:改写内存中的内容(使用机器指令?

        a:以汇编指令的格式在内存中写入一条机器指令                 u:将机器指令翻译为湖


http://www.ppmy.cn/devtools/45846.html

相关文章

C++ C (1152) : 循环赛日程表

文章目录 一、题目描述二、参考代码 一、题目描述 二、参考代码 #include<iostream> #include<vector> #include<cstdlib> using namespace std;void generateSchedule(vector< vector<int> >& table, int numPlayers, int rounds) {// 生…

K8s集群中的Pod调度约束:污点、容忍与驱逐

前言 在 Kubernetes 集群中&#xff0c;Pod 的调度约束是确保工作负载按照特定规则在集群中正确部署的关键因素。其中&#xff0c;污点&#xff08;Taints&#xff09;、约束&#xff08;Affinity&#xff09;、容忍&#xff08;Toleration&#xff09;和驱逐等概念扮演着重要…

Windows 2000 Server:安全配置终极指南

"远古技术&#xff0c;仅供娱乐" &#x1f4ad; 前言&#xff1a;Windows 2000 服务器在当时的市场中占据了很大的比例&#xff0c;主要原因包括操作简单和易于管理&#xff0c;但也经常因为安全性问题受到谴责&#xff0c;Windows 2000 的安全性真的那么差吗&#x…

【Python】探索 SHAP 特征贡献度:解释机器学习模型的利器

缘分让我们相遇乱世以外 命运却要我们危难中相爱 也许未来遥远在光年之外 我愿守候未知里为你等待 我没想到为了你我能疯狂到 山崩海啸没有你根本不想逃 我的大脑为了你已经疯狂到 脉搏心跳没有你根本不重要 &#x1f3b5; 邓紫棋《光年之外》 什么是 SHA…

Mixly UDP局域网收发数据

一、开发环境 软件&#xff1a;Mixly 2.0在线版 硬件&#xff1a;ESP32-C3&#xff08;立创实战派&#xff09; 固件&#xff1a;ESP32C3 Generic(UART) 测试工具&#xff1a;NetAssist V5.0.1 二、实现功能 ESP32作为wifi sta连接到路由器&#xff0c;连接成功之后将路由器…

【Web API DOM03】事件监听

一&#xff1a;什么是事件监听 指程序检测有无某一事件发生&#xff0c;如果发生&#xff0c;就调用一个函数做出反应&#xff1b;也称为绑定事件或注册事件 比如鼠标经过显示下拉菜单、点击侧边栏播放轮播图 二&#xff1a;怎么用事件监听 1 语法规范&#xff1a; 元素对…

react跨组件通信Context

案例&#xff1a;现在有个父-子-孙组件 需要进行组件通信 import { useState } from "react"; // 创建上下文 const CountContext React.createContext();//子组件 const SonComponent (props) > {return (<div><h2>子组件</h2><Grandson…

yarn 设置淘宝镜像配置

为了提升在中国大陆地区的下载速度&#xff0c;你可以将Yarn的包仓库配置为淘宝镜像。最新的推荐做法是使用npmmirror.com作为镜像源&#xff0c;替代旧的npm.taobao.org。以下是设置Yarn使用淘宝镜像&#xff08;npmmirror.com&#xff09;的步骤&#xff1a; 查询当前镜像配置…