汇编语言自学笔记

记录一下学习过程,以后遗忘了也方便复习。
学习方法:b站视频 + 汇编语言教材(王爽第3版),视频中用到的工具在 百度网盘 (提取码: 7evz)中。


预备 1 相关软件的安装 主要是用到了DOSbox和Vim,工具都在网盘中。
配置DOSbox

  1. 在D盘中新建一个asm的文件夹,以后在这个文件夹中建立文件练习;
  2. 将网盘中的debug.exe放在asm文件夹下;
  3. 运行DOSbox安装程序(在网盘中),一直next即可;
  4. 【汇编语言自学笔记】

    找到安装目录C:\Users\Administrator\AppData\Local\DOSBox,编辑配置文件,在最下面添加mount c: d:\asm 和 c:,如图: 汇编语言自学笔记
    文章图片
    这样每次开启软件就可以自动运行命令进入目录,不用手动输入了;
  5. 运行DOSbox,键入debug,再键入d,会有一些东西显示,即成功。
配置Vim
  1. 安装Vim,一直next就好;
  2. 找到安装目录,C:\Program Files (x86)\Vim,编辑配置文件,加入
color evening
set nu
这样就可以调成黑色背景并显示行号了。
编译小练习
  1. 将网盘中的LINK.exe,MASM.exe,temp.txt,temp1.txt拷贝至asm文件夹内,并新建t1.asm把temp.txt中的内容复制进去;
  2. 进入DOSbox配置文件,在底部加入
masm t1;
link t1;
  1. 打开DOSbox,即可自动完成编译和连接,asm文件夹内会出出现t1.obj和t1.exe;
  2. 在DOSbox中键入t1,发现屏幕中出现紫色小区域,表示exe运行成功。

汇编语言自学笔记
文章图片


2 关于编码 编码是人类表示世界的方式
希腊人是如何用地图表示世界地位置的?
用纬度和经度表示。
人类是如何表示长度的?
有各种单位,如米、厘米、英寸.......
人类是如何表示时间的?
年、月、日、时、分、秒.......
人类是如何表示天上的星星的?
有各种星座,金牛座、处女座、猎户座,即用图形表示星星之间的相对位置。
以上各种,都是一种编码系统,都是人类对世界的表示。
又如我们是如何表示我们说话时所发出的声波的?拼音字母a、o、e就是对我们发出的声波的一种表示,对于英语来讲,英语是由音节组成并与读音相对应,也是一种对人类发出声波的一种编码。
再一个例子,笛卡尔坐标系,本质上也是一套编码/表示系统,用于表示坐标系中的任意一点。
世界与计算与计算要素
人类为了观测世界,用编码对世界进行表示,用数学对世界进行描述(计算),
即 找到计算要素→对计算要素进行表示→计算
一个简单的例子:
问:你给了我一个苹果,然后又给了我两个苹果,请问我得到了几个苹果?
解:①找到其中的计算要素:一个苹果、两个苹果;②用逻辑符号表示计算要素之间的关系;③进行计算,即1+2=3。
总结一下,就是用逻辑表示系统,将计算要素与计算要素之间的逻辑关系表示出来进行计算,所有的学科皆是如此。
那就有人问了,你说所有的学科皆是如此,那历史呢,历史也需要这个样吗?
这就要拓宽对计算的理解:举一个历史中的例子,比如说一场战役,双方需要把天气、地形以及敌军情况这些计算要素找出来,然后据此制定作战计划进行计算。再比如说心理测试,就是通过收集计算要素,再用计算推断出受测者的心理状态。
这一切都是可以计算的。
计算要素与表示系统
还是上面的苹果例子。解决这个问题我们可以用阿拉伯数字,也可以用算盘,甚至可以结绳计数,当然效率是有差别的,即一套好的表示系统,可以更好的表示出计算要素以及计算要素与计算要素之间的逻辑关系。
计算机编程语言是一套什么系统?
答案很明显,是一套表示系统。
英语是一种语言,汉语也是一种语言,语言是用来互相交流的,我们之间正是由于采用了同一套表示/编码系统,才能理解彼此的意思。
计算机编程语言也是用来人与计算机相互交流的。
python、java、c++是高级编程语言,而汇编语言是低级编程语言。
汇编语言虽然使用不便,但是它提供了一种观测手段,可以观测到很多高级语言无法观测到的东西。
3 二进制、十进制与十六进制 这个就记录几个要点。
二进制由一和零组成,1代表有,0代表无。
二进制与十进制的快速转换:比如十进制数35,可以拆成32+2+1,把相应的二进制位置为1,得到二进制数10011。
十六进制与十进制快速转换:比如十进制数83可以表示为16×5 + 3,表示成十六进制为53H(H是后缀,表示该数为十六进制hex),注意在十六进制中,1有0无规则失效。
十六进制与二进制快速转换:用4位二进制代表一位十六进制即可,比如2A,2用二进制表示就是0010,A用二进制表示就是1010,所以2A用二进制表示为00101010。
反过来思考
4位二进制数最高表示15,即1111。根据1有0无的规则,转换时剪掉0所对应的数就能得到十进制数。比如,1101,代表第二位缺失,那它就表示15-2=13
第一章 基础知识

    推荐阅读