计算机工作原理基础(2):高级语言、汇编指令、机器码"
一、高级语言程序、汇编程序与机器码!
早期的计算机只有机器语言(用 0、1 代码表示的语言),用户必须用二进制代码(0、
1)来编写程序(即机器语言程序)。用机器码编写程序难度很大,% 操作过程也极容易出错。%
在 20 世纪 50 年代,人们提出了符号式的程序设计语言,即汇编语言。汇编语言用人
们可直观理解的符号 ADD(加)、SUB(减)、Jump(跳转)等来表示计算机中要执行的操
作,使程序员可以不再使用繁杂而又易错的二进制代码来编写程序。例如,下述为两句汇编
程序代码,其中 lds%%r24,%0x0060 表示将 SRAM 中地址为 0x0060 处的数值导出至寄存器
R24 中,ldi%%r22,%0x14 表示将立即数常量 0x14 写入至寄存器 R22 中。%
lds% % r24,%0x0060%
ldi% % r22,%0x14%
汇编程序比机器码更直观,更容易编写,也更容易阅读。然而,计算机并不能直接执行汇编
程序,还是需通过一种编译方式,将其转换为机器码。%
尽管汇编编程较机器码编程更直观,也更容易,但使用汇编语言编写程序时,程序员需
对计算机内部的硬件结构和指令系统非常熟悉,例如,编程过程中,程序员需清楚地知道
CPU 当前有哪些空闲的寄存器可供使用,一个变量在 SRAM 中的存储地址为多少等。除非
程序员经过专门的训练,否则是无法完成汇编程序的编写工作。因此,从 20 世纪 60 年代
开始,出现了各种面向问题的高级语言,如 C 语言等。这类高级语言对问题的描述十分接近
人们的习惯,并且还具有较强的通用性。程序员完全不必了解实际计算机的内部硬件结构和
指令系统,只要掌握这类高级语言的语法和语义,便可直接用这种高级语言来编程,这给程
序员带来了极大的方便。%
相较于汇编语言,C 语言屏蔽了计算机底层的硬件细节,因此编程非常简单。然而,C
语言作为一种高级语言,其实质是用英语和数学语言来表达一个问题,因此,编程的难度要
远低于汇编编程和机器码编程。下述 为 一个 C 语言实例,可看出,C 语言的语法是用英语来
表述,而计算过程是用数学来表述的,例如“include”在英语中表示“包含”;“std”是
英语中“standard”的缩写,表示标准;“io”是英语中“input/output”的缩写,表示输入
输出;“main”在英语中表示“主要的”,也 即 主 函 数 ; “int”表示“integer”整数;“char”
表示“character”字符;if 表示“如果”,else 表示“其他”;return 表示“返回”等。%
#include%“stdio.h”%
char%a;%
int%main(void)%
{%
% a%=%20;%
% if(a%>%16)% % return%1;%
% else% % % return%0;%
}%