分享到新浪微博 分享到QQ空间 打印

汇编语言学习笔记

汇编语言学习笔记

好久没来ptb了,几年不见,进来之后一时之间也不知道要发些什么贴子好,正巧最近有学习编程的心思,所以决定在编程乐园开个贴子,不仅能赚宠物奶粉钱,还可以造福大众增加自己的学习动力,何乐而不为?嘛,在此之前我其实也有一定程度地接触Fortran,VB和批处理的程序编写,这次想要更深刻地接触一下程序相关的世界,所以选择汇编语言作为我正式学习的第一门编程语言,反正都是兴趣使然我也懒得管实用不实用的问题了,贴子会不定期更新,嗯,看我的学习进度而定吧。

炽天使之翼为光辉 光辉为揭露罪恶的纯白 纯白是净化的证据
证据是行动的结果
结果是未来 未来是时间 时间是一律 一律是全部
创造全部的是过去
过去是原因 原因是一个 一个是罪 罪是人
人一害怕惩罚 害怕是罪恶 罪恶在自己体内
自己体内有必须唾弃之物
凭借炽天使之翼揭露自己体内的罪恶 将他们全部排除!

TOP

在学习汇编语言之前首先要了解一下机械语言,所谓的机械语言就是机械指令的集合,用语言这个词真的很妙啊,听起来有种镰仓时期的阴阳师安倍晴明用咒语驱动识神的感觉。

炽天使之翼为光辉 光辉为揭露罪恶的纯白 纯白是净化的证据
证据是行动的结果
结果是未来 未来是时间 时间是一律 一律是全部
创造全部的是过去
过去是原因 原因是一个 一个是罪 罪是人
人一害怕惩罚 害怕是罪恶 罪恶在自己体内
自己体内有必须唾弃之物
凭借炽天使之翼揭露自己体内的罪恶 将他们全部排除!

TOP

早期的程序设计使用的是机械语言,程序员把0、1数字编程的程序代码打在纸带或卡片上,1打孔,0不打孔,再把程序通过纸带机和卡片机输入计算机,进行运算。
动画电影《尸者帝国》所使用的就是这种原始的机械计算机。

炽天使之翼为光辉 光辉为揭露罪恶的纯白 纯白是净化的证据
证据是行动的结果
结果是未来 未来是时间 时间是一律 一律是全部
创造全部的是过去
过去是原因 原因是一个 一个是罪 罪是人
人一害怕惩罚 害怕是罪恶 罪恶在自己体内
自己体内有必须唾弃之物
凭借炽天使之翼揭露自己体内的罪恶 将他们全部排除!

TOP

应用8086cpu完成运算S=768+12288-1280
机械代码如下:
101110000000000000000011
000001010000000000110000
001011010000000000000101
光是这么一个简单的算式就有那么一长串二进制的数字,简直让人眼花,如果是更长一点的代码,真的是会把人逼疯的吧。

炽天使之翼为光辉 光辉为揭露罪恶的纯白 纯白是净化的证据
证据是行动的结果
结果是未来 未来是时间 时间是一律 一律是全部
创造全部的是过去
过去是原因 原因是一个 一个是罪 罪是人
人一害怕惩罚 害怕是罪恶 罪恶在自己体内
自己体内有必须唾弃之物
凭借炽天使之翼揭露自己体内的罪恶 将他们全部排除!

TOP

所以,为了解决机械语言的蛋疼之处,应运而生的就是汇编语言。
汇编语言的主体是汇编指令。汇编指令和机械语言的差别在于指令的表达方法上。汇编指令是机械语言便于记忆和书写的格式,也就是所谓的简化写法?

炽天使之翼为光辉 光辉为揭露罪恶的纯白 纯白是净化的证据
证据是行动的结果
结果是未来 未来是时间 时间是一律 一律是全部
创造全部的是过去
过去是原因 原因是一个 一个是罪 罪是人
人一害怕惩罚 害怕是罪恶 罪恶在自己体内
自己体内有必须唾弃之物
凭借炽天使之翼揭露自己体内的罪恶 将他们全部排除!

