当前位置: 首页 > article >正文

自制操作系统前置知识汇编学习

今天要做什么?

为了更好的理解书中内容,需要学习下进制分析和汇编。

汇编语言其实应该叫叫机器指令符号化语言,目前的汇编语言是学习操作系统的基础。

一:触发器

电路触发器的锁存命令默认是断开的,是控制电路触发器是否锁存。

触发器有输入端和输出端,输入端就类似电路的开关,输出端就类似用小灯泡来控制显示。

二:

  1. 寄存器(锁存器)

寄存器是一个多输入,多输出的器件

当按下锁存的命令,所有的寄存器都在同一时刻命令。

问题:若某个寄存器是由八个触发器组成,它最大可以保存的数是多少?

1111 1111 =255

三:

带寄存器的加法机

5+7+25

这个预置开关是将左侧的输入锁存到寄存器R,一个个进入

先拨动开关 ,预置进去5,在拨动开关,然后拨动相加,在加法电路中进行相加操作,,然后寄存器R中的数字是12,再按照相同 步骤进入25

四:四则运算电路

根据预置加减乘除操作,寄存器中存放的内容,根据左侧电路生成的二进制数字和右侧寄存器中的存放内容,做出相应的变化(加减乘除)

(12+3)/(12+3) 如果做稍微复杂点的运算,但是寄存器只能保存一个值,就需要另外的去记

指令的概念,引入指令

增加一个寄存器,目前有两个寄存器,寄存器R和寄存器Z,左侧的电路输入,可以选择进入哪个寄存器, 两个寄存器中的值 也可以相互传送,如果这些命令都由开关控制,那开关就太多了,需要换一种思路。

指令:

根据接受的指令去执行相应的操作,可以囊括上面所有的开关。

六:

指令太多,最好有个容器保存起来,方便用,可以用内存

内存简单介绍

1:每个内存单元都有其编号,每个内存单元由八个二进制位组成

2:每个内存单元都有相应的编号,地址线输入相应的编号即可读取到相应的内存,地址线的数量决定了可以读到的最多的内存单元。

如果有八个二进制地址线,从0000 0000 到1111 1111,最多256个内存单元,2的n次方个内存单元。

3:内存单元的编号,就是他的内存地址

4习惯上,字节是用来描述二进制序列的长度单位。8个比特组成一个字节。字节的英语单纯是Byte,简称位B。1001 1101的长度是一个字节。

5:在主流的计算机上,内存单元的长度是8个比特,换句话说,每个内存单元的长度都是一个自己

6:内存的容量可以用内存单元的数量来统计。因为每个内存单元的长度是1个字节,所以经常用字节数来衡量。

根据内存的大小,内存的容量是以字节(B)、千字节(KB)、兆字节(MB)、吉字节(GB)和太字节(TB)来标称

1kb = 1024b

1MB =1024KB

1GB = 1024MB

1TB = 1024GB

7:练习,某内存有16条地址线,则他的容量有多大?每个内存单元的长度是多少?一个字节(8个比特)

0000 - FFFF  65536个字节 64KB

七:

内存数据线(入或者出)

内存要入或者出数据,需要通过数据线,是双向的

内存的操作入和出需要一个控制器,也就是读/写控制

如何写入:

1:先在地址线给一个地址

2:在数据线上给出一个要写入的数据

3:读写控制线发出写命令,就可以把数据写入给定的地址

如何读出:

1:现在先在地址线上给出一个地址,指出要读哪个单元

2:由读写控制线发出读命令,数据就会从指定的数据线上读出,并发送到数据线上

八:自动计算学习

运算器是在刚才四则运算的基础上增加了一i个指令指针寄存器

1:第一条指令是将207传送到寄存器R

2:将寄存器R中的内容和9相加,结果在寄存器R

3:将56传送到寄存器Z

4:将寄存器Z中的内容和48相减,结果在寄存器Z

5:将寄存器Z中的内容和48相减,结果在寄存器Z

6:将寄存器R和寄存器Z的内容相出,结果在寄存器R

7:将寄存器R的内容传送到地址位12的内存单元

8:可以进行停机

九:

处理器组成

