汇编语言学习笔记
1.1机器语言

计算机发展初期,人们都是用机器语言进行编程的,这也是人们能实现编程控制计算机的最低级别。那么机器语言是什么样子的呢?就是用0和1组成的一个串(形如011010101),cpu的每一个功能对应着一个串,cpu得到这样的串就去执行对应的功能,我们把这样的串叫做一条机器指令。cpu提供的所有功能,这些功能对应的所有串,我们称之为这种cpu的指令集。这里我们就知道指令集是什么东东了。cpu提供的功能的个数是一定的,但是0和1组成的串却有非常多的组合。所以并不是任意一个串都可以让cpu去执行特定的功能,只有指令集中的串才可以。

每一种cpu,由于硬件设计和内部结构的不同,对应的指令集也是不同的。也就是说,每种cpu都有专属于自己的一套指令集。这就好比两个人,一个说英语,一个说法语,虽然他们的语言都是由相同的26个字母组成的(就像不同cpu的指令集都是由0和1组成的),但是同样的一个单词,他们两人可能理解成不同的意思。同样的,他们要表达同一个意思,也可能用不一样的单词。由此可见,用机器语言编写的程序是不可移植的。什么叫移植?就是你用cpu-A的指令集编写一个程序,可以在cpu-A上成功运行,于是你想不改动该程序,然后在cpu-B上同样运行成功,实现相同的功能。想想也是不可能,就好比你用英语写了一篇文章,拿去让只会法语的人读,你说他会读懂吗?

早期用机器语言编写程序的程序猿,不能不称之为神。你要记住cpu提供的所有的功能,以及每个功能对应的一串二进制指令,然后熟练的使用。万一哪个地方0被错误写成了1,你还要在万千个0和1中把它找出来。想想都有点不可思议。关键是万一换了其他的cpu,你还要重复上面的过程重新编写你的程序。

注:其实还有更低级别的指令,叫做微指令,每条机器指令都被翻译成几条微指令然后让cpu去执行。至于微指令,不用去了解,太底层了,而且是cpu生产商的机密(就好比用Iphone6,我们能使用Iphone6的各种功能,但是我们不知道这些功能是如何实现的,这就是商业机密,指令集就是一个功能集合,我们用指令集去实现自己想要的功能,但是这些功能如何实现的,就是微指令的事,人家不会告诉你的)。我们只要知道cpu中固化了一套自己的指令集就可以了。至于什么是固化,我也不懂,貌似是涉及硬件的东西,但是你只要明白,不是我指令集里的东西我不认。

讲个很久以前的笑话,说有个人很牛逼,有天发现自己的驱动软件坏掉了,于是他找来一张空光盘,拿起一根细针,疯狂得戳呀,一个小时过去了,塞入光盘,驱动安装成功。这虽然是夸张,但是由一点是非常正确的,不管你用什么语言编写的程序,最终都会被翻译成机器语言在机器上执行,没办法,谁让机器只认0和1呢。

菜鸟的汇编语言学习笔记相关推荐

  1. 32位汇编语言学习笔记(45)--测试简单文件操作接口(完)

     这是<Assembly Language step by step programming with linux>书中的最后一个程序,也是全书中的最复杂的一个程序. 首先看一下这个程 ...

  2. MIPS汇编语言学习笔记23:if 语句分支指令

    C语言 #include<stdio.h> int main() {int i = 3;if (i < 5){printf("yes!\n");}else{pri ...

  3. MIPS汇编语言学习笔记07:打印双精度浮点数

    课程原视频: https://www.bilibili.com/video/BV19J411y7pA?p=7 程序功能: 设定两个双精度浮点型数据,将其相加后打印输出. 代码: .datamyDoub ...

  4. windows下32位汇编语言学习笔记

    windows下32位汇编语言学习笔记 第一章  第一章 背景知识 80x86处理器的存储器 4个数据寄存器 EAX,EBX,ECX,EDX EAX寄存器 所有API函数的返回值都保存在EAX里,注意 ...

  5. win32汇编语言学习笔记(三)

    汇编语言学习笔记(三) CH3.Windows汇编基础 .386 .model flat,stdcall option casemap:none 定义程序使用的指令集.工作模式 相应的还有:.8086 ...

  6. MIPS汇编语言学习笔记11:整数减法 (mult方法)

    任务:整数相乘,并输出打印. 代码: .dataintA: .word 5intB: .word 2 .textli $v0, 1lw $a1, intAlw $a2, intBmult $a1, $ ...

  7. Linux下汇编语言学习笔记12 ---

    这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...

  8. Linux下汇编语言学习笔记65 ---

    这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...

  9. Linux下汇编语言学习笔记13 ---

    这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...

最新文章

  1. 项目交接文档_会计实操||会计人员交接范例
  2. mysql关于or的索引问题
  3. 【Java24】健康项目:环境搭建,预约管理(检查项和检查组管理)
  4. Java对象在Java虚拟机的创建过程
  5. 《c语言从入门到精通》看书笔记——第16章 网络套接字编程(上)——网络
  6. 深度优先搜索——单词接龙(洛谷 P1019)
  7. 宝德服务器硬盘报警,宝德“超人”系列PR4880G
  8. 理想汽车2021年Q4盈利2.955亿元 CTO王凯离职
  9. Python3 爬虫之 Scrapy 核心功能实现(二)
  10. 【codevs3945】 完美拓印
  11. App 抓包-Fiddler简单使用教程
  12. 随机信号分析实验(matlab仿真实验)
  13. JavaScript常见的六种继承方式
  14. 探索式测试方法的实践
  15. 英语口语练习二十二之I'd strongly recommend that... (我强烈建议……)用法
  16. 张驰课堂:六西格玛中的Minitab软件,到底有多重要
  17. Window拷贝文件到Ubuntu虚拟机
  18. 上位机软件开发流程是怎样的?上位机开发软件分享
  19. C++ 模板与泛型详解
  20. idea软件调整字体大小和行间距

热门文章

  1. python用户输入q退出,python - 循环输入,从文件列表中输出数据,如果输入等于q或退出,则退出 - SO中文参考 - www.soinside.com...
  2. JDBC学习心得(一)
  3. 网上打印店打印一本标书多少钱?哪个网上打印平台可打印标书
  4. python成绩统计系统xlwings_科学网—利用Python扩展Excel能力的xlwings库使用体会 - 丁祥欢的博文...
  5. Day02-简单加法(addition)
  6. 工程管理系统企业工程管理系统源码简介
  7. dscp值_ToS与DSCP对照表
  8. MLK | 特征工程系统化干货笔记+代码了解一下(中)
  9. 笔试面试找工作个人总结(持续更新)
  10. Bayesian statistics