0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

機(jī)器語言是什么_機(jī)器語言指令大全

姚小熊27 ? 來源:網(wǎng)絡(luò)整理 ? 2018-04-16 10:08 ? 次閱讀

機(jī)器語言是什么

機(jī)器語言(machinelanguage)是一種指令集的體系。這種指令集,稱機(jī)器碼(machinecode),是電腦CPU可直接解讀的數(shù)據(jù)。機(jī)器碼有時(shí)也被稱為原生碼(NativeCode),這個(gè)名詞比較強(qiáng)調(diào)某種編程語言或庫,它與運(yùn)行平臺相關(guān)的部份。

機(jī)器語言是用二進(jìn)制代碼表示的計(jì)算機(jī)能直接識別和執(zhí)行的一種機(jī)器指令的集合。它是計(jì)算機(jī)的設(shè)計(jì)者通過計(jì)算機(jī)的硬件結(jié)構(gòu)賦予計(jì)算機(jī)的操作功能。

一種cpu的指令系統(tǒng),也稱cpu的機(jī)器語言。它是該cpu可以識別的一組由1和0序列構(gòu)成的指令碼。用機(jī)器語言編程序,就是從實(shí)用的cpu的指令系統(tǒng)中挑選合適的指令,組成一個(gè)指令系列。

一條指令就是機(jī)器語言的一個(gè)語句,它是一組有意義的二進(jìn)制代碼,指令的基本格式如,操作碼字段和地址碼字段,其中操作碼指明了指令的操作性質(zhì)及功能,地址碼則給出了操作數(shù)或操作數(shù)的地址。

用機(jī)器語言編寫程序,編程人員要首先熟記所用計(jì)算機(jī)的全部指令代碼和代碼的涵義。手編程序時(shí),程序員得自己處理每條指令和每一數(shù)據(jù)的存儲(chǔ)分配和輸入輸出,還得記住編程過程中每步所使用的工作單元處在何種狀態(tài)。這是一件十分繁瑣的工作。編寫程序花費(fèi)的時(shí)間往往是實(shí)際運(yùn)行時(shí)間的幾十倍或幾百倍。而且,編出的程序全是些0和1的指令代碼,直觀性差,還容易出錯(cuò)。除了計(jì)算機(jī)生產(chǎn)廠家的專業(yè)人員外,絕大多數(shù)的程序員已經(jīng)不再去學(xué)習(xí)機(jī)器語言了。

機(jī)器語言是什么_機(jī)器語言指令大全

機(jī)器語言是微處理器理解和使用的,用于控制它的操作二進(jìn)制代碼。

8086到Pentium的機(jī)器語言指令長度可以從1字節(jié)到13字節(jié)。

盡管機(jī)器語言好像是很復(fù)雜的,然而它是有規(guī)律的。

存在著多至100000種機(jī)器語言的指令。這意味著不能把這些種類全部列出來。

范例:

1、指令部份的范例

0000代表加載(LOAD

0001代表儲(chǔ)存(SET)

。。。

2、暫存器部份的范例

0000代表暫存器A

0001代表暫存器B

。。。

3、內(nèi)存部份的范例

000000000000代表位址為0的內(nèi)存

000000000001代表位址為1的內(nèi)存

000000001000代表位址為16的內(nèi)存

100000000000代表位址為2^11的內(nèi)存

4、集成范例

0000,0000,000000001000代表LOADA,16

0000,0000,000000000001代表LOADB,1

0000,0001,000000001000代表STOREB,16

0000,0001,000000000001代表STOREB,1

機(jī)器語言缺點(diǎn)

1.大量繁雜瑣碎的細(xì)節(jié)牽制著程序員,使他們不可能有更多的時(shí)間和精力去從事創(chuàng)造性的勞動(dòng),執(zhí)行對他們來說更為重要的任務(wù)。如確保程序的正確性、高效性。

2.程序員既要駕馭程序設(shè)計(jì)的全局又要深入每一個(gè)局部直到實(shí)現(xiàn)的細(xì)節(jié),即使智力超群的程序員也常常會(huì)顧此失彼,屢出差錯(cuò),因而所編出的程序可靠性差,且開發(fā)周期長。

3.由于用機(jī)器語言進(jìn)行程序設(shè)計(jì)的思維和表達(dá)方式與人們的習(xí)慣大相徑庭,只有經(jīng)過較長時(shí)間職業(yè)訓(xùn)練的程序員才能勝任,使得程序設(shè)計(jì)曲高和寡。

4.因?yàn)樗臅嫘问饺恰懊堋贝a,所以可讀性差,不便于交流與合作。

