【OS学习笔记】二 汇编语言和汇编软件

学习交流加

  • 个人qq:
    1126137994
  • 个人微信:
    liu1126137994
  • 学习交流资源分享qq群:
    962535112

上一篇文章讲解了处理器,内存,和指令。学习了Intel 8086处理器的相关知识,如Intel通用寄存器的作用,程序重定位问题,以及内存分段结构。点击链接查看上一篇文章:处理器 内存 指令

本片文章学习以下内容:

  • 了解汇编语言的作用
  • 下载NASM编译器,并学会使用它来编译汇编语言源程序

处理器依靠机器指令工作,但机器指令从形式上看是一堆没有规律的数字,难以书写、阅读和理解,这样就发明了汇编语言。

1、汇编语言简介

在上一篇文章中,我们学习了处理器,也学习了处理器是如何进行算数逻辑运算的。为了实现处理器的自动运算,处理器必须从内存中取指令,并执行这些指令。

指令和被指令引用的数据在内存中都是一些或高或低的电平,每一个电平都可以看成是一个二进制(0 or 1),8个二进制位形成一个字节。要解读内存中的东西,最好的办法就是讲他们按字节转换成数字的形式。比如下面这些数字就是存放在INTE8086的指令,我们用的是十六进制:

B8 3F 00 01 C3 01 C1

对于大多数人来说,上述指令,是很难知道它到底在干嘛的。实际上它对应着下面的意思:

将立即数003F传送到寄存器AX;
将寄存器BX的内容和寄存器AX的内容相加,结果在BX中;
将寄存器CX的内容和寄存器AX的内容相加,结果在CX中;

即使是很有经验的技术人员,也不一定能够将以上指令对应的意思记住。

为了克服机器指令难以书写与记忆的缺点,汇编语言就出现了。汇编语言是一种助记符,用来帮助理解和记忆机器指令。上述的指令,就可以写成如下的汇编语言:

mov ax, 3FH
add bx, ax
add cx, ax

对于有点英语基础的人来说,以上三句话相当容易理解,不再赘述。
汇编语言还是很难学的,今日我们就简单的了解汇编语言。先注意一下节点:

  • 汇编语言不区分大小写
  • 汇编语言中的立即数(立即数的概念参看上一篇文章)可以为二进制,十进制,十六进制等

今天暂时知道这么多的汇编语言的基础知识,后面的文章中会逐渐展示汇编语言的各种基础知识以及相关用法。

2、NASM编译器

2.1 、 NASM下载和安装

处理器只能识别机器指令,不能识别汇编语言。所以NASM编译器,就是将相关的汇编语言源程序编译成处理器可以识别的机器指令。

NASM是可免费的使用的开源软件,下面是它的下载地址:点击下载

2.2 、 代码的书写和编译过程

打开NASM编译器的命令行窗口后,显示如下:

在这里插入图片描述

我们可以写完汇编语言源程序后就用它来编译,但是这样太麻烦,本系列文章参考的书籍中,作者写了一个小程序Nasmide,该程序可以编写汇编语言然后可快速编译源程序。

该小程序软件下载地址:
链接:https://pan.baidu.com/s/12zk4ziatB8x0TuJMvH-2vQ
提取码:3t1z

打开这个程序后显示如下:
在这里插入图片描述

空白处可以编写汇编语言。

该软件相当简单,只说一点:配置编译环境。

菜单处有一个“选项”栏目,点开后选择你自己的NASM编译器的目录位置,如下图是我自己的:

在这里插入图片描述

然后以后再编译源程序文件的时候,直接点击“文件”下的“编译本文档”即可。

2.3 、 观察编译后的机器代码

最后再提供一个工具,可以显示编译后的机器代码,HexView。该工具也是本系列文章参考的书籍的作者李忠缩写。

工具下载地址:
链接:https://pan.baidu.com/s/1VtYqRiBrWkcyi0tXP3bsTQ
提取码:nyo4

此工具用起来相当简单,这里不再赘述。

3、总结

本片文章学会

  • 了解汇编语言的作用
  • 下载NASM编译器,并学会使用它来编译汇编语言源程序
  • 学会使用几个补充的工具辅助我们的开发学习过程

学习探讨加:
qq:1126137994
微信:liu1126137994

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

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

相关文章

【软件开发底层知识修炼】一 深入浅出处理器之一 微处理器与微控制器

学习交流加(可免费帮忙下载CSDN资源):个人微信: liu1126137994学习交流资源分享qq群1(已满): 962535112学习交流资源分享qq群2: 780902027 深入浅出处理器这几篇文章可能你觉得对软件…

【软件开发底层知识修炼】二 深入浅出处理器之二 中断的概念与意义

学习交流加 个人qq: 1126137994个人微信: liu1126137994学习交流资源分享qq群: 962535112 上一篇文章我们学习了微处理器与微控制器的区别。点击链接查看上一篇文章的内容:微处理器与微控制器 本篇文章我们学习中断的概念与意义。…

推荐学习-数据结构与算法之美

推荐一个学习资源:数据结构与算法之美。主要包括以下几个学习内容: 20个经典数据结构与算法100个真实项目场景案例文科生都能看懂的算法手绘图解轻松搞定BAT的面试通关秘籍 作者:王争 前谷歌工程师 内容很强。扫描我的二维码买的话&#x…