总线接口部件、控制部件、指令执行部件

8086 是跨时代的16位处理器,因特尔一直保持兼容

每种处理器。例如64位处理器对应64位的寄存器和64位的算数逻辑部件。

指令集:任何一款处理器,所有包含的指令的集合称为指令集

算术运算指令和逻辑运算指令:逻辑运算

数据传送指令:内部寄存器之间,处理器和内存之间,处理器和外围设备之间

处理器状态控制指令:处理器的工作模式和工作状态

十:

Mov 指令 传送 赋值

add 加法指令 将,r和9中的数据相加在保存到r中

sub 减法指令,把寄存器z中的内容和48相减,在赋值给z。

div 除法指令,将寄存器r中的内容和z相除得到的商,再传给r

mov [12] ,r ,中括号中的地址是内存中的地址,把寄存器r中的内容,传送到寄存器[12]里面去。

Hlt 停机指令

十一:认识intel 8086处理器(低端字节序)内部的通用寄存器

AX/BX/CX/DX/SI/DI/BP/SP  16位寄存器 16个比特组成,从右往左寄存器编号是0-15

十进制 23235

16进制5AC3

换算方式

INTEL 8086通用寄存器划分

AX、BX、CX、DX 可以拆分成两个八进制的寄存器,分别是:

AX:AH AL

BX:BH BL

CX:CH CL

DX:DH DL

寄存器使用编号:

AX是16位的寄存器,一个字节八个比特,两个单词 一个字就是AX。

寄存器AH是寄存器AX的高字节部分,寄存器AL是寄存器AX的低字节部分

改变了寄存器AH的值,就改变了寄存器AX的值

DX(083C)(DH(08)、DL(3C))

十二:

8086的内存访问和字节序

十六进制的寄存器写入八位的内存,需要拆分成两个字节,假设写入0002编号的内存,那么0002编号的内存保存的就是16位寄存器的低字节部分,0003保存的是16位寄存器的高字节部分。(像这种寄存器低字节部分写入内存编号低地址单元,寄存器高字节部分写入内存编号高字节单元的称为低端字节序)。

看的李忠老师网易云的汇编课程,笔记就先整理到这里,后续统一提交git仓库

相关文章:

自制操作系统前置知识汇编学习

今天要做什么? 为了更好的理解书中内容,需要学习下进制分析和汇编。 汇编语言其实应该叫叫机器指令符号化语言,目前的汇编语言是学习操作系统的基础。 一:触发器 电路触发器的锁存命令默认是断开的,是控制电路触发器…...

Unity制作游戏——前期准备:Unity2023和VS2022下载和安装配置——附安装包

1.Unity2023的下载和安装配置 (1)Unity官网下载地址(国际如果进不去,进国内的官网,下面以国内官网流程为例子) unity中国官网:Unity中国官网 - 实时内容开发平台 | 3D、2D、VR & AR可视化 …...

深度学习(5)-卷积神经网络

我们将深入理解卷积神经网络的原理,以及它为什么在计算机视觉任务上如此成功。我们先来看一个简单的卷积神经网络示例,它用干对 MNIST数字进行分类。这个任务在第2章用密集连接网络做过,当时的测试精度约为 97.8%。虽然这个卷积神经网络很简单…...

LeetCodehot 力扣热题100 课程表

题目背景 这个问题要求我们判断是否可以完成所有课程的学习。每门课程可能依赖其他课程作为前置课程,构成了一个有向图。我们需要确定是否存在环,若存在环,说明课程之间互相依赖,无法完成所有课程;如果不存在环&#x…...

彻底卸载kubeadm安装的k8s集群

目录 一、删除资源 二、停止k8s服务 三、重置集群 四、卸载k8s安装包 五、清理残留文件和目录 六、删除k8s相关镜像 七、重启服务器 一、删除资源 # 删除集群中的所有资源,包括 Pod、Deployment、Service,任意节点执行 kubectl delete --all pod…...

【HarmonyOS Next】拒绝权限二次申请授权处理

【HarmonyOS Next】拒绝权限二次申请授权处理 一、问题背景: 在鸿蒙系统中,对于用户权限的申请,会有三种用户选择方式: 1.单次使用允许 2.使用应用期间(长时)允许 3.不允许 当用户选择不允许后&#xff0…...