5.因?yàn)樗鼑?yán)重地依賴于具體的計(jì)算機(jī),所以可移植性差,重用性差。

這些弊端造成當(dāng)時(shí)的計(jì)算機(jī)應(yīng)用未能迅速得到推廣。

機(jī)器語言指令概述

匯編語言指令編寫的匯編語言程序輸入計(jì)算機(jī)后,計(jì)算機(jī)并不能識別和執(zhí)行,必須由機(jī)器提供的匯編程序?qū)⑺g成由機(jī)器語言指令組成的程序,才能由計(jì)算機(jī)執(zhí)行。通常這種翻譯工作不必由人來干預(yù)。本節(jié)只簡單介紹一下機(jī)器語言指令的構(gòu)成,以便讀者在實(shí)際應(yīng)用(實(shí)時(shí)控制)中也可完成類似的轉(zhuǎn)換工作。

8086/8088的機(jī)器語言指令為可變字節(jié)的指令,一條指令可以由1~7個(gè)字節(jié)組成,因此指令格式比較靈活。其格式如下所示:

機(jī)器語言是什么_機(jī)器語言指令大全

其中,opcode為操作碼字段;d指示操作方向;S表示符號擴(kuò)展;W指示操作數(shù)寬度;mod用來區(qū)分是寄存器尋址還是存儲(chǔ)器尋址;reg寄存器編碼;r/m寄存器或存儲(chǔ)器;disp-low位移量低位;disp-high位移量高位;data-low立即數(shù)低位;data-high立即數(shù)高位。

格式中給出了1~6個(gè)字節(jié)的情形。如果指令中顯示指定段跨越前綴,則在機(jī)器語言指令中使用放在該指令之前的一個(gè)字節(jié)來表示,其格式如下所示:

機(jī)器語言是什么_機(jī)器語言指令大全

其中,001和110均為段前綴標(biāo)志;SEG指定四個(gè)段寄存器中的一個(gè),00為ES,01為CS,10為SS,11為DS

1、操作碼的機(jī)器語言表示

操作碼一般占用第一個(gè)字節(jié)的7~2位,但有些指令的操作碼占用第一個(gè)字節(jié)的7~1位,甚至還可能占用第二個(gè)字節(jié)的5~3位作為擴(kuò)展操作碼。

在多數(shù)操作碼中,常使用某些位來指示某些信息。例如第一個(gè)字節(jié)中的W位用來指示該指令是對字節(jié)(W=1)還是對字節(jié)(W=0)進(jìn)行操作。在雙操作數(shù)指令中,d位指定寄存器是用于目的操作數(shù)(d=1)還是用于源操作數(shù)(d=0)。另外,在立即尋址方式的指令中,S位表示符號擴(kuò)展,若立即數(shù)為8位,但要求擴(kuò)展成16位數(shù)時(shí),S位為1。S位和W位在立即尋址方式指令中聯(lián)用表示:

機(jī)器語言是什么_機(jī)器語言指令大全

2、尋址方式的機(jī)器語言表示

指令中除操作碼占用的位數(shù)外,其它位則用來表示操作數(shù)或操作數(shù)的地址。8086/8088用一個(gè)尋址方式字節(jié)來表示操作數(shù)的尋址方式,它通常是機(jī)器指令的第二個(gè)字節(jié)。

第二個(gè)字節(jié)中的reg字段表示尋址方式為寄存器方式,在雙操作數(shù)指令的情況下,由reg和第一個(gè)字節(jié)中的W位聯(lián)合指定一個(gè)寄存器作為兩個(gè)操作數(shù)中的一個(gè)操作數(shù)。Reg與W位聯(lián)合指定的寄存器如表6-4-1所示。

