汇编入门--基础知识(1)

news2024/11/24 20:34:38

1.汇编语言的概念

        汇编语言是一种低级编程语言,它与计算机的机器语言非常接近,但比机器语言更易于人类阅读和理解。汇编语言是用一系列的助记符来表示机器语言的操作码和操作数。每种计算机体系结构(如x86、ARM等)都有自己的汇编语言版本,因为每种体系结构的机器语言都是特定于该体系结构的。

2.汇编语言的特点

    •    接近硬件:汇编语言允许程序员直接操作计算机的硬件资源,如处理器寄存器、内存地址等。
    •    高效:由于汇编语言几乎直接转换为机器码,它能够生成非常高效的代码,这在性能敏感的应用程序(如嵌入式系统、游戏开发和系统编程)中非常重要。
    •    体系结构特定:每种类型的处理器都有其自己的汇编语言,这意味着为一种体系结构编写的汇编程序通常不能在另一种体系结构上运行,除非进行修改或通过模拟器。
    •    可控性和灵活性:汇编语言提供了对计算机硬件的精确控制,使程序员能够编写非常精细和优化的代码。
    •    可读性低:相对于高级编程语言,汇编语言的可读性较差,学习和编写汇编程序需要深入了解计算机的硬件和体系结构。

下面是汇编语言在程序设计里的地位

我们写的程序都是先变成汇编语言,然后通过编译器变成机器语言,最后变成计算机执行的东西 

3.汇编语言的组成

汇编语言由三部分组成的

a.汇编指令(能直接翻译成机器码的,实质就是机器码的助记符)

b.伪指令(编译器执行)

c.其他符号 (编译器识别)

汇编语言的核心就是汇编指令,伪指令和其他符号cpu都是不认识的,通过编译器去执行。

4.存储器

        cpu工作时,要给他提供指令和数据,指令和数据就放在存储器里,简单的说就是内存,这里的内存要和硬盘区别开,内存(RAM)能够直接被cpu读取,可以临时储存数据,其访问速度是要高于硬盘的,但是缺点就是,如果断电,内存中的数据就没了。硬盘(HDD)相比于内存来说,读写速度慢,但是断电也可以保存数据。

         三者的关系:

     •    当计算机启动时,操作系统从硬盘加载到内存中。随后,CPU从内存中读取操作系统的指令来执行。
    •    当运行程序时,程序的代码和所需数据从硬盘加载到内存中,以便CPU可以直接访问它们。这样做是因为访问内存比访问硬盘快得多。
    •    CPU执行程序时,可能需要读取或写入数据。如果这些数据当前不在内存中,则系统会从硬盘中检索它们,并将它们加载到内存中以供CPU使用。
    •    在处理数据时,CPU可能会将结果暂时存储在内存中。如果需要长期保存这些结果,它们会被写回硬盘。

而且,cpu不能直接访问硬盘,硬盘数据是加载到内存后才被cpu读取的

 

5.指令和数据

指令和数据只是对于我们人来说,可以这么去区分,对于电脑来说其实都是0和1,一个数可以表示一个二进制数字,也可以是一个指令,具体由人去决定。

6.存储单元

存储器被划分为若干个存储单元,每个存储单元从0开始编号,为0~127;

7.cpu对数据的读写

cpu想要进行数据的读写,必须和外部器件进行三类信息交互:

要有:存储单元的地址,器件的选择,读和写的数据的地址

计算机里有专门链接cpu和其他芯片相连的导线,通常称为总线,分为地址总线,数据总线,控制总线

这里的内存是广义的内存 

 那么cpu如何在内存读或写一个数据呢?我们以读取为例子

首先控制总线表示为读取,地址总线输入需要读取数据的地址,然后数据通过数据总线被读取到cpu

 

 

 

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

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

相关文章

『羊毛教程』免费使用一个月的GPT-4、Claude 3 Opus!

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,所以创建了“AI信息Gap”这个公众号,专注于分享AI全维度知识…

2024-04-08 NO.5 Quest3 手势追踪进行 UI 交互

文章目录 1 玩家配置2 物体配置3 添加视觉效果4 添加文字5 其他操作5.1 双面渲染5.2 替换图片 ​ 在开始操作前,我们导入先前配置好的预制体 MyOVRCameraRig,相关介绍在 《2024-04-03 NO.4 Quest3 手势追踪抓取物体-CSDN博客》 文章中。 1 玩家配置 &a…

[数据结构]双向带头循环链表制作

前面我们有提到,单向不带头循环链表的制作 这里我们介绍一个双向带头循环链表的制作方法 双向带头循环链表的示意图如下 带头指针的作用体现在哪呢? 第一、防止头节点为空,既有头结点,头指针始终指向头结点,那么无论链表是否为空&#xf…

前端用Scss简化媒体查询

