- 机器语言:
由于计算机内部职能接受二进制代码,因此,用二进制代码0和1描述的指令称为机器指令,全部机器指令的集合构成计算机的机器语言。
机器语言属于低级语言。
编出的程序全是些0和1的指令代码,直观性差,还容易出错。除了计算机生产厂家的专业人员外,绝大多数的程序员已经不再去学习机器语言了。
机器语言是微处理器理解和使用的,尽管机器语言好像是很复杂的,然而它是有规律的。
存在这多至100000种机器语言的指令。这意味着不能把这些种类全部列出来。
- 指令部份的示例:
- 0000 代表 加载(LOAD)
- 0001 代表 存储(STORE)
- ...
- 暂存器部份的示例
- 0000 代表暂存器 A
- 0001 代表暂存器 B
- ...
- 存储器部份的示例
- 000000000000 代表地址为 0 的存储器
- 000000000001 代表地址为 1 的存储器
- 000000010000 代表地址为 16 的存储器
- 100000000000 代表地址为 2^11 的存储器
- 集成示例
- 0000,0000,000000010000 代表 LOAD A, 16
-
- 0000,0001,000000000001 代表 LOAD B, 1
-
- 0001,0001,000000010000 代表 STORE B, 16
-
- 0001,0001,000000000001 代表 STORE B, 1[1]
-
- 汇编语言:
汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。
它同样需要编程者将每一步具体的操作用命令的形式写出来。汇编程序的每一句指令只能对应实际操作过程中的一个很细微的动作。例如移动、
自增,因此汇编源程序一般比较冗长、复杂、容易出错、而且使用汇编语言编程需要有更多的计算机专业知识。
但汇编语言的优点也是显而意见的,用汇编语言所能完成的操作不是一般高级语言所能够实现,
而且源程序汇编生成的可执行文件不仅比较小,而且执行速度很快。
- 1 hello.asm ;
- 2 section .data ; 数据段声明
- 3 msg db "Hello, world!", 0xA ; 要输出的字符串
- 4 len equ $ - msg ; 字串长度
- 5 section .text ; 代码段声明
- 6 global _start ; 指定入口函数
- 7 _start: ; 在屏幕上显示一个字符串
- 8 mov edx, len ; 参数三:字符串长度
- 9 mov ecx, msg ; 参数二:要显示的字符串
- 10 mov ebx, 1 ; 参数一:文件描述符(stdout)
- 11 mov eax, 4 ; 系统调用号(sys_write)
- 12 int 0x80 ; 调用内核功能
- 13 ; 退出程序
- 14 mov ebx, 0 ; 参数一:退出代码
- 15 mov eax, 1 ; 系统调用号(sys_exit)
- 16 int 0x80 ; 调用内核功能
-