機(jī)器語言是什么_機(jī)器語言指令大全
機(jī)器語言是什么_機(jī)器語言指令大全

第二個(gè)字節(jié)中的mod字段與r/m字段相結(jié)合以確定另一個(gè)操作數(shù)的尋址方式。其中:

Mod=00時(shí)為無位移量字節(jié)的存儲(chǔ)器尋址方式。由r/m字段指定確切的尋址方式,其中當(dāng)r/m=110時(shí)指定為直接尋址方式,此時(shí)指令中跟有16位位移量D16,用來指出操作數(shù)的偏移地址。

Mod=01時(shí)為帶一個(gè)位移量字節(jié)的存儲(chǔ)器尋址方式。由r/m字段指定確切的尋址方式。其中位移量字節(jié)為一個(gè)帶符號數(shù),因此它的范圍是-128~+127。當(dāng)用這個(gè)位移量D8計(jì)算存儲(chǔ)器地址時(shí),它將被符號擴(kuò)展成16位。

Mod=10時(shí)為帶兩個(gè)位移量字節(jié)的存儲(chǔ)器尋址方式。由r/m字段指定確切的尋址方式。第一個(gè)偏移量字節(jié)是偏移量的低8位,第二個(gè)偏移量字節(jié)是偏移量的高8位。這個(gè)16位的位移量也是一個(gè)帶符號數(shù),因此它的范圍是-32768~+32767。Mod=11時(shí)為寄存器尋址方式。r/m字段表示寄存器,也是與第一個(gè)字節(jié)的W位一起確定一個(gè)寄存器。Mod字段與r/m字段聯(lián)合使用確定尋址方式由表6-4-2給出。

機(jī)器語言是什么_機(jī)器語言指令大全

機(jī)器語言指令

1.compiledmachinelanguageinstruction

編譯的機(jī)器語言指令

2.Aphraseoftenassociatedwithamacroinstruction,whereonesourcelanguageinstructionisconvertedtoseveralmachinelanguageinstructions.

通常與宏指令有關(guān)的一種用語,即把一條源語言指令轉(zhuǎn)換成若干條機(jī)器語言指令。

3.asinglecomputerinstructionthatresultsinaseriesofinstructionsinmachinelanguage.

一個(gè)單一的計(jì)算機(jī)指令可引起一系列的機(jī)器語言指令。

4.Areportpreparedbyaprocessorwhichshowsthecodingasoriginallywritten,anycommentsthatmayhavebeenwritten,andthemachinelanguageinstructionsproduced.

處理機(jī)作成的一種報(bào)告,其上表示出原寫入的編碼、注釋以及產(chǎn)生的機(jī)器語言指令。

5.Asingleinstructioninprogramminglanguagethatresultsinaseriesofinstructionsinmachinelanguage.

宏指令計(jì)算機(jī)編程語言中可以在機(jī)器語言中形成一系列指令的命令

6.Assembler:Aprogamminglanguageinwhichonemnemonicsourcestatementiscodedforeachmachine-levelinstruction.

匯編語言:一種編程語言,每一條助記符源語句都對應(yīng)一條機(jī)器指令。

7.Anassemblerlanguageprogrammerwritesonemnemonicinstructionforeachmachine-levelinstruction.

匯編語言程序設(shè)計(jì)員為每條機(jī)器指令寫一條助記符指令。

8.machine-independentcommandlanguage

獨(dú)立于機(jī)器的命令語言

9.Aprogramthattranslatesinstructionswritteninahighlevelprogramminglanguageintomachinelanguage.

一種把用高級編程語言編寫的指令翻譯成機(jī)器語言的程序。

10.Aprogramminglanguagewhoseinstructionsareexpressedinsymbolsconvenienttohumansratherthaninmachinelanguage.

不用機(jī)器語言而用對人方便的符號表示各種指令的一種編程語言。

11.Aprogramthattranslatesaninstructionintoamachinelanguageandexecutesitbeforeproceedingtothenextinstruction.

