机器语言是什么
机器语言(machinelanguage)是一种指令集的体系。这种指令集,称机器码(machinecode),是电脑的CPU可直接解读的数据。机器码有时也被称为原生码(NativeCode),这个名词比较强调某种编程语言或库,它与运行平台相关的部份。
机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。它是计算机的设计者通过计算机的硬件结构赋予计算机的操作功能。
一种cpu的指令系统,也称cpu的机器语言。它是该cpu可以识别的一组由1和0序列构成的指令码。用机器语言编程序,就是从实用的cpu的指令系统中挑选合适的指令,组成一个指令系列。
一条指令就是机器语言的一个语句,它是一组有意义的二进制代码,指令的基本格式如,操作码字段和地址码字段,其中操作码指明了指令的操作性质及功能,地址码则给出了操作数或操作数的地址。
用机器语言编写程序,编程人员要首先熟记所用计算机的全部指令代码和代码的涵义。手编程序时,程序员得自己处理每条指令和每一数据的存储分配和输入输出,还得记住编程过程中每步所使用的工作单元处在何种状态。这是一件十分繁琐的工作。编写程序花费的时间往往是实际运行时间的几十倍或几百倍。而且,编出的程序全是些0和1的指令代码,直观性差,还容易出错。除了计算机生产厂家的专业人员外,绝大多数的程序员已经不再去学习机器语言了。
机器语言是微处理器理解和使用的,用于控制它的操作二进制代码。
8086到Pentium的机器语言指令长度可以从1字节到13字节。
尽管机器语言好像是很复杂的,然而它是有规律的。
存在着多至100000种机器语言的指令。这意味着不能把这些种类全部列出来。
范例:
1、指令部份的范例
0000代表加载(LOAD)
0001代表储存(SET)
。。。
2、暂存器部份的范例
0000代表暂存器A
0001代表暂存器B
。。。
3、内存部份的范例
000000000000代表位址为0的内存
000000000001代表位址为1的内存
000000001000代表位址为16的内存
100000000000代表位址为2^11的内存
4、集成范例
0000,0000,000000001000代表LOADA,16
0000,0000,000000000001代表LOADB,1
0000,0001,000000001000代表STOREB,16
0000,0001,000000000001代表STOREB,1
机器语言缺点
1.大量繁杂琐碎的细节牵制着程序员,使他们不可能有更多的时间和精力去从事创造性的劳动,执行对他们来说更为重要的任务。如确保程序的正确性、高效性。
2.程序员既要驾驭程序设计的全局又要深入每一个局部直到实现的细节,即使智力超群的程序员也常常会顾此失彼,屡出差错,因而所编出的程序可靠性差,且开发周期长。
3.由于用机器语言进行程序设计的思维和表达方式与人们的习惯大相径庭,只有经过较长时间职业训练的程序员才能胜任,使得程序设计曲高和寡。
4.因为它的书面形式全是“密”码,所以可读性差,不便于交流与合作。
5.因为它严重地依赖于具体的计算机,所以可移植性差,重用性差。
这些弊端造成当时的计算机应用未能迅速得到推广。
机器语言指令概述
用汇编语言指令编写的汇编语言程序输入计算机后,计算机并不能识别和执行,必须由机器提供的汇编程序将它翻译成由机器语言指令组成的程序,才能由计算机执行。通常这种翻译工作不必由人来干预。本节只简单介绍一下机器语言指令的构成,以便读者在实际应用(实时控制)中也可完成类似的转换工作。
8086/8088的机器语言指令为可变字节的指令,一条指令可以由1~7个字节组成,因此指令格式比较灵活。其格式如下所示:
其中,opcode为操作码字段;d指示操作方向;S表示符号扩展;W指示操作数宽度;mod用来区分是寄存器寻址还是存储器寻址;reg寄存器编码;r/m寄存器或存储器;disp-low位移量低位;disp-high位移量高位;data-low立即数低位;data-high立即数高位。
格式中给出了1~6个字节的情形。如果指令中显示指定段跨越前缀,则在机器语言指令中使用放在该指令之前的一个字节来表示,其格式如下所示:
其中,001和110均为段前缀标志;SEG指定四个段寄存器中的一个,00为ES,01为CS,10为SS,11为DS
1、操作码的机器语言表示
操作码一般占用第一个字节的7~2位,但有些指令的操作码占用第一个字节的7~1位,甚至还可能占用第二个字节的5~3位作为扩展操作码。
在多数操作码中,常使用某些位来指示某些信息。例如第一个字节中的W位用来指示该指令是对字节(W=1)还是对字节(W=0)进行操作。在双操作数指令中,d位指定寄存器是用于目的操作数(d=1)还是用于源操作数(d=0)。另外,在立即寻址方式的指令中,S位表示符号扩展,若立即数为8位,但要求扩展成16位数时,S位为1。S位和W位在立即寻址方式指令中联用表示:
2、寻址方式的机器语言表示
指令中除操作码占用的位数外,其它位则用来表示操作数或操作数的地址。8086/8088用一个寻址方式字节来表示操作数的寻址方式,它通常是机器指令的第二个字节。
第二个字节中的reg字段表示寻址方式为寄存器方式,在双操作数指令的情况下,由reg和第一个字节中的W位联合指定一个寄存器作为两个操作数中的一个操作数。Reg与W位联合指定的寄存器如表6-4-1所示。
第二个字节中的mod字段与r/m字段相结合以确定另一个操作数的寻址方式。其中:
Mod=00时为无位移量字节的存储器寻址方式。由r/m字段指定确切的寻址方式,其中当r/m=110时指定为直接寻址方式,此时指令中跟有16位位移量D16,用来指出操作数的偏移地址。
Mod=01时为带一个位移量字节的存储器寻址方式。由r/m字段指定确切的寻址方式。其中位移量字节为一个带符号数,因此它的范围是-128~+127。当用这个位移量D8计算存储器地址时,它将被符号扩展成16位。
Mod=10时为带两个位移量字节的存储器寻址方式。由r/m字段指定确切的寻址方式。第一个偏移量字节是偏移量的低8位,第二个偏移量字节是偏移量的高8位。这个16位的位移量也是一个带符号数,因此它的范围是-32768~+32767。Mod=11时为寄存器寻址方式。r/m字段表示寄存器,也是与第一个字节的W位一起确定一个寄存器。Mod字段与r/m字段联合使用确定寻址方式由表6-4-2给出。
机器语言指令
1.compiledmachinelanguageinstruction
编译的机器语言指令
2.Aphraseoftenassociatedwithamacroinstruction,whereonesourcelanguageinstructionisconvertedtoseveralmachinelanguageinstructions.
通常与宏指令有关的一种用语,即把一条源语言指令转换成若干条机器语言指令。
3.asinglecomputerinstructionthatresultsinaseriesofinstructionsinmachinelanguage.
一个单一的计算机指令可引起一系列的机器语言指令。
4.Areportpreparedbyaprocessorwhichshowsthecodingasoriginallywritten,anycommentsthatmayhavebeenwritten,andthemachinelanguageinstructionsproduced.
处理机作成的一种报告,其上表示出原写入的编码、注释以及产生的机器语言指令。
5.Asingleinstructioninprogramminglanguagethatresultsinaseriesofinstructionsinmachinelanguage.
宏指令计算机编程语言中可以在机器语言中形成一系列指令的命令
6.Assembler:Aprogamminglanguageinwhichonemnemonicsourcestatementiscodedforeachmachine-levelinstruction.
汇编语言:一种编程语言,每一条助记符源语句都对应一条机器指令。
7.Anassemblerlanguageprogrammerwritesonemnemonicinstructionforeachmachine-levelinstruction.
汇编语言程序设计员为每条机器指令写一条助记符指令。
8.machine-independentcommandlanguage
独立于机器的命令语言
9.Aprogramthattranslatesinstructionswritteninahighlevelprogramminglanguageintomachinelanguage.
一种把用高级编程语言编写的指令翻译成机器语言的程序。
10.Aprogramminglanguagewhoseinstructionsareexpressedinsymbolsconvenienttohumansratherthaninmachinelanguage.
不用机器语言而用对人方便的符号表示各种指令的一种编程语言。
11.Aprogramthattranslatesaninstructionintoamachinelanguageandexecutesitbeforeproceedingtothenextinstruction.
解释程序将指令翻译为机器语言并在执行下一个指令之前完成此指令的程序
12.(computerscience)aprogramthatdecodesinstructionswritteninahigherorderlanguageandproducesamachinelanguageprogram.
(计算机科学上)用更高命令语言所写的解码指令程序来产出机器语言程序。
13.Otherprogramsthentranslatetheinstructionsintomachinelanguageforthecomputertouse.
接着将程序翻译成指令成为机器语言,给计算机使用。
14.Theprocesswherebyadigitalcomputertranslatestheinstructionsofaprogramwritteninahigh-levellanguageintotheirmachinelanguageequivalents.
数字计算机借此把高级语言编写的程序中的指令翻译成与其等价的机器语言程序的处理过程。
15.Assemblylanguageisactuallyacommand-basedredivsentationoftheactualinstructionsthatyourcomputer‘sprocessorruns.
汇编语言实际上是你计算机处理器实际运行的指令的命令形式表示法。
16.Acomputer-orientedlanguagewhoseinstructionsconsistonlyofcomputerinstructions.
一种面向计算机的语言,其指令只由计算机指令组成。
17.Abasicorfundamentalunit,oftenreferringtothelowestofamachineinstructionorlowestunitoflanguagetranslation.
一种基本单位或基础单位,常常指机器指令的最低一级或语言翻译的最低的单位。
18.Asoftwaredevelopmenttoolthattranslateshuman-readableassemblylanguageprogramsintomachine-languageinstructionsthattheprocessorcanunderstandandexecute.
一个能把人可读的汇编语言程序转换到处理器可理解和运行的机器指令的软件开发工具。
-
指令
+关注
关注
1文章
607浏览量
35692 -
机器语言
+关注
关注
0文章
35浏览量
10752
发布评论请先 登录
相关推荐
评论