计算机系统由硬件和软件两部分组成
汇编语言程序设计 机器语言是计算机硬件能够直接识别和运行的指令的集合,是二进制码组成的指令,直接用机器指令设计程序是非常困难的事情,是程序设计人员难以承担的工作。 汇编语言大体上是对计算机机器语言的符号化处理的结果,再增加一些为方便程序设计而实现的扩展功能。 汇编语言至少有 2 大优点。第一、可以用英文单词或其缩写形式替代二进制的指令代码,更容易记忆和理解;第二还可以选用英文单词来表示程序中的数据(常量、变量和语句标号),把为这些数据分配存储单元的任务留给汇编程序去处理,这样的语言就达到了实用的最基本的标准。 若在此基础上,在支持程序的不同结构特性(如循环和重复执行等结构,子程序所用哑变元替换为真实参数)等方面提供必要的支持,用此语言设计程序就更为方便。 汇编语言程序经汇编后翻译为机器语言程序方可运行。 高级语言又称算法语言,它的实现思路,不再是过分地“靠拢”计算机硬件的指令系统,而是着重面向解决实际问题所用的算法,更多的是是为方便程序设计人员写出自己解决问题的处理方案和解题过程的程序。目前常用的高级语言有BASIC、C、C++、,PASCAL、JAVA、PROLOG、VHDL等几百种。用这些语言设计出来的程序,通常需要经过一个叫做编译程序的软件先编译成机器语言程序,或者首先编译成汇编程序后,再经过汇编操作后得到机器语言程序,才能在计算机的硬件系统上予以执行;也可以由一个叫做解释执行程序的软件,逐条取来相应高级语言程序的每个语句并直接控制其完成执行过程,而不是把整个程序编译为机器语言程序之后再一起交给硬件系统加以执行。 用指令写程序的示意性的例子和指令的内容 IN 寄存器1, 输入设备1 ;从输入设备1 读一个数到 寄存器1 IN 寄存器2, 输入设备4 ;从输入设备4 读一个数到寄存器2 ADD 寄存器1, 寄存器2 ;两个寄存器内容相加,结果存回寄存器1 STORE 内存地址m, 寄存器1 ; 把寄存器1 的内容写入地址为m 的内存单元 MOVE 寄存器3, 寄存器2 ;传送寄存器2的内容到寄存器3 OUT 输出设备2, 寄存器3 ;输出寄存器3 的内容到输出设备2 JUMP 内存地址n ;转去执行地址为 n 的内存单元中的指令 从前面 7 条指令构成的小程序可以看到,每一条指令必须给出它需要完成的功能,通常用几位指令操作码表示;可能还需要给出用到的累计器,通常用几位寄存器编码表示,或者某一台输入、输出设备,通常用几位设备端口地址表示,或者某一个内存储器单元的地址,表示起来略显复杂,与给出地址的方式有关,通常称为寻址方式,放到后面章节另行说明。 TEC-2000 16位机基本指令系统 TEC-2000 16位机基本指令系统 教学机指令中用到的寻址方式 寄存器寻址, 用到的数据在累加器中 例如:ADD R0, R1 SHR R7 MVRD R2, 2000 寄存器间接寻址,用到的内存单元地址在累加器中 例如:LDRR R3, [R1] STRR [R2], R15 立即数寻址, 用到的数据直接给出在指令的第二个字中 例如:MVRD R2, 2000 直接地址, 用到的地址直接给出在指令的第二个字中 例如:JMPA 2100 CALA 0057 相对寻址, PC 内容和相对偏移量之和作为转移地址 例如:JR 2000 JRNC 2050 变址寻址, 变址寄存器内容和偏移量之和作为地址 例如: LDRX R2, 100 [R10] STRX 121 [R12], R3 堆栈寻址,