汇编基础知识
机器语言
1、机器语言是机器指令的集合,机器指令就是机器可以正确执行的命令,由二进制数组成
2、当今我们常用的是pc机,由一个芯片完成上述功能,即CPU是一种微处理器,每一种微处理器由于自身硬件设计和内部构造不同都拥有自己的机器指令集,即机器语言。
3、由于机器语言是二进制组成的,可读性极差,篇幅也较长,于是产生了汇编语言
汇编语言的产生
1、汇编语言的主题是汇编指令,相较于机器指令,可读性有了极大的提升
例如:机器指令1000100111011000,汇编指令mov ax,bx两者皆表示将寄存器bx的内容送到ax
2、寄存器是CPU中粗存数据的器件,CPU中由多个寄存器,例如ax、bx为其代号。
3、由于汇编指令计算机不能直接读懂,所以要加上一个翻译,也就是编译器
汇编语言变成机器指令的过程:汇编指令——>编译器——>机器指令——>计算机
汇编语言的组成
汇编语言总共由三类指令:
1、汇编指令:机器码转成的可读性强的助记符
2、伪指令:无对应的机器码,由编译器执行,计算机不执行
3、其他符号:如+、-、*、/等等,由编译器识别,无对应机器码
储存器
1、储存器中存放指令和数据,也就是内存,通过向CPU提供指令和数据使CPU运行,没有储存器CPU就无法运行,简单说就是cpu负责计算,像解题的工具,储存器负责储存有用信息,没有信息也就是题目就没办法进行计算。
2、磁盘区别于内存,磁盘内的内容不能直接提供给CPU进行处理,要先读取到内存,再由内存提供给磁盘CPU
指令和数据
内存和磁盘上的指令和数据本质上没有区别,都是一串二进制数,只有应用上的区别
例如1000100111011000作为数据应用处理的话是89D8H,作为指令处理是mov ax,bx;这就展示了指令和数据本质上的相同,只有作为数据应用还是作为指令应用的不同
储存单元
储存器被划分成若干个储存单元,每个储存单元从0~127编号,128个
每个二进制位是1个bit,8个bit组成一个byte(字节),微型机储存单元可以储存一个byte,128个单元共储存128给byte
CPU对储存器的读写
一台微机中有很多器件,因此CPU在读取时要有以下三个动作:
1、储存单元的地址
2、选择目标器件,进行读或写的操作
3、想要读或写的数据
电子计算机能处理、传输的信息都是电信号,因此我们用导线将微机中CPU与其他一个个部件连接起来,这些专门的线称为总线。
下图是从3号单元读取数据8的过程
三条线对应上面说的过程:地址线通知储存单元的地址,数据线用于储存器回馈CPU信息的道路,控制线来说明具体对3单元执行的操作
地址总线
CPU通过地址总线来指定储存器单元的地址
例如上图,总共有10个地址总线,一条地址总线只能发送高电平或低电平,也就是1和0;那么有10条地址总线也就意味着可以传输10位二进制数,即2的10次方,同理假设有n条地址总线,就有2的n次方种二进制排列,也就是可以访问2的n次方种数据单元。
数据总线
1、CPU与其他器件的数据传输是用数据总线来完成的,数据总线的宽度决定了传输速度,8条数据总线可以传输一个8位的二进制数据,即1byte。
2、主流的两种CPU:8088CPU的数据总线宽度是8,8086CPU的数据总线宽度是16
首先是8088CPU,下图是传输数据89D8H的过程
这边具体解释要先89D8H的含义,H是十六进制标识符,89D8是十六进制数,计算机储存数据遵循低字节存低地址,高字节存高地址的规则,CPU通过数据总线发送数据时,计算机规定,一串数据右侧是低字节,左侧是高字节,所以先发送低字节D8再发送高字节89,由于8088CPU的数据总线宽度是8,一次仅能传输1byte的数据,所以将89D8分两次传输,接着说一下低字节存低地址,高字节存高地址的规则,这个规则其实和本次传输没什么关系,因为89D8是一组已经规定的数据,它存入这个数据单元时就是按照它原本的顺序存入了即89D8从右往左就是由低到高,而低字节存低地址,高字节存高地址的规则指的是当两个数据要存入数据单元时,例如是两个十六进制数89D8和7A2B,这两个十六进制数转换成十进制时分别是35288和31275,显然是前者大,所以假设前面的单元都存满了,从2000开始89D就要存在2000和2001,7A2B则存在2002和2003。
而如果是8086CPU就一次性传输89D8H
控制总线
1、CPU通过控制总线来控制外部器件,有多少控制总线就意味着CPU对外部器件有多少种控制。
2、控制总线其实是一种总称,控制总线是由若干不同的控制线组成的集合。
内存地址空间
假设CPU地址总线宽度是10,那么就有2的10次方种不同的二进制排列方式,对应1024个可找寻的内存单元,这1024个内存单元就组成了CPU的内存地址空间
那么我是不是可以这样理解,首先CPU的总内存单元肯定不止1024个,但是如果是上面说的CPU内存地址空间就只有1024,那是不是一次只能运用1024个内存单元,如果已经使用了1024给内存地址单元,要使用其他时是不是要删除掉部分已经存进内存地址空间的内存单元,才能继续调用其他的内存单元。
主板
简单来说就是将各类核心器件和主要器件组合起来的东西,这些器件用上述的总线连接。
接口卡
计算机工作中,CPU承担所有可用程序控制我i工作的设备,但是对于一些外部设备,CPU不能直接控制所有就需要接口卡来承担桥梁连接CPU与这些设备。接口卡通过总线与CPU相连,CPU可以直接控制接口卡从而控制通过接口卡连接的外部设备。
各类储存器的芯片
pc机中有许多储存器芯片,从物理角度看是独立的,可以从读写属性分为RAM(随机存储器)和ROM(只读储存器);RAM可读写,但必须带电储存,就是必须在计算机运行时候储存,不然会造成丢失,ROM只能读取不能写入,关机后内容不丢失。
那么是不是可以这样理解,在一台计算机成型之后,RAM相当于是我们可以编辑的部分,ROM是在组装计算机之前预先设定好的,当我们在使用计算机时,需要ROM中的一些功能或者数据就在ROM中读取使用而已。
内存地址空间
上述的储存器虽说在物理意义上是独立的器件,但是有两个共同点:
1、和CPU的总线相连
2、CPU对他们进行读写命令的时候都通过控制总线发出内存读写命令
这样的话,CPU在对他们发出命令的时候都将他们当作内存对待,也就是由若干个储存单元组成的有逻辑的储存器,这个逻辑储存器就是内存地址空间。上面我们也有提到例如一个计算机地址总线宽度是10那么也就有1024给可寻的内存地址单元,而CPU在使用这些逻辑储存器时将他们当做内存看待,也就是读写二进制数,那么命令这些逻辑储存器时,地址总线就要对应的从相应的逻辑储存器传输若干个二进制数,这些传输的二进制数就会变成内存地址空间,但是内存地址空间是有限的,所有CPU命令这些逻辑储存器的个数也是有限的,能实现的功能也就是有限的。
从图中也可以看到各类的储存器由若干个储存单元组成的逻辑储存器,其实就是内存;每个储存器都占用了一部分内存地址空间内的一个地址段,CPU在这段地址段进行的读写操作,就是在相应的储存器中进行读写数据操作。
当我们想要在某类寄存器进行读写操作时,必须直到这个储存器的第一个和最后一个单元的地址,才能保证进行的操作在预期的单元内。例如我们想要在显示器上显示一段信息,我们就要将这段信息写进显存中,显卡才能将他显示在显示屏上。不同的计算机系统的内存地址空间分配是不一样的。
相关文章:
汇编基础知识
机器语言 1、机器语言是机器指令的集合,机器指令就是机器可以正确执行的命令,由二进制数组成 2、当今我们常用的是pc机,由一个芯片完成上述功能,即CPU是一种微处理器,每一种微处理器由于自身硬件设计和内部构造不同都…...
线程池的拒绝策略适用场景思考
ThreadPoolExecutor有四种拒绝策略。刚开始学习线程池的时候我就觉得,就是应该当任务饱和(达到拒绝策略)时,就应该拒绝任务,抛出异常。最近仔细思考了下,既然线程池这么设计,也应该有一定的道理…...
on-policy对比off-policy
目录 持续更新。。。 on-policy与off-policy的定义 Q-learning属于on-policy算法还是off-policy算法? 为什么off-policy适用于从离线经验或多种探索策略中学习,明明 On-policy 也可以基于探索学习的啊? 重要性权重方法 off-policy方法可…...
如何记录Matlab程序运行过程中所占用的最大内存(续)
在上一篇博客中,我们讨论了如何记录Matlab程序运行过程中所占用的最大内存。 博客原文:如何记录Matlab程序运行过程中所占用的最大内存-CSDN博客 但经过测试发现,这与实际有非常大的差异。运行如下例子: clear;clc; profile on…...
解决MySQL字符集冲突引发的“Illegal mix of collations”错误
引言 在开发过程中,我们常常会遇到数据库层面的字符集兼容性问题。本文将通过一个典型的案例,分析因字符集不匹配导致的 Illegal mix of collations 错误,并提供完整的解决方案,帮助开发者彻底规避此类问题。 问题现象 假设我们…...
Vue3:F12后,页面弹出runtime errors及提示的解决办法
解决: vue.config.jsdevServer: {client: {overlay: false}, },关闭提示 main.js // 定义特性标志 window.__VUE_PROD_DEVTOOLS__ false window.__VUE_PROD_HYDRATION_MISMATCH_DETAILS__ false...
学习笔记:黑马程序员JavaWeb开发教程(2025.3.17)
11.5 案例-文件上传-阿里云OSS-入门 出现报错:Process exited with an error: 1 (Exit value: 1),点击exec那一行,出现错误原因:Command execution failed. 在CSDN上找到了解决方法: 之后出现新的报错&…...
EDAS:投稿经验-word版本-问题解决
1. 字体不对,字体未嵌入问题 问题:word转PDF后,总是显示有字体格式不对(忘记截图了)。 办法:1. EDAS投稿PDF格式问题-CSDN博客-PDF上修改 IEEE论文检测的字体未嵌入问题Times New Ro…...
【数据结构初阶第十九节】八大排序系列(下篇)—[详细动态图解+代码解析]
hello,好久不见! 云边有个稻草人-CSDN博客 上篇内容,回顾一下吧【数据结构初阶第十八节】八大排序系列(上篇)—[详细动态图解代码解析]-CSDN博客 今天我们来学习下篇 目录 (2)快速排序 【挖坑法】 —思路 —思路…...
不可不知的分布式数据库-TiDB
不可不知的分布式数据库-TiDB 介绍TiDb架构TiDb与Mysql的区别功能特性性能表现数据可靠性运维管理成本 Docker部署TiDB1. 获取 TiDB 配置文件2. 启动 TiDB 集群3. 连接到 TiDB4. 停止和清理 TiDB 集群注意事项 实用案例TiDB实现分布式事务实现原理实现方式SQL 方式编程方式 注意…...
BUUCTF Pwn babyheap_0ctf_2017 Unsorted bin attack部分
checksec exeinfo 开启了全保护 64位 查看函数: 堆题 增删查改齐了 可以在编辑堆的时候重新设置大小 存在堆溢出 delete函数的指针清零了 无UAF 想法是通过unsorted bin泄露libc基址: from pwn import *p process(./babyheap) #p remote("node…...
AI绘画软件Stable Diffusion详解教程(11):图生图进阶篇(局部用上传蒙版重绘)
总的功能与上一篇相似,但是在Stable Diffusion网页上手工涂绘的方法,有可能会因不够精细,导致重绘的效果不佳,涂绘区与非涂绘区的衔接有可能会出问题。这个时候可以用photoshop来制作蒙版,精确的圈出需要重绘的地方&am…...
SAP的WPS导出找不到路径怎么办;上载报错怎么办
一.打开注册编辑器 二.输入以下地址 计算机\HKEY_CLASSES_ROOT\ExcelWorksheet\Protocol\StdFileEditing\Server 去除掉EXE后面的命令即可 二:WPS上载文件没反应怎么办 如何切换整合模式或多组件模式-WPS学堂 根据官方操作把整合模式改成多组件模式...
Go语言不定长参数使用详解
不定长参数(Variadic Parameters)使用详解 核心概念 语法特性:...T 表示函数可接受任意数量的T类型参数底层实现:不定长参数在函数内部实际存储为切片类型 []T展开操作符:调用时使用 slice... 可将切片展开为独立参数…...
django如何配置使用asgi
以下是 Django 配置使用 ASGI 的完整指南: 一、配置前提 Django 版本:确保使用 Django 3.0(原生支持 ASGI)必要依赖:pip install daphne channels二、基础配置步骤 1. 创建/修改 ASGI 入口文件 在 Django 项目根目录…...
在C语言基础上学Java【Java】【一】
众所周知,Java是C风格的语言,对于学过C语言的人学Java可以快速适应。 废话不多说,直接边看代码边学。 数据类型,输入和输出 public class a1 {//a1是类名,就是文件名,所有的可执行代码需要写在这个里面 /…...
使用 Promise 和 .then() 解决同异步问题
在购物车功能中,用户点击“加入购物车”或“删除购物车”时,可能会遇到数据同步问题。例如,当用户快速连续点击“删除”按钮时,可能会导致删除操作基于过时的数据,从而引发错误。为了解决这个问题,我们可以…...
defineExpose函数
在软件开发中,特别是在像 Vue.js 这样的框架中,defineExpose 是一个函数,用于显式地将组件的某些属性或方法暴露给其父组件或其他组件。这在你想控制组件的内部状态或功能对外部可见性时非常有用。 Vue.js 3 中的示例: <scri…...
LabVIEW烟气速度场实时监测
本项目针对燃煤电站烟气流速实时监测需求,探讨了静电传感器结构与速度场超分辨率重建方法,结合LabVIEW多板卡同步采集与实时处理技术,开发出一个高效的烟气速度场实时监测系统。该系统能够在高温、高尘的复杂工况下稳定运行,提供高…...
台式机电脑组装---电源
台式机电脑组装—电源 22 33 主板供电是聚集了12V,5V,3.3V的24pin CPU供电的话主要是12V的44pin供电 44pin合并之后,就是8pin 55 SATA硬盘会使用饼io口取电,从电源获取12v,5v,3.3v的电 33...
中小型企业大数据平台全栈搭建:Hive+HDFS+YARN+Hue+ZooKeeper+MySQL+Sqoop+Azkaban 保姆级配置指南
目录 背景一、环境规划与依赖准备1. 服务器规划(3节点集群)2. 系统与依赖3. Hadoop生态组件版本与下载路径4. 架构图二、Hadoop(HDFS+YARN)安装与配置1. 下载与解压(所有节点)2. HDFS高可用配置3. YARN资源配置4. 启动Hadoop集群三、MySQL安装与Hive元数据配置…...
2023年蓝桥杯 省赛 ————特殊日期
2.特殊日期 - 蓝桥云课 错误原因: 分不清大小月,将闰年的2月天数当成了28天,非闰年当成了27天,因此出错 错误代码如下: package Lanqiao;import java.util.Scanner;/*** author zb* date2025/3/16 13:22*/ public …...
电动车出入库管理软件,电动车维修保养售后服务管理系统,佳易王电动车店管理系统操作教程
一、概述 本实例以 佳易王电动车店管理系统 为例说明,其他版本可参考本实例。试用版软件资源可到文章最后了解,下载的文件为压缩包文件,请使用免费版的解压工具解压即可试用。 软件特点: 操作便捷性高 软件功能实用且…...
计算机网络-综合布线系统
工作区子系统:由信息插座、插座盒、连接跳线和适配器组成 水平子系统:由一个工作区的信息插座开始,经水平布置到管理区的内测配线架的线缆所组成 管理子系统:由交连、互连配线架组成。管理子系统为连接其它子系统提供连接手段 …...
【蓝桥杯】24省赛:数字串个数
思路 本质是组合数学问题: 9个数字组成10000位数字有9**10000可能 不包括3的可能8**10000 不包括7的可能8**10000 既不包括3也不包括77**10000 根据容斥原理:结果为 9 ∗ ∗ 10000 − 8 ∗ ∗ 10000 − 8 ∗ ∗ 10000 7 ∗ ∗ 10000 9**10000 - 8**10…...
手写一些常见算法
手写一些常见算法 快速排序归并排序Dijkstra自定义排序交替打印0和1冒泡排序插入排序堆排序欧几里得算法求最大公约数 快速排序 public class Main {public static void main(String[] args) {int nums[] {1,3,2,5,4,6,8,7,9};quickSort(nums,0,nums.length - 1);}private st…...
AI自动生成数据
文章目录 概要案例生成简单的文本数据 概要 合成数据是人工生成的数据而不是从现实世界事件中收集的数据。它用于模拟真实数据,而不会泄露隐私或遇到现实世界的限制 安装依赖:pip install langchain_experimental 合成数据的优势: 1.隐私…...
【STM32】从新建一个工程开始:STM32 新建工程的详细步骤
STM32 开发通常使用 Keil MDK、STM32CubeMX、IAR 等工具来创建和管理工程。此处是 使用 Keil MDK5 STM32CubeMX 创建 STM32 工程的详细步骤。 新建的标准库工程文件已上传至资源中,下载后即可直接使用。 标准库新建 STM32 工程的基本目录结构:STD_STM…...
【Go语言圣经3.6】
目标 概念 常量与变量的主要区别在于: 不可变性:常量在声明后其值就固定下来,不能再被修改。这保证了程序运行时不会因意外修改而导致错误。 使用不可变数据(例如数学常数 π)可以避免意外修改带来的问题 编译期计算…...
[IP]UART
UART 是一个简易串口ip,用户及配置接口简单。 波特率从9600至2000000。 该 IP 支持以下特性: 异步串行通信:标准 UART 协议(1 起始位,8 数据位,1 停止位,无奇偶校验)。 参数化配置…...
Windows主机、虚拟机Ubuntu、开发板,三者之间文件互传
以下内容源于日常学习的整理,欢迎交流。 下图是Windows主机、虚拟机Ubuntu、开发者三者之间文件互传的方式示意图: 注意,下面谈及的所有方式,都要求两者的IP地址处于同一网段,涉及到的软件资源见felm。 一、Windows主…...
4.好事多磨 1
前言 我们已经学习了创建套接字和向套接字分配地址,接下来正式讨论通过套接字收发数据。 之前介绍套接字时举例说明了面向连接的套接字和面向消息的套接字这2种数据传输方式,特别是重点讨论了面向连接的套接字。这次将具体讨论这种面向连接的服务器端/客…...
AI预测体彩排3新模型百十个定位预测+胆码预测+杀和尾+杀和值2025年3月18日第22弹
前面由于工作原因停更了很长时间,停更期间很多彩友一直私信我何时恢复发布每日预测,目前手头上的项目已经基本收尾,接下来恢复发布。当然,也有很多朋友一直咨询3D超级助手开发的进度,在这里统一回复下。 由于本人既精…...
相机标定之DLT算法学习
文章目录 1.针孔相机模型2.各个坐标系的定义1)世界坐标系(world coordinate)2)相机坐标系(camera coordinate)3)图像坐标系(film coordinate)4)像素坐标系&am…...
Flask实时监控:打造智能多设备在线离线检测平台(升级版)
前言 武林之中,最讲究的便是“掌控”。若是手下弟子忽然失踪,若是江湖好友生死未卜,岂不令人寝食难安?今日,吾等化身技术侠客,祭出Flask实时监控大法,打造一款智能多设备在线离线检测平台&…...
【计算机网络】一二章
一 二 非常棒的例子 相同的传播时延,带宽越大,该链路上所能容纳的比特数越多 相同的传播时延,带宽越大,该链路上所能容纳的比特数越多 往返时间(Round-Trip Time,RTT)s是指从发送端发送数据分组…...
003-掌控命令行-CLI11-C++开源库108杰
首选的现代C风格命令行参数解析器! (本课程包含两段教学视频。) 以文件对象监控程序为实例,五分钟实现从命令行读入多个监控目标路径;区分两大时机,学习 CLI11 构建与解析参数两大场景下的异常处理;区分三…...
如何针对大Excel做文件读取?
针对大Excel文件(如超过百万行)的读取,传统的一次性加载到内存的方式会导致 内存溢出(OOM),需采用 流式读取(Streaming) 或 分块读取(Chunk) 的策略。以下是具…...
数据链路层协议
目录 一、Mac地址 二、以太网(Mac) 三、MTU 四、ARP协议 一、Mac地址 注意:mac地址是全世界唯一的,而ip地址在不同子网中是可以重复的。 我们在之前说过,Mac地址如果想要进行网络通信,就需要让交换机记…...
【笔记】计算机网络——数据链路层
概述 链路是从一个结点到相邻结点的物理路线,数据链路则是在链路的基础上增加了一些必要的硬件和软件实现 数据链路层位于物理层和网络层之间,它的核心任务是在直接相连的节点(如相邻的交换机,路由器)之间提供可靠且…...
在制作电脑的过程中,如何区分整机性能问题和应用自身性能问题
在制作电脑的过程中,区分整机性能问题和应用自身性能问题非常重要。这两类问题的表现可能相似(如卡顿、响应慢等),但原因和解决方法完全不同。以下是区分和定位问题的方法: 1. 整机性能问题的特征 整机性能问题通常与…...
高光谱相机在水果分类与品质检测中的应用
一、核心应用领域 外部品质检测 表面缺陷识别:通过400-1000nm波段的高光谱成像,可检测苹果表皮损伤、碰伤等细微缺陷,结合图像分割技术实现快速分类。 损伤程度评估:例如青香蕉的碰撞损伤会导致光谱反射率变化&#…...
【零基础入门unity游戏开发 —— 通用篇】层级(Layer)、层级编号、层级二进制掩码和unity层级检测原理
考虑到每个人基础可能不一样,且并不是所有人都有同时做2D、3D开发的需求,所以我把 【零基础入门unity游戏开发】 分为成了C#篇、unity通用篇、unity3D篇、unity2D篇。 【C#篇】:主要讲解C#的基础语法,包括变量、数据类型、运算符、流程控制、面向对象等,适合没有编程基础的…...
9、STL中的multimap使用方法
一、了解 multimap是一个允许键(key)重复的关联容器。适合用于一对多的更新。 允许多个键拥有相同的值。基于红黑树。 multimap特性 键允许重复:允许多个键有相同的值。无 [ ] 运算法:禁止用 下标访问,因为键不唯一。…...
keepalived的工作原理和脑裂
一、Keepalived工作原理 keepalived是一个用于实现高可用和负载均衡的服务,主要基于虚拟路由协议,解决了nginx一台机器的单点故障问题。通过将两台nginx都配置keepalived,让两天nginx互为主机和备机;且keepalived通过 VRRP 协议和…...
k8s资源管理介绍
1.命令式管理常见的命令 资源管理方式 kubectl get nodes查看集群 kubectl get pods 查看所有pod kubectl get pod pod名 -o yaml 以yaml形式查看某个pod kubectl create namespace dev创建一个dev组 Namespace 是 Kubernetes 中用于隔离资源的一种机制。通过 Namespace&a…...
激光slam学习笔记10---ubuntu2004部署运行fastlivo2踩坑记录
背景:mars实验室又发福利啦!跑跑效果,验了那句,mars出品,必属精品!本人pc环境ubuntu20.04,基本流程按照readme走就行,sophus和vikit安装有些注意地方。本文做了一些部署踩坑记录&…...
Windows11 新机开荒(二)电脑优化设置
目录 前言: 一、注册微软账号绑定权益 二、此电脑 桌面图标 三、系统分盘及默认存储位置更改 3.1 系统分盘 3.2 默认存储位置更改 四、精简任务栏 总结: 前言: 本文承接上一篇 新机开荒(一) 上一篇文章地址&…...
一次模拟Windows挖矿病毒应急响应的流程及思路
什么是挖矿病毒? 挖矿病毒并非传统意义上专门用于破坏计算机系统的病毒,它本质是为了获取虚拟货币收益而非法侵占用户计算资源的恶意程序。这些虚拟货币如比特币、以太坊等,其获取过程依赖计算机的算力进行复杂运算,挖矿病毒正是…...
51单片机的寻址方式(完整)
目录 一、立即数寻址 二、直接寻址 三、寄存器寻址 四、寄存器间接寻址 五、变址寻址 六、位寻址 七、指令寻址 (一)绝对寻址 (二)相对寻址 在 51 单片机中,寻址方式是指在执行指令时,CPU 寻找操作…...