便携式动平衡仪Qt应用层详细设计方案(基于Qt Widgets)

便携式动平衡仪Qt应用层详细设计方案(基于Qt Widgets) 版本:1.0 日期:2023年10月 一、系统概述 1.1 功能需求 开机流程:长按电源键启动,全屏显示商标动画(快闪3~4次)。主界面&…...

2 20 数据开发面试题汇总

下面是我在实习中协助面试 然后在牛客上挑选了一些完整的面试问题借助豆包完成的面经答案思路汇总 滴滴数据研发日常实习 一面 数据仓库认识维度建模之外还有哪些建模,有什么区别项目中数据仓库分了哪几层,为什么要分层Hadoop架构,你这些组…...

跟着李沐老师学习深度学习(十四)

注意力机制(Attention) 引入 心理学角度 动物需要在复杂环境下有效关注值得注意的点心理学框架:人类根据随意线索和不随意线索选择注意力 注意力机制 之前所涉及到的卷积、全连接、池化层都只考虑不随意线索而注意力机制则显示的考虑随意…...

Websocket——心跳检测

1. 前言:为什么需要心跳机制? 在现代的实时网络应用中,保持客户端和服务端的连接稳定性是非常重要的。尤其是在长时间的网络连接中,存在一些异常情况,导致服务端无法及时感知到客户端的断开,可能造成不必要…...

基于YOLO11深度学习的半导体芯片缺陷检测系统【python源码+Pyqt5界面+数据集+训练代码】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…...

Spring Boot3.x集成Flowable7.x(一)Spring Boot集成与设计、部署、发起、完成简单流程

一、Flowable简介 Flowable 是一个轻量级、开源的业务流程管理(BPM)和工作流引擎,旨在帮助开发者和企业实现业务流程的自动化。它支持 BPMN 2.0 标准,适用于各种规模的企业和项目。Flowable 的核心功能包括流程定义、流程执行、任…...

Dify 工作流分类器技巧

在使用 Dify 工作流中的分类器(如问题分类器,Question Classifier)时,想要实现高效且准确的分类,可以遵循以下技巧和最佳实践。这些建议基于 Dify 的工作流功能,帮助你更好地设计和优化分类过程&#xff1a…...

网络安全-openssl工具

OpenSSl是一个开源项目,包括密码库和SSL/TLS工具集。它已是在安全领域的事实标准,并且拥有比较长的历史,现在几乎所有的服务器软件和很多客户端都在使用openssl,其中基于命令行的工具是进行加密、证书管理以及测试最常用到的软件。…...

【Web开发】PythonAnyWhere免费部署Django项目

PythonAnyWhere免费部署Django项目 文章目录 PythonAnyWhere免费部署Django项目将项目上传到GitHub从GitHub下载Django项目创建Web应用配置静态文件将项目上传到GitHub 打开项目,输入以下命令,生成Django项目依赖包。pip list --format=freeze > requirements.txt打开Git …...

Spring Boot 多模块怎么统一管理

在 Spring Boot 中,多模块项目是一种常见的架构模式,尤其适用于构建大型、复杂的应用程序。将应用程序拆分成多个模块可以提高代码的可维护性、可重用性和团队协作效率。然而,多模块项目也带来了一些管理上的挑战,例如依赖版本管理…...

视频的分片上传

分片上传需求分析: 项目中很多地方需要上传视频,如果视频很大,上传到服务器需要很多时间 ,这个时候体验就会很差。所以需要前端实现分片上传的功能。 要实现分片上传,需要对视频进行分割,分割成不同的大小…...

Moonshot AI 新突破:MoBA 为大语言模型长文本处理提效论文速读

前言 在自然语言处理领域,随着大语言模型(LLMs)不断拓展其阅读、理解和生成文本的能力,如何高效处理长文本成为一项关键挑战。近日,Moonshot AI Research 联合清华大学、浙江大学的研究人员提出了一种创新方法 —— 混…...

Deepseek首页实现 HTML