解釋程序?qū)⒅噶罘g為機(jī)器語言并在執(zhí)行下一個(gè)指令之前完成此指令的程序

12.(computerscience)aprogramthatdecodesinstructionswritteninahigherorderlanguageandproducesamachinelanguageprogram.

(計(jì)算機(jī)科學(xué)上)用更高命令語言所寫的解碼指令程序來產(chǎn)出機(jī)器語言程序。

13.Otherprogramsthentranslatetheinstructionsintomachinelanguageforthecomputertouse.

接著將程序翻譯成指令成為機(jī)器語言,給計(jì)算機(jī)使用。

14.Theprocesswherebyadigitalcomputertranslatestheinstructionsofaprogramwritteninahigh-levellanguageintotheirmachinelanguageequivalents.

數(shù)字計(jì)算機(jī)借此把高級語言編寫的程序中的指令翻譯成與其等價(jià)的機(jī)器語言程序的處理過程。

15.Assemblylanguageisactuallyacommand-basedredivsentationoftheactualinstructionsthatyourcomputer‘sprocessorruns.

匯編語言實(shí)際上是你計(jì)算機(jī)處理器實(shí)際運(yùn)行的指令的命令形式表示法。

16.Acomputer-orientedlanguagewhoseinstructionsconsistonlyofcomputerinstructions.

一種面向計(jì)算機(jī)的語言,其指令只由計(jì)算機(jī)指令組成。

17.Abasicorfundamentalunit,oftenreferringtothelowestofamachineinstructionorlowestunitoflanguagetranslation.

一種基本單位或基礎(chǔ)單位,常常指機(jī)器指令的最低一級或語言翻譯的最低的單位。

18.Asoftwaredevelopmenttoolthattranslateshuman-readableassemblylanguageprogramsintomachine-languageinstructionsthattheprocessorcanunderstandandexecute.

一個(gè)能把人可讀的匯編語言程序轉(zhuǎn)換到處理器可理解和運(yùn)行的機(jī)器指令的軟件開發(fā)工具。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 指令
    +關(guān)注

    關(guān)注

    1

    文章

    608

    瀏覽量

    35777
  • 機(jī)器語言
    +關(guān)注

    關(guān)注

    0

    文章

    35

    瀏覽量

    10765