TOP

书上举了一个例子,指令1000100111011000表示把寄存器BX的内容送到AX中,汇编指令把它写成了mov ax,bx。
mov代表move ax,bx则代表两个寄存器。也就是说,是把机械语言代表的操作缩写标记,建立一一对应的映射关系。

炽天使之翼为光辉 光辉为揭露罪恶的纯白 纯白是净化的证据
证据是行动的结果
结果是未来 未来是时间 时间是一律 一律是全部
创造全部的是过去
过去是原因 原因是一个 一个是罪 罪是人
人一害怕惩罚 害怕是罪恶 罪恶在自己体内
自己体内有必须唾弃之物
凭借炽天使之翼揭露自己体内的罪恶 将他们全部排除!

TOP

那么,当我们编程的时候,只需要写下那些直观的,代表操作缩写的汇编语言,然后采用编译器把它转换成机器码,就会变得省事很多。

炽天使之翼为光辉 光辉为揭露罪恶的纯白 纯白是净化的证据
证据是行动的结果
结果是未来 未来是时间 时间是一律 一律是全部
创造全部的是过去
过去是原因 原因是一个 一个是罪 罪是人
人一害怕惩罚 害怕是罪恶 罪恶在自己体内
自己体内有必须唾弃之物
凭借炽天使之翼揭露自己体内的罪恶 将他们全部排除!

TOP

当然汇编语言反战到今天,并不是只有汇编指令这种机器码的助记符。
汇编语言大致分为三类。
第一类是汇编指令
第二类是伪指令,没有对应的机器码,由编译器执行,计算机不执行(所以这种指令是干嘛用的?不明白,之后再说吧)
第三类是其他符号如+、-、*、/等,由编译器识别,没有对应的机器码。
emmmmm
所以说主要有用的部分还是汇编指令吧?

炽天使之翼为光辉 光辉为揭露罪恶的纯白 纯白是净化的证据
证据是行动的结果
结果是未来 未来是时间 时间是一律 一律是全部
创造全部的是过去
过去是原因 原因是一个 一个是罪 罪是人
人一害怕惩罚 害怕是罪恶 罪恶在自己体内
自己体内有必须唾弃之物
凭借炽天使之翼揭露自己体内的罪恶 将他们全部排除!

TOP

要学习汇编语言还需要了解一下存储器。
所谓的存储器就是内存,负责向cpu提供指令和数据然后,cpu才能进行运作和计算。
内存和磁盘不同,磁盘上的数据如果不读到内存里就不能被cpu使用。
emmm,看来还需要了解一下cpu和存储器的工作方式。

炽天使之翼为光辉 光辉为揭露罪恶的纯白 纯白是净化的证据
证据是行动的结果
结果是未来 未来是时间 时间是一律 一律是全部
创造全部的是过去
过去是原因 原因是一个 一个是罪 罪是人
人一害怕惩罚 害怕是罪恶 罪恶在自己体内
自己体内有必须唾弃之物
凭借炽天使之翼揭露自己体内的罪恶 将他们全部排除!

TOP

指令和数据是应用上的概念,在内存或磁盘上,指令和数据没有任何区别,都是二进制信息。
所以1000100111011000可以看成大小89D8H的数据,也可以看成是指令mov ax,bx。
嘛,1000100111011000这串二进制数字转换成十六进制是89D8,而H代表Hex,也就是十六进制英语的简写。

炽天使之翼为光辉 光辉为揭露罪恶的纯白 纯白是净化的证据
证据是行动的结果
结果是未来 未来是时间 时间是一律 一律是全部
创造全部的是过去
过去是原因 原因是一个 一个是罪 罪是人
人一害怕惩罚 害怕是罪恶 罪恶在自己体内
自己体内有必须唾弃之物
凭借炽天使之翼揭露自己体内的罪恶 将他们全部排除!

TOP