人工智能与未来:机遇与挑战 引言 在过去的几十年里,人工智能(AI)技术取得了突飞猛进的发展。从语音助手到自动驾驶汽车,AI 正在深刻地改变我们的生活方式、工作方式以及社会结构。然而,随着 AI 技术的普及…...

AI革命下的多元生态:DeepSeek、ChatGPT、XAI、文心一言与通义千问的行业渗透与场景重构

前言 人工智能技术的爆发式发展催生了多样化的AI模型生态,从通用对话到垂直领域应用,从数据挖掘到创意生成,各模型凭借其独特的技术优势与场景适配性,正在重塑全球产业格局。本文将以DeepSeek、ChatGPT、XAI(可解释人…...

VS2022配置FFMPEG库基础教程

1 简介 1.1 起源与发展历程 FFmpeg诞生于2000年,由法国工程师Fabrice Bellard主导开发,其名称源自"Fast Forward MPEG",初期定位为多媒体编解码工具。2004年后由Michael Niedermayer接任维护,逐步发展成为包含音视频采…...

kafka基本知识

什么是 Kafka? Apache Kafka 是一个开源的分布式流处理平台,最初由 LinkedIn 开发,后来成为 Apache 软件基金会的一部分。Kafka 主要用于构建实时数据管道和流处理应用程序。它能够高效地处理大量的数据流,广泛应用于日志收集、数…...

类型系统下的语言分类与类型系统基础

类型系统是一种根据计算值的种类对程序语法进行分类的方式,目的是自动检查是否有可能导致错误的行为。 —Benjamin.C.Pierce,《类型与编程语言》(2002) 每当谈到编程语言时,人们常常会提到“静态类型”和“动态类型”。…...

力扣-回溯-93 复原IP地址

思路 用一个vector存放可能的结果&#xff0c;然后用一个变量判断插入点的数量&#xff0c;假设再最后一段后也插入点 代码 class Solution { public:vector<string> result;vector<string> path;int toNum(string s){int d 1;int result 0;for(int i s.size…...

SpringSecurity设置白名单

Spring Security 访问权限系列文章&#xff1a; 《SpringSecurity基于配置方法控制访问权限&#xff1a;MVC匹配器、Ant匹配器》 《SpringSecurity基于注解实现方法级别授权&#xff1a;PreAuthorize、PostAuthorize、Secured》 《SpringSecurity设置白名单》 白名单&#xff0…...

有没有使用wxpython开发的类似于visio或drawio的开源项目(AI生成)

有没有使用wxpython开发的类似于visio或drawio的开源项目 是的&#xff0c;有一些使用wxPython开发的类似于Microsoft Visio或draw.io&#xff08;现为diagrams.net&#xff09;的开源项目。wxPython 是一个跨平台的GUI工具包&#xff0c;它允许Python开发者创建桌面应用程序&…...

HTML之JavaScript DOM操作元素(2)

HTML之JavaScript DOM操作元素&#xff08;2&#xff09; 4.增删元素var element document.createElement("元素名") 创建新元素父元素.appendChild(子元素) 在父元素中追加子元素父元素.insertBefore(新元素,参照元素) 在特定元素之前新增元…...

前端八股——JS+ES6

前端八股&#xff1a;JSES6 说明&#xff1a;个人总结&#xff0c;用于个人复习回顾&#xff0c;将持续改正创作&#xff0c;已在语雀公开&#xff0c;欢迎评论改正。...

day58 第十一章:图论part08

拓扑排序精讲 关键&#xff1a; 先找到入度为0的节点&#xff0c;把这些节点加入队列/结果&#xff0c;然后依次循环再找。 #include <iostream> #include <vector> #include <queue> #include <unordered_map> using namespace std; int main() {int …...

【MySQL 一 数据库基础】深入解析 MySQL 的索引(3)

索引 索引操作 自动创建 当我们为一张表加主键约束(Primary key)&#xff0c;外键约束(Foreign Key)&#xff0c;唯一约束(Unique)时&#xff0c;MySQL会为对应的的列自动创建一个索引&#xff1b;如果表不指定任何约束时&#xff0c;MySQL会自动为每一列生成一个索引并用ROW_I…...