汇编学习(一)

看的是王爽老师的《汇编语言》第三版

基础知识

一.汇编语言的诞生
上古时期在汇编语言还未出现的时候,那时的程序员还只能用二进制也就是所谓的机器语言写代码,将0和1编成的程序代码打在纸带或卡片上,再将纸带卡片输入计算机,进行运算;代码相当抽象,查错就更难了;难以辨别和记忆成为了机器语言的瓶颈;
但是怎么可能会有问题能难住程序员呢,于是汇编语言诞生了!

二.汇编语言VS机器语言

汇编语言的主体是汇编指令,它相比机器指令更容易书写和记忆;

例如

汇编指令机器指令操作
mov ax,bx1000100111011000寄存器BX的内容送到AX

先不用关心这指令,一眼就看出如果写代码只能从汇编语言和机器语言选一个的话我肯定选汇编;
当然汇编语言无法直接让计算机运行,它需要编译成机器码然后在让计算机运行;

三.汇编语言的组成

  • 汇编指令:机器码的助记符,有对应的机器码;
  • 伪指令 : 没有对应的机器码,由编译器执行,计算机并不执行;
  • 其他符号:如加减乘除符号,也是由编译器识别,没有对应的机器码;
汇编指令容易理解,至于伪指令和其他符号他们既然没有对应的机器码计算机也不执行为什么要有它们呢?上文写到汇编语言需要编译成机器语言后才能被计算机运行,这原因其中之一就是为了协助编译器编译汇编源代码,其二就是为了汇编源代码更好的可读性

四.CPU与储存器

  • cpu可以直接使用的信息在存储器(内存)中存放;(这里我狠查了一波CPU能否直接从硬盘拿数据,但是发现资料方向慢慢走向了操作系统所以就没深入下去)
  • 在存储器中指令和数据没有任何区别都是二进制;(后面的学习会写到CPU如何区分数据和指令)
  • 存储器的大小跟它存储单元的多少有关,一个存储单元可以存储一个字节,从零开始编号;
  • 连接CPU与其他芯片的导线称为总线,总线从逻辑上又分三类,地址总线,控制总线,数据总线;

地址总线

在计算机中一根导线可以传送两种稳定状态高电平,低电平,用二进制表示就是0和1;如果有十根地址总线,那么它就能表示2的十次方个不同数据,编号从0到1023;这也是CPU能找到的地址范围;

数据总线

数据总线的宽度决定了CPU与外界数据传输的速度;一根数据总线能传1bit二进制数据,如果传送数据超过数据总线一次能传送数据的最大值,那就得分批传了;例如只有一根数据总线,要传个3过去,那只能一次传0010,第二次传0001,分两次传完;

控制总线

CPU对外部器件的控制通过控制总线来进行,例如需要读取和写入数据到内存,那么就需要一根读取控制线,和一根写入控制线;

其实这些是在为CPU如何对存储器进行读写做铺垫

年轻的时候送过快递感觉作为例子很贴切;

企鹅男孩是一名快递员,他每天的工作就是把货物送到规定的地址;这里企鹅男孩就是CPU,货物就是数据信息,货物的地址就是存储单元的地址信息,而送快递这个动作就是传达的控制信息;送快递简直和CPU读写存储器如出一辙;

  • 1.CPU需要确定存储单元的地址;(快递员确定货物地址)
  • 2.器件选择,读取信息还是写入信息;(快递也是一样,你是要给客户去送快递还是给客户发个快递);
  • 3.读或写的数据;(送到的快递,或者收回的快递)

这些都是我对王爽老师《汇编语言》第一章的总结,有不对的地方还请多指教;书中前言真是写到心坎了,也是我的瓶颈,学习框架也好语言也好总是没有深度,这是因为我开始学习编程就没走一个循序渐进的路线,所以导致知识不成体系不够扎实,不想做编程界的泥腿子,向成为一名真·程序员前进;

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

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

相关文章

Java 网络编程1

talnet工具与Socket类 如今单机的程序已经不太能适合用户的需要,网络编程变得比以往更加重要。首先需要认识一下talnet工具,可以使用该工具来连接服务器在终端中输入,可以进入本地的80端口 talnet 127.0.0.1 80 需要我们输入ip地址和端口号,使…

【GIS风暴】GeoJSON数据格式案例全解

在了解GeoJSON数据之前,先来通过一个网站和一个简单的代码案例,看一下GeoJSON的神奇魅力吧! 网站:http://geojson.io 打开上述网站,在左侧的代码区域粘入中国区域GeoJSON代码,如下所示: 中国地图: 地名:

mysqldump参数大全

参数 参数说明 --all-databases , -A 导出全部数据库。 mysqldump -uroot -p --all-databases --all-tablespaces , -Y 导出全部表空间。 mysqldump -uroot -p --all-databases --all-tablespaces --no-tablespaces , -y 不导出任何表空间信息。 mysqldump -uroot -p --a…

[转]2020年5月程序员工资统计,平均14542元

平均工资 2020年5月全国招收程序员312761人。2020年5月全国程序员平均工资14542元,工资中位数12500 元,其中95%的人的工资介于5250元到35000元。 一线城市工资 2020年5月北京招收软件工程师24478人。2019年5月北京软件工程师平均工资19273元&#xff0…

云原生IDE:iVX免费的首个通用无代码开发平台

一、iVX简单介绍 1、iVX是什么东东? iVX 是一个 “零代码” 的可视化编程语言,拥有方便的 在线集成开发环境 ,不需要下载开发环境,打开浏览器即可随时随地的进行项目编辑;iVX 拥有 “一站式” 的云资源,通过这一套一…

.NET GC工作流程