收藏 人收藏

    評論

    相關(guān)推薦

    c語言匯編語言機(jī)器語言的轉(zhuǎn)化

    匯編語言經(jīng)過匯編程序可以翻譯成及期望語言,C語言是不是必須先轉(zhuǎn)換為匯編語言,然后才能生成機(jī)器語言?還是C
    發(fā)表于 04-14 16:53

    匯編語言機(jī)器語言!

    機(jī)器語言是計(jì)算機(jī)直接認(rèn)識的語言,在電路中有高低電平表示,在邏輯中用0和1表示(0表示低或者開關(guān)的斷開,1表示高或者開關(guān)的閉合)機(jī)器語言是最早的機(jī)器運(yùn)行的
    發(fā)表于 03-13 17:22

    C語言為什么不能直接轉(zhuǎn)換為機(jī)器語言呢?

    單片機(jī)只能識別機(jī)器語言。匯編把程序轉(zhuǎn)換為機(jī)器語言,C語言把程序轉(zhuǎn)換為匯編語言,那么為什么C語言不直接轉(zhuǎn)換為
    發(fā)表于 04-12 16:51

    機(jī)器語言如何改變單片機(jī)程序感性認(rèn)知

    高級語言被編譯器變成最后的機(jī)器語言,機(jī)器碼被下載軟件下載進(jìn)單片機(jī)的flash,相關(guān)處理寄存器根據(jù)系統(tǒng)時(shí)鐘一拍一拍工作,讀取flash里的代碼。 代碼實(shí)際上是flash存儲(chǔ)單元的電位狀態(tài),進(jìn)而被理解為
    發(fā)表于 04-02 01:03

    什么是匯編語言

    (Symbol)或標(biāo)號(Label)代替地址碼。這樣用符號代替機(jī)器語言的二進(jìn)制碼,就把機(jī)器語言變成了匯編語言。匯編語言機(jī)器語言易于讀寫、調(diào)
    發(fā)表于 07-19 06:05

    AVR單片機(jī)匯編指令系統(tǒng)相關(guān)資料分享

    AVR單片機(jī)指令系統(tǒng)計(jì)算機(jī)的指令系統(tǒng)是一套控制計(jì)算機(jī)操作的代碼,稱之為機(jī)器語言。計(jì)算機(jī)只能識別和執(zhí)行機(jī)器語言指令。為了便于人們理解、記憶和
    發(fā)表于 11-23 06:58

    C語言的編譯步驟

    嵌入式C語言開發(fā)入門——程序編譯計(jì)算機(jī)語言發(fā)展過程C語言編譯步驟GCC編譯命令程序執(zhí)行計(jì)算機(jī)語言發(fā)展過程機(jī)器語言二進(jìn)制數(shù)據(jù)匯編
    發(fā)表于 12-15 08:21

    機(jī)器語言的預(yù)處理與編譯功能怎樣

    什么是機(jī)器語言呢?機(jī)器語言的預(yù)處理與編譯功能怎樣?
    發(fā)表于 01-19 06:41

    MCS-51系列單片機(jī)指令系統(tǒng)

    MCS-51系列單片機(jī)指令系統(tǒng):指令是指揮計(jì)算機(jī)執(zhí)行某種操作的命令。一條指令可用兩種語言形式表示,即機(jī)器語言和匯編
    發(fā)表于 03-14 15:28 ?2次下載
    MCS-51系列單片機(jī)<b class='flag-5'>指令</b>系統(tǒng)

    高級語言和匯編語言_機(jī)器語言的區(qū)別

    本文首先介紹了高級語言的優(yōu)缺點(diǎn)、匯編語言的優(yōu)缺點(diǎn)及使用匯編語言的理由,其次介紹了機(jī)器語言的優(yōu)缺點(diǎn),最后闡述了高級語言和匯編
    的頭像 發(fā)表于 04-16 10:28 ?3w次閱讀

    面向機(jī)器語言有哪些

    本文開始介紹了機(jī)器語言原理,其次介紹了面向機(jī)器語言的概念與分類,最后介紹了機(jī)器語言的發(fā)展。
    的頭像 發(fā)表于 04-16 10:29 ?1.2w次閱讀
    面向<b class='flag-5'>機(jī)器語言</b>有哪些

    微機(jī)系統(tǒng)指令機(jī)器碼表示方法

     一、機(jī)器語言指令的編碼目的和特點(diǎn)   匯編語言源程序:   用匯編語言 (即主要由指令系統(tǒng)組成的
    發(fā)表于 10-17 16:38 ?9次下載
    微機(jī)系統(tǒng)<b class='flag-5'>指令</b>的<b class='flag-5'>機(jī)器</b>碼表示方法

    計(jì)算機(jī)的機(jī)器語言和匯編語言與高級語言的詳細(xì)資料介紹

    計(jì)算機(jī)語言通常是一個(gè)能完整、準(zhǔn)確和規(guī)則地表達(dá)人們的意圖,并用以指揮或控制計(jì)算機(jī)工作的“符號系統(tǒng)”。計(jì)算機(jī)語言通常分為三類:即機(jī)器語言、匯編語言和高級
    的頭像 發(fā)表于 02-06 16:11 ?5888次閱讀

    基于使用PERSEUS-3計(jì)算機(jī)自制機(jī)器語言編程

    2007年,我開發(fā)了一種名為PERSEUS-3的計(jì)算機(jī),以克服1980年自制的機(jī)器語言計(jì)算機(jī)遭受的挫折。其功能如下。
    的頭像 發(fā)表于 05-01 10:03 ?1949次閱讀

    匯編語言的產(chǎn)生 匯編語言的組成

    機(jī)器語言**是機(jī)器指令的集合。機(jī)器指令展開來講就是一臺機(jī)器可以正確執(zhí)行的命令。
    的頭像 發(fā)表于 09-20 14:52 ?1491次閱讀
    匯編<b class='flag-5'>語言</b>的產(chǎn)生 匯編<b class='flag-5'>語言</b>的組成