机器语言是用计算机的,基本机器语言

机器语言(machine language)是一种指令集的体系。这种指令集,称机器码(machine code),是电脑的CPU可直接解读的数据。

中文名

基本机器语言

外文名

machine language

定    义

指令集的体系数    据

二进制码

系    统

计算机

应用学科

计算机原理

基本机器语言概述

编辑

语音

计算机能够识别并执行的二进制代码固定在计算机硬件中。每种处理器都有自己专用的机器指令集合。CPU的电子器件能够识别并执行这些指令。由于指令数量有限,所以在设计处理器时,设计师首先列出所有指令,给每个指令分配一个二进制代码,用来表示它们,然后设计硬件来完成该指令的功能。起初,人们只能直接用这些二进制代码编写程序控制计算机,这些二进制代码称为机器语言。计算机能够执行用机器语言编写的程序。

使用机器语言的程序员必须记住每组二进制数对应的是什么指令。

每条机器语言指令只能执行一个非常小的任务。在机器语言中,处理过程中每个微小步骤都必须有明确的编码。即使是求两个数的和,也需要用3条二进制指令来编写。

例如,在8086/8088兼容机上,用机器语言完成求5+6的程序代码如下。

10110000 00000101;将5放进累加器acc中

00101100 00000110;累加器的值与6相加,结果仍然在累加器中

11110100;停机结束

将它输入以8086微处理器为CPU的计算机中,就能直接执行它。机器语言是唯一不必经过翻译而能直接识别的语言,它与具体的计算机有关。不同的计算机识别的机器语言不同,程序员不仅要非常熟悉硬件的组成及其指令系统,还必须熟记计算机的指令代码。

用机器语言编写的程序难以阅读和理解,程序员必须记住复杂的指令系统,书写、辨认冗长的二进制代码,很难在程序编写方法和算法上下功夫,这极大地限制了程序的质量和应用范围。而且每个程序只能在特定类型的计算机上运行,要想在其他计算机上运行,必须重新编写,造成了重复工作。[1]

基本机器语言特点

编辑

语音

机器语言有如下特点,

1.机器语言与计算机硬件结构密切相关

不同的计算机硬件结构有着不同的机器语言,在以CPU为核心的计算机硬件结构中,不同CPU有着不同的机器语言,机器语言与计算机硬件结构密切相关。

2.二进制数表示

机器语言中,指令操作码、存放操作数的存储单元的地址、操作数等都用二进制数表示,CPU将以程序计数器的值为地址访问存储器读到的内容作为指令,以指令中给出的操作数地址。或以地址寄存器B的值为地址访问存储器读到的内容作为操作数。由CPU负责区分指令和操作数,表示指令和操作数的二进制数本身是无法区分二者的。

3.设计程序时需同步安排指令和操作数在存储器中的存放位置

由于运算指令需要指定存放另一个操作数的存储单元的地址,控制指令需要指定不顺序执行指令的情况下,存放另一段程序或循环体中第一条指令的存储单元的地址,因此,设计程序过程也是安排指令和操作数在存储器中存放位置的过程。

4.每一条指令只能完成简单运算功能

机器语言的每一条指令只能完成简单的运算功能。用机器语言编写完成复杂运算过程的程序是比较困难的,一个完成只包含四则运算表达式的运算过程的机器语言程序都是比较复杂的。可以尝试用模型机机器指令编写完成表达式:7*8+(21—1 7)*5一(7+21)÷6运算过程的机器语言程序。[2]

基本机器语言局限性

编辑

语音

机器语言的局限性很明显:机器指令是用二进制编码的,不容易记忆和阅读。为了克服这种局限性,人们引入一种替代方法:用助记符来代替操作码,用符号代替地址。助记符是缩写的英文字符,与操作码的功能相对应;表示地址的符号即符号地址,由用户根据需要来定。这种由助记符和符号组成的指令集合称为汇编语言。

汇编语言程序必须经过翻译,转变为机器语言程序,才能被计算机执行。人们把完成这一翻译任务的程序称为汇编程序,它是系统软件,一般是和计算机设备一起配置的。把利用汇编程序将汇编语言程序翻译为机器语言程序的过程称为汇编。把汇编语言程序称源代码,把翻译后的机器语言程序称为目标代码。

机器语言的另一个局限性是对计算机系统结构的依赖,在一种机器上开发的机器语言程序在另一种机器上一般是不能执行的。汇编语言克服了这个局限性,因为汇编程序是和计算机设备一起配置的系统软件,它可以把汇编语言程序翻译为相应的机器语言程序。

机器语言还有一个局限性吗,机器指令与硬件结构相联,它对数据的操作很简单,等同于最简单的机械动作,这使得对一个像求和一样的简单汁算,都需要多条机器指令才能完成。随着算法越来越复杂,用这种简单的机器指令来描述算法肯定越来越困难,而且阅读、修改和维护也越来越不容易。这个矛盾在汇编语言中依然存在,因为汇编指令不过是符号化的机器指令而已。要有效地解决这种矛盾,就要超越计算机硬件结构,建立面向算法处理对象的程序语言。于是走进高级语言。[3]

参考资料

1.

黄贤英,崔少国,曹琼编著,计算机导论,清华大学出版社,2015.11,第129页

2.

沈鑫剡,俞海英,魏涛,李兴德编著,计算机基础与计算思维,清华大学出版社,2014.09,117-118

3.

王立柱,王春枝主编;欧阳勇,叶志伟副主编,计算机科学及编程导论,清华大学出版社,2015.09,8-9

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
是的,编译器的主要作用是将高级计算机语言(如C、C++、Java等)翻译成机器语言,以便计算机能够理解和执行。编译器将源代码作为输入,经过一系列的词法分析、语法分析、语义分析和代码生成等过程,生成等效的目标代码(通常是机器语言的二进制代码)。 编译器的工作流程一般包括以下几个步骤: 1. 词法分析:将源代码分割成一个个的词法单元(token),如关键字、标识符、运算符等。 2. 语法分析:根据语法规则,将词法单元组合成语法树(parse tree)或抽象语法树(abstract syntax tree),用于表示程序的结构和语义。 3. 语义分析:对语法树进行检查,确保程序符合语言的语义规则,如类型检查、函数调用检查等。 4. 中间代码生成:根据语法树生成中间代码,这是一种抽象的表示形式,可以是类似于汇编语言的低级代码。 5. 优化:对中间代码进行优化,改善程序性能和资源利用情况,如删除冗余代码、提取公共子表达式等。 6. 目标代码生成:将优化后的中间代码转换为目标机器的机器语言表示,可以是二进制代码或者特定的汇编语言代码。 编译器的输出(目标代码)可以直接在目标机器上执行,从而实现程序的运行。编译器的工作帮助程序员将高级语言编写的程序转化为机器语言,提高了开发效率和代码的可移植性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值