前言在上文[如何获取GC的STW时间]一文中,我们聊到了如何通过监听GC发出的诊断事件来计算STW时间。里面只简单的介绍了几种GC事件和它的流程。群里就有小伙伴在问,那么GC事件是什么时候产生的?分别是代表什么含义?那么在本文就通过…

libco协程库源码解读

2019独角兽企业重金招聘Python工程师标准>>> 协程,又被称为用户级线程,是在应用层被调度,可以减少因为调用系统调用而阻塞的线程切换的时间.目前有很多协程的实现,由于微信内部大量使用了其直研的的libco协程库,所以我选择了腾讯开源的libco协程库进行研…

【ArcGIS风暴】如何将矢量数据(点、线、面)折点坐标转为GeoJSON格式?

本文以案例的形式,讲述在ArcGIS和QGIS专业软件中,将矢量数据转为GeoJSON的方法。 扩展阅读:【GIS风暴】GeoJSON数据格式案例全解 文章目录 一、ArcGIS将矢量数据转为GeoJSON二、QGIS将矢量数据转为GeoJSON一、ArcGIS将矢量数据转为GeoJSON ArcGIS中提供的【要素转JSON】工具…

TypeScript 3.9 正式发布!平均编译时长从 26 秒缩短至 10 秒

作者 | 微软官方博客 译者 | 核子可乐 策划 | 小智 稿源 | 前端之巅 今天,微软在其官方博客宣布:TypeScript 3.9 版本已经正式发布,详情见下文。 有些朋友可能对 TypeScript 还不太熟悉,这是一种以 JavaScript 为基础开发的语…

(二)Harbor WEB的使用

接上一篇《安装Harbor》,安装好之后,接下来我们就进行Harbor web界面的操作吧! 转载请标明出处:http://www.cnblogs.com/huangjc/p/6270405.html 浏览器登陆Harbor(默认用户密码:admin/Harbor12345&#x…

iVX低代码平台系列制作简单的登录界面

一、前言 iVX是啥,不理解的小伙伴可以猛戳这里 ----------------------点我 二、iVX平台和现有编程语言的对比 三、iVX平台和现有编程语言的对比 1、快速学习(周期短) iVX逻辑上相对是比较简单的 所以初学者的话只需要从逻辑和具体功…

【CASS精品教程】CASS9.1等高线的绘制完整案例教程

在地形图中,等高线是表示地貌起伏的一种最重要的手段。在CASS成图时,可自动生成精度高的等高线,本文讲解CASS9.1生成等高线的完整操作流程。 文章目录 1. 展高程点2. 建立数字地面模型3. 修改数字地面模型4. 绘制等高线5. 等高线的修饰6. 绘制三维模型扩展阅读: ArcGIS实验…

Process.Start 为什么会引发“系统找不到指定的文件”异常

前言偶然发现,如果想用如下代码在 .NET 6 中打开指定 URL:Process.Start("https://baidu.com");会引发异常:而同样的代码在 .NET Framework 中是可以正常执行的。难道,.NET 6 下的实现逻辑不一样?深入探究通…

JVM 类型的生命周期学习

Java虚拟机通过装载、连接和初始化一个JAVA类型,使该类型可以被正在运行的JAVA程序所使用,其中,装载就是把二进制形式的JAVA类型读入JAVA虚拟机中;而连接就是把这种读入虚拟机的二进制形式的类型数据合并到虚拟机的运行时状态中去…

js对象数组中的某属性值 拼接成字符串

var arr[{id: "600", pId: null, name: "图形的变化"},{id: "630", pId: "600", name: "投影与视图"},{id: "631", pId: "630", name: "投影"},{id: "632", pId: "630",…

898A. Rounding#数的舍入

题目出处&#xff1a;http://codeforces.com/problemset/problem/898/A 题目大意&#xff1a;找一个数最近的整十的数 #include<iostream> using namespace std; int main(){int a,b;cin>>a;ba;while(1){if(a%100){cout<<a<<endl;return 0;}if(b%100){…

开店星简直就是国内优秀的开源商城系统天花板

一、场景 1、大学生毕业设计做商城系统背景 好家伙、又到开学季节了&#xff0c;师妹让我帮忙给指导大四的项目&#xff0c;作为毕业设计和为后面找工作积累项目经验&#xff0c;要搞一个买卖二手闲置品的商城小程序和PC端商城、希望能够快速学习、接入、修改部分功能&#xff…

【CASS精品教程】CASS9.1土方量的计算方法汇总

CASS9.1中,计算土方量的方法有:DTM法土方计算、断面法进行土方量计算、方格网法土方计算、等高线法土方计算、区域土方量平衡等。本文以案例的形式,详细讲解土方量的计算过程。 文章目录 一、DTM法土方计算二、断面法进行土方量计算三、方格网法土方计算四、等高线法土方计算…

html标签缺省(自带)样式大全

html标签默认样式整理 作者&#xff1a;佚名 来源&#xff1a;互联网 时间&#xff1a;07-30 16:54:48 文为大家整理了html标签默认样式属性及浏览器默认样式等等&#xff0c;喜欢css布局的朋友们可以学下&#xff0c;希望对大家有所帮助html, address,blockquote,body, dd, …

VS2019 禁止Web项目停止调试后自动关闭浏览器(在浏览器窗口关闭时停止调试程序,在调试停止时关闭浏览器)

很多文章都说要修改以下两处与“编辑并继续”有关的选项&#xff1a; “编辑并继续”是一种省时的功能&#xff0c;使你能够在程序处于中断模式时更改源代码。 通过选择执行命令&#xff08;如 "继续" 或 "单步执行"&#xff09;继续执行程序时&#xff0c…