【软件开发底层知识修炼】三 深入浅出处理器之三 内存管理与内存管理单元(MMU)

学习交流加 个人qq: 1126137994个人微信: liu1126137994学习交流资源分享qq群: 962535112 上一篇文章学习了中断的概念与意义,以及中断的应用-断点调试原理。点击链接复习上一篇文章:中断的概念与意义 本片文章继续学…

hbase思维导图

持续更新中 hbase思维导图 感谢分享1. hbase 概述2. hbase 数据模型3. hbase 架构4. hbase 的读写流程5. hbase 优化1. hbase 概述 2. hbase 数据模型 3. hbase 架构 4. hbase 的读写流程 5. hbase 优化

安卓从入门到进阶推荐学习方法与书籍整理(pdf)

前言:技术书阅读方法论 一.速读一遍(最好在1~2天内完成) 人的大脑记忆力有限,在一天内快速看完一本书会在大脑里留下深刻印象,对于之后复习以及总结都会有特别好的作用。 对于每一章的知识,先阅读标题&…

SharePoint中的权限体系

1.MOSS中的权限结构 MOSS中的权限结构主要有三部分:网站权限,列表权限,个人权限。 网站权限由18种如下图: 列表权限由12种,如下图: 个人权限由三种,如下图: 2.权限级别 上面提供…

MobaXterm_Personal_20.1最简单方式链接阿里云服务器

MobaXterm_Personal_20.1链接购买的阿里云服务器1.登录到阿里云首页2.阿里云首页3. 找到 服务器实例4. 重置密码5. 配置 MobaXterm_Personal_20.15.1 MobaXterm_Personal_20.1介绍6. 输入重置的密码1.登录到阿里云首页 2.阿里云首页 3. 找到 服务器实例 4. 重置密码 5. 配置 Mo…

机器学习和python学习之路精心整理技术书从入门到进阶

“机器学习/深度学习并不需要很多数学基础!”也许你在不同的地方听过不少类似这样的说法。对于鼓励数学基础不好的同学入坑机器学习来说,这句话是挺不错的。不过,机器学习理论是与统计学、概率论、计算机科学、算法等方面交叉的领…

FusionChart完全入门手册8

动画样式类型 FusionCharts做得最好的事情之一就是图表动画序列,这是用户静静乐道的。默认情况下,FusionCharts仅在数据绘制(柱状图、饼图、折线图等)时候使用动画。但是FusionCharts V3不限制你的想象力。 使用动画样式,你可以…

算法与数据结构+一点点ACM从入门到进阶吐血整理推荐书单(珍藏版)

学习交流加(可免费帮忙下载CSDN资源): 个人微信: liu1126137994 学习交流资源分享qq群1(已满): 962535112 学习交流资源分享qq群2: 780902027 前言:技术书阅读方法论…

工作中使用的工具

工作中使用的工具分享一下后续持续更新

【软件开发底层知识修炼】四 深入浅出处理器之四 结合高速缓存以及TLB与虚拟内存

学习交流加 个人qq: 1126137994个人微信: liu1126137994学习交流资源分享qq群: 962535112 文章目录0、回顾1、高速缓存(Cache)的引入2、利用TLB加速地址翻译3、Cache与物理内存是如何映射的3.1、直接映射法&#xff1a…

研发中会使用到的工具

研发中会使用到的工具分享一下后续持续更新

【软件开发底层知识修炼】五 gcc-C语言编译器

学习交流加 个人qq: 1126137994个人微信: liu1126137994学习交流资源分享qq群: 962535112 文章目录1、GCC与gcc2、gcc的幕后工作3、实用的gcc选项3.1、预处理选项-解决宏错误3.2、-S参数-辅助编写汇编程序的好方法3.3、获取系统头文件路径3.4…

思维模型分享

思维模型1.思维建模1.1 模型的用途1.2构建模型的3种方法1.3多样性预测定理1.4分类模型1.5 变差模型1.5.1 解释变差的百分比1.6 模型误差分解定理1.7 多模型思维1.8 对人类行为建模1.8.1 理性行为者模式2.模型思维2.1 正态分布2.2中心极限定理2.2.1 平方根法则2.2.2 检验显著性2…

在工程中最常用的 vim使用技巧

学习交流加(可免费帮忙下载CSDN资源):个人微信: liu1126137994学习交流资源分享qq群1(已满): 962535112学习交流资源分享qq群2: 780902027 文章目录1、vim编辑常用快捷键2、文件索引…

动态规划过程

动态规划过程应用背包问题:分享一下 有一个背包,容量是4磅,现有如下产品 1)要求达到的目标为装入的背包的总价值最大,并且要求重量不能超出 2) 要求转入的物品不能重复 思路分析:算法其实是模型建立的过程 …

【剑指offer - C++/Java】5、用两个栈实现队列

学习交流加 个人qq: 1126137994个人微信: liu1126137994学习交流资源分享qq群: 962535112 牛客网题目链接:用两个栈实现队列 文章目录1、题目分析2、代码Java代码:C代码3、总结题目描述: 用两个栈来实现一…