0
点赞
收藏
分享

微信扫一扫

1607_PC汇编语言_汇编语言简介


​​GreyZhang/g_unix: some basic learning about unix operating system. (github.com)​​

         刚刚看了一个小章节,感觉是对8086的汇编做了一个简单的介绍。当然,这里面也有各种机器汇编通用的属性。

1607_PC汇编语言_汇编语言简介_linux

1. 等价符号关联的两个表达其实是等价的,03 C3是机器码,而下面的add eax, ebx则是对等的汇编代码。

2. 我们常见的汇编操作指令的名字其实更该叫做汇编助记符。

3. 在编译器套件中经常会遇到汇编器的概念,什么是汇编器呢?就是把文本的汇编码转换成机器码的一个软件。这个工具要比编译器简单得多,高级语言的编译器设计看起来是一门很深的学问了。

1607_PC汇编语言_汇编语言简介_操作数_02

1. 操作数的几种类型:寄存器、存储、立即数(存储在代码段)、隐式的操作数。

2. mov的操作数不可以是存储类型。

3. 寄存器之间的信息搬运也有一些限制行为,之前上大学的时候学习微机原理(我们是叫做计算机硬件)的时候,没少因此而糊涂。但是现在回头想想,那时候的时光荒废的可惜!

1607_PC汇编语言_汇编语言简介_OS_03

1. 隐式操作数的一个典型代表就是自增或者自减。

2. 这里又给出来了一个新的概念——指令。在此之前,我可能把助记符和指令全都统称为指令了,其实两者还是不同的。那么什么是指令呢?简单来说,就是汇编器认识但是没有机器码与之直接对应的命令。

1607_PC汇编语言_汇编语言简介_操作数_04

1. 一个典型指令就是定义,这个类似C语言中的#define。至少,这种方式是可以增加软件的可读性的。

2. 另外就是数据定义,这个有多种变型,按照字节、字、双字等不同的方式来进行定义。还可以定义空间而不定义数值。

1607_PC汇编语言_汇编语言简介_寄存器_05

1. 从这里的表达方式看,数据定义指令的语法还是很简洁的。而且可以支持类似数组、字符串这样的数据定义。

2. times提供了重复操作的可能。

3. 标签等同于地址或者C语言中只针对的概念。

4. 从存储中往寄存器中读取word如何实现,这里没看到。但是即使是没有,两个字节拼接或者从双字中截取应该都是可能的。

5. 汇编中不会限制地址所存储的数据类型或者大小,这些都需要程序员自己来保证正确性。

1607_PC汇编语言_汇编语言简介_linux_06

         汇编可能会存在与C混用的情况,这样汇编可以调用C语言中的一些库文件。但是,有些函数的调用会出现不好处理的情况,NASM中,作者为此提供了一些打印以及读取的函数方便汇编级别的调用。

1607_PC汇编语言_汇编语言简介_unix_07

         调试方面,提供了寄存器、存储、stack以及数学协处理器寄存器内容导出的功能。一般来说,导致是导出到标准输出,比如说显示器。

         以上是一个汇编语言的简单介绍,涉及到了一点工具。现在看上去,的确是没有大学时候看到那么害怕了。或许,没了考试的压力并且已经服务于乐趣而让我有了这样的感受吧!

举报

相关推荐

0 条评论