第2章 寄存器

news2024/11/23 1:43:53

第2章 寄存器

一个 CPU 由运算器,控制器,寄存器等器件构成,这些器件靠内部总线进行相连。简单的说 CPU 中:

  • 运算器进行信息处理
  • 寄存器进行信息存储
  • 控制器控制各种器件进行工作
  • 内部总线连接各个器件,在他们之间进行各种数据的传送

寄存器是 CPU 中程序员可以用指令读写的部件,程序员可以通过改变各种寄存器的内容实现对 CPU 的控制

8086CPU 由14个寄存器:AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS,DS,ES,PSW

  • 外部总线:相对于 CPU 内部而言是外部总线,实现 CPU 和主板上其他器件的联系。
  • 内部总线:实现 CPU 内部各个器件之间的联系。

2.1 同用寄存器

8086CPU 的所有寄存器都是16位,可以存放两个字节。AX,BX,CX,DX 这4个通用寄存器,每一个寄存器可以分为两个可独立使用的8位寄存器来使用。

以 AX 为例:寄存器的逻辑结构如图 2.1 所示:

图2.1

  • AX 可以分为 AH 和 AL
  • BX 可以分为 BH 和 BL
  • CX 可以分为 CH 和 CL
  • DX 可以分为 DH 和 DL

以 AX 为例:8086CPU 的16位寄存器分为两个8位寄存器的情况如图 2.3 所示:

图 2.3

AX 的低8位(0位~7位)构成了 AL 寄存器,高8位(8位~15位)构成了 AH 寄存器。

图2.4 展示16位寄存器及其所分成的两个8位寄存器的数据存储情况:

图2.4

2.2 物理地址

CPU 访问内存单元,要给出内存单元的地址。每一个内存单元在这个空间中都有一个唯一的地址,我们将这个唯一的地址称之为物理地址

2.3 8086 CPU 给出物理地址的方法

image

  1. CPU 中的相关部件提供两个16位地址,一个称之为段地址,一个称之为偏移地址
  2. 段地址和偏移地址通过内部总线送入一个称之为地址加法器的部件
  3. 地址加法器将两个16位地址合成一个20位的物理地址
  4. 地址加法器通过内部总线将20位物理地址送入到输入和输出控制电路
  5. 输入和输出控制电路将20 位物理地址送上地址总线
  6. 20位物理地址被地址总线传送到存储器

地址加法器采用:物理地址 = 段地址*16+偏移地址 合成物理地址

例如:8086CPU 要访问地址为 123C8H 的内存单元,地址加法器的工作过程如图2.7所示:

图2.7

image

2.4 段的概念

在编程时可以根据需要,将若干地址连续的内存单元看作一个段。偏移地址位16位,16位地址的最大寻址能力位 64KB,所以要给段的长度最大位 64KB

2.5 段寄存器

段寄存器:CS、DS、SS、ES

CS:代码段寄存器

IP:指令指针寄存器

2.6 CS 和 IP

  • CS:代码段寄存器;
  • IP:指令指针寄存器。

假设 CS 中的内容为 M,IP 中内容为 N,8086CPU 将从内存 M✖16+N 单元开始,读取一条指令并执行

在 8086PC 机中,任意时刻,CPU 将 CS: IP 指向内存单元中的内容看作指令

2.7 总结

  • CS 存放指令的段地址,IP 存放指令的偏移地址,任意时刻,CPU 将 CS: IP 指向内容当作指令的执行
  • CPU 工作的流程:
  • 从 CS: IP 指向内存单元读取指令,读取的指令进入指令的缓冲器
  • IP = IP + 所读取指令的长度,从而指向下一条指令
  • 执行指令。

image

2.8 Debug

  • R 命令查看、改变 CPU 寄存器的内容

  • D 命令查看内存中的内容

  • E 命令改写内存中的内容

  • U 命令将内存中的机器指令翻译成汇编指令

  • T 命令执行一条机器指令
    g

  • R 命令查看、改变 CPU 寄存器的内容

  • D 命令查看内存中的内容

  • E 命令改写内存中的内容

  • U 命令将内存中的机器指令翻译成汇编指令

  • T 命令执行一条机器指令

  • A 命令已汇编指令的格式在内存中写入一条机器指令

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

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

相关文章

工业交换机端口统计功能

工业交换机端口统计功能不仅是一项技术手段,更是一双透视企业网络健康状态的慧眼。通过这一功能,企业能够实时捕捉到网络中每一个端口的流量情况,这不仅仅是数据的积累,更是对网络脉搏的精准把握。当网络的每一个脉动都被记录在案…

git基本使用(一):git的基本概念

Git 是一种分布式版本控制系统,最初由 Linus Torvalds 于 2005 年为 Linux 内核开发。它主要用于跟踪文件的更改,特别是在软件开发过程中,可以帮助团队成员协同工作。它在实际项目开发中,应用非常广泛,我们这一节来掌握…

第2章.现场设备的物联网模式--设备管理

2.3 设备管理 设备的作用及其管理方式是物联网和非物联网部署之间的关键区别。设备生命周期管理的阶段包括设备供应(注册、激活和调试)到取消供应。本书中用于设备管理的注释如下图所示: 图2.6——设备管理模式的符号 设备管理包括现场设备的…

Power Platform功能管理实战课程重点学什么?怎么学?

Power Platform 由 Power BI、Power Apps、Power Automate、Power Virtual Agents 四大模块组成。 这几个模块单独应用都具有强大的功能,而微软把它们放在一起,相互协作、相得益彰,形成了强大的生态系统。而这也是Power Platform的核心理念—…

Java案例实现双色球

一问题&#xff1a; 二具体代码&#xff1a; package 重修;import java.util.Random; import java.util.Scanner;public class first {public static void main(String[] args) {int []usersnumbersusernumslect();System.out.println("用户");for (int i 0; i <…