1、演示 2、未优化前的代码 .header {width: 100px;height: 100px;background-color: red; } media (min-width: 320px) and (max-width: 480px) {.header {width: 10px;} } media (min-width: 320px) and (max-width: 480px) {.header {height: 20px;} } media (min-width: 48…

【测试篇】Selenium + Java环境搭建

文章目录 Selenium Java环境搭建配置系统环境变量PATH验证环境是否搭建成功常见问题&解决办法 Selenium Java环境搭建 Java版本最低要求为8,这里默认大家都下载好了Java。😆 下载chrome浏览器(点我下载) 观察chrome版本。…

你知道哪几种当前流行的lisp语言的方言?

估计很多人都看过《黑客与画家》这本书,这本书主要介绍黑客即优秀程序员的爱好和动机,讨论黑客成长、黑客对世界的贡献以及编程语言和黑客工作方法等所有对计算机时代感兴趣的人的一些话题。作者保罗格雷厄姆字里行间不经意间向大家推介Lisp是最好的编程…

python|drop的应用

drop 删除列B 删除索引为1的行 删除列为‘A’,‘C’的列,axis表示方向 删除时保留原始 DataFrame(使用 inplaceFalse) 删除时直接修改原始 DataFrame(使用 inplaceTrue)

Unity面经(自整)——Unity基础知识

Unity基础知识 1. Image和RawImage的区别 Image比RawImage更耗性能。Image只能使用sprite属性的图片。而RawImage什么都可以使用 2. Unity3D中的碰撞器Collider和触发器Trigger的区别 碰撞器是触发器的载体,而触发器是碰撞器上的一个属性。 如果IsTrigger为fal…

Map接口及其实现类及常用方法

1.Map接口及其实现类 java.util.Map : 存储一对一对的数据(key-value键值对)|----->HashMap : 主要实现类,线程不安全,效率高,可以添加null的键值对;底层使用数组单向链表红黑树。|------->LinkedHashMap : 是HashMap的子类,在HashMap的数据结构的基础上,添加了一对双向…

222222222222222222222222

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和…

低温漂、低功耗电压基准,用在精密数据采集系统,供电类设备,工业仪表,测试设备等领域

MSR015/MSR025 是低温漂、低功耗、高精度 CMOS 电压基准, 具有 0.05% 初始精度、低功耗特点。该器件的低输出电压迟滞和低长期输出电压 漂移特性,进一步提高稳定性和系统可靠性。 此外,器件的小尺寸和低运行 电流特性使其非常适合便携…

吴恩达深度学习笔记:深层神经网络(Deep Neural Networks)4.5-4.8

目录 第一门课:神经网络和深度学习 (Neural Networks and Deep Learning)第四周:深层神经网络(Deep Neural Networks)4.5 为什么使用深层表示?(Why deep representations?) 第一门课:神经网络和深度学习 (…

若依ts版本(vue3+element plus+ts)

1、项目简介 本项目参考若依前后端分离版,前端由[若依vue3]改写为ts版本[ruoyi-web-vue3-ts],后端对[若依V3.8.7]进行了修改[后端版本分支vue3.ts.3.8.7],具体文档参见[若依官方文档]。本项目对部分代码做了优化,增加了activiti7…

二维数组及其内存图解

二维数组 在一维数组的介绍当中曾说,数组中可以储存任何同类型的元素,那么这个元素是不是可以也是数组呢?答案是可以,即在数组之中储存数组元素。这种情况就是多维数组,当一个数组中的元素是数组时叫做二维数组&#x…

公网环境下如何端口映射?

公网端口映射是一种网络技术,它允许将本地网络中的设备暴露在公共互联网上,以便能够从任何地方访问这些设备。通过公网端口映射,用户可以通过互联网直接访问和控制局域网中的设备,而无需在本地网络中进行复杂的配置。 公网端口映射…

自动驾驶---Motion Planning之STSC轨迹优化

1 背景 在之前的博客《自动驾驶---Motion Planning之构建SLT Driving Corridor》中,为读者讲解了SLT图构建的思路---通过构建Driving Corridor的方式确定SL两个方向的boundary。但是并没有去详细讲解如何去构造优化问题,以及如何去生成最终的轨迹,所以本篇博客将继续为读者讲…

如果用大模型考公,kimi、通义千问谁能考高分?

都说大模型要超越人类了,今天就试试让kimi和通义千问做公务员考试题目,谁能考高分? 测评结果再次让人震惊! 问题提干:大小两种规格的盒装鸡蛋,大盒装23个,小盒装16个,采购员小王买了…

libVLC 音频立体声模式切换

在libVLC中,可以使用libvlc_audio_set_channel函数来设置音频的立体声模式。这个函数允许选择不同的音频通道,例如立体声、左声道、右声道、环绕声等。 /*** Set current audio channel.** \param p_mi media player* \param channel the audio channel…

【webrtc】源码下载与编译

目录 下载 下依赖 参考文章 : 下载 (1) windows ,centos上都会报错 (2) ubuntu A : 在git上设置代理 B fetch通过 ubuntu的界面 proxy设置了代理 这将会拉取webRTC源码,且额外加了android相关的依赖,例如And…

MySQL·库的操作

目录 数据库的增加 字符集和校验规则 显示的指明字符集和校验规则 校验规则对数据库的影响 数据库的删除 数据库的查看 显示创建语句 数据库的修改 数据库的备份与恢复 备份 恢复 注意事项 查看连接情况 数据库的增加 CREATE DATABASE [IF NOT EXISTS] db_name [cr…