springboot个人证书管理系统-计算机毕业设计源码16679

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了个人证书管理系统的开发全过程。通过分析个人证书管理系统管理的不足&#xff0c;创建了一个计算机管理个人证书管理系统的方案。文章介绍了个人证书管理系统的系…

计算机系统基础(二)

1.数值数据的表示 为什么采用二进制&#xff1f; 二进制只有两种基本状态&#xff0c;两个物理器件就可以表示0和1二进制的编码、技术、运算规则都很简单0和1与逻辑命题的真假对应&#xff0c;方便通过逻辑门电路实现算术运算 数值数据表示的三要素 进位记数制&#xff08;十…

开发数字药店APP实战:互联网医院系统源码详解

本篇文章&#xff0c;笔者将深入探讨如何开发一个功能完善的数字药店APP&#xff0c;并详细解析互联网医院系统的源码实现。 一、数字药店APP的需求分析 应具备以下基本功能&#xff1a; 用户注册与登录 药品搜索与浏览 在线下单与支付 订单管理 健康咨询与远程医疗 个人…

发电机保护屏组成都有哪些,如何选择

发电机保护屏组成都有哪些&#xff0c;如何选择 发电机是电力系统中最常用的一种电力设备。例如水力发电机&#xff0c;柴油发电机&#xff0c;风力发电机&#xff0c;火力发电等等。发电机保护是保证发电机安全、稳定运行的重要手段之一。对于一些小型机组的发电机&#xff0c…

Mysql部署MHA高可用

部署前准备&#xff1a; mysql-8.0.27下载地址&#xff1a;https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.27-1.el7.x86_64.rpm-bundle.tar mha-manager下载地址&#xff1a;https://github.com/yoshinorim/mha4mysql-manager/releases/download/v0.58/mha4mysql-mana…

因为自己淋过雨所以想给嵌入式撑把伞

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;新手学嵌入式&#xff0c;…

PHP验证日本固定电话号码

日本电话号码格式众多&#xff0c;验证起来比较头大&#xff0c;现在咱们来一个简单的总结哈 为了简单起见&#xff0c;使用PCRE 函数preg_match通过匹配正则表达式来实现验证。 function checkGdTelLandline(string $str): int|false {return preg_match("/\A0(\d{1}[-…

积鼎CFD:基于Virtualflow在溃坝洪水演进数值仿真分析

近期&#xff0c;多地遭受了前所未有的洪水侵袭&#xff0c;每一次灾害都如同警钟长鸣&#xff0c;提醒我们水库大坝安全的重要性&#xff0c;超标准暴雨的突袭让大坝的安全防线面临前所未有的考验。面对这一挑战&#xff0c;CFD技术可为溃坝洪水的预测与管理开辟新的路径。凭借…

python+django 环境搭建以及post接口封装

1、搭建pythondjango环境 python 3.7.9的版本 具体参考之前的安装教程 django 使用 pip install django 会自动安装 检验安装版本&#xff1a; python -m django --version 2、创建django项目 django-admin startproject projectname 启动项目&#xff1a;python manage.py…

基于X86+FPGA+AI的切割机控制、六轴机器人控制方案

一、智能设备控制 应用场景 智能制造(Intelligent Manufacturing, IM)是一种由智能机器和人类专家共同组成的人机一体化智能系统&#xff0c;它在制造过程中能进行智能活动&#xff0c;诸如分析、推理、判断、构思和决策等。通过人与智能机器的合作共事&#xff0c;去扩大、延…

力扣 用队列实现栈(Java)

核心思想&#xff1a;因为队列都是一端进入另一端出&#xff08;先进先出&#xff0c;后进后出&#xff09;&#xff0c;因此一个队列肯定是不能实现栈的功能的&#xff0c;这里就创建两个队列来模拟栈的先进后出&#xff0c;后进先出。 比如说如果是push操作我们肯定是要弹出栈…

用四个场景案例,分析使用大模型对程序员工作的帮助提升_大模型应用场景

引言 随着人工智能技术的不断发展&#xff0c;大模型在软件开发中的应用越来越广泛。 这些大模型&#xff0c;如GPT、文心一言、讯飞星火、盘古大模型等&#xff0c;可以帮助程序员提高工作效率&#xff0c;加快开发速度&#xff0c;并提供更好的用户体验。 本文将介绍我在实…

MeowBot:ESP32 语音控制宠物猫 DIY 教程——玩转语音识别与 MQTT 智能家居控制 (附代码解析)

摘要: 本文将手把手教你打造一只名为 MeowBot 的智能宠物猫&#xff01;它不仅可以通过舵机灵动地打招呼&#xff0c;还能听懂你的语音指令&#xff0c;帮你控制智能家居设备。让我们一起开启这段充满乐趣的 DIY 之旅吧&#xff01; 关键词: ESP32、语音识别、MQTT、智能家居、…

独立开发者系列(15)——git的使用

上一篇14文章触发了敏感话题&#xff0c;直接未过审核&#xff0c;看来技术博客也有敏感点。 大部分情况下&#xff0c;独立项目是你一个人开发&#xff0c;但是当你接的项目比较大的时候&#xff0c;你需要其他人的帮忙&#xff0c;这个时候你要把代码分享给别人。因为如果你…

跨境业务经验推荐:三大优秀的IP代理服务商

作为一名多年从事跨境业务的老手&#xff0c;今天我要给大家介绍几款绝对靠谱的IP代理服务商&#xff0c;保证让你的全球业务更加顺畅&#xff01; 1. 711Proxy 711Proxy以其优秀的性能和覆盖范围广而著称。对于跨境电商和国际业务来说&#xff0c;快速稳定的网络连接至关重要…