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

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

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

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

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

機(jī)器語言原理

計(jì)算機(jī)的核心部件是CPU(中央處理單元),這是一個(gè)有著眾多引腳的集成電路。計(jì)算機(jī)的所有動(dòng)作均由其內(nèi)部的“電子運(yùn)算”而最終產(chǎn)生。從理解的角度上,可以把CPU看作是一套“約定”的集合。當(dāng)我們通過一些引腳告訴它“1”、“加”、“2”、“運(yùn)算”、“輸出”等信號(hào)時(shí),通過CPU設(shè)計(jì)制作時(shí)固定好的“約定”,在其另一些引腳上輸出“3”的信號(hào)并通知顯示設(shè)備顯示出“3”的圖象,我們就此得到了結(jié)果?!@些“約定”就是該CPU的機(jī)器語言。

不同的CPU有著不同的機(jī)器語言。不同機(jī)器語言基礎(chǔ)上的軟件無法通用。某一廠商新型的CPU為了軟件的通用性往往向其早期的CPU保持兼容。機(jī)器語言是一切軟件(包括操作系統(tǒng))的基礎(chǔ),是計(jì)算機(jī)最終識(shí)別并執(zhí)行的指令。

任何的機(jī)器語言都只接受兩種信息:“指令”和“數(shù)據(jù)”;指令是告訴CPU做什么樣的動(dòng)作,而數(shù)據(jù)則是動(dòng)作的對(duì)象。比如上文中的“加”、“運(yùn)算”等是指令,而“1”、“2”是數(shù)據(jù)。從形式上講,指令和數(shù)據(jù)都是二進(jìn)制信息。但如果將數(shù)據(jù)當(dāng)成指令交給CPU處理,通常CPU會(huì)無法理解而死機(jī);反之如果將指令當(dāng)成數(shù)據(jù)交給CPU則不會(huì)引起任何惡果,因?yàn)閿?shù)據(jù)不會(huì)引起CPU任何的動(dòng)作。

為驗(yàn)證這一說法,你可以隨便將一個(gè)文件的擴(kuò)展名改為COM在DOS下交給系統(tǒng)執(zhí)行;也可以將命令處理器COMMAND.COM的擴(kuò)展名改為TXT用記事本打開(切記不要存盤!)。

面向機(jī)器語言概述

面向機(jī)器語言是為特定的計(jì)算機(jī)或一類計(jì)算機(jī)而設(shè)計(jì)的程序設(shè)計(jì)語言。這種語言保留了機(jī)器語言的外形,即由操作碼和地址碼組成指令這個(gè)外形,但面向機(jī)器語言的語言是用符號(hào)形式而不用機(jī)器代碼形式。這種語言能讓使用者擺脫計(jì)算機(jī)的一些純事物性的細(xì)節(jié)問題(如無需硬記機(jī)器指令代碼、擺脫了二-十進(jìn)制轉(zhuǎn)換問題和分配內(nèi)存問題等),而專心考慮程序間的內(nèi)在聯(lián)系。這類語言的代表是匯編語言。

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

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

1、機(jī)器語言

機(jī)器語言程序由機(jī)器指令構(gòu)成,這些機(jī)器指令按照?qǐng)?zhí)行順序依次排列,運(yùn)行時(shí)依次執(zhí)行完成某個(gè)特定的計(jì)算或任務(wù)。

機(jī)器指令是CPU能直接識(shí)別并執(zhí)行的指令。機(jī)器指令由物理部件的若干位二進(jìn)制0、1狀態(tài)體現(xiàn),機(jī)器指令程序運(yùn)行前需要存儲(chǔ)到內(nèi)存,正確的機(jī)器指令一旦送入CPU被譯碼后就將變成動(dòng)作予以執(zhí)行。

如圖1-1所示,機(jī)器指令面向機(jī)器,因機(jī)器而異。不同的機(jī)器具有不同的機(jī)器指令,因而具有不同的機(jī)器語言。所謂不同的機(jī)器,是指具有不同CPU(中央處理器)的計(jì)算機(jī)。由于機(jī)器指令與CPU緊密相關(guān),所以不同種類的CPU所對(duì)應(yīng)的機(jī)器指令也就不同,而且它們的指令系統(tǒng)往往相差很大。但對(duì)同一系列的CPU來說,為了滿足各型號(hào)之間良好的兼容性,設(shè)計(jì)者一般要做到:新一代CPU的指令系統(tǒng)必須兼容先前開發(fā)的同系列CPU的指令系統(tǒng)。只有這樣,先前開發(fā)出來的各類程序在新一弋CPU上才能正常運(yùn)行。

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

機(jī)器指令通常由操作碼和操作數(shù)兩部分組成,操作碼指出該指令所要完成的操作,即指令的功能,操作數(shù)指出參與運(yùn)算的對(duì)象,以及運(yùn)算結(jié)果所存放的位置等。由于機(jī)器指令由物理部件的若干位二進(jìn)制0、1狀態(tài)體現(xiàn),因此機(jī)器指令的最直接的記憶形式就是表示這一指令狀態(tài)的二進(jìn)制數(shù),這個(gè)二進(jìn)制數(shù)就稱作該機(jī)器指令的二進(jìn)制代碼指令。由于二進(jìn)制數(shù)和八進(jìn)制數(shù),以及十六進(jìn)制數(shù)的特殊關(guān)系,因此該二進(jìn)制代碼指令對(duì)應(yīng)的八進(jìn)制數(shù)和十六進(jìn)制數(shù)分別稱作該機(jī)器指令的八進(jìn)制或十六進(jìn)制代碼指令。

例如:B233H就是一條80*86的十六進(jìn)制機(jī)器代碼指令,這條指令的功能是將33H這個(gè)十六進(jìn)制數(shù)送到DL寄存器。該機(jī)器指令的二進(jìn)制代碼指令是:1011001000110011,指令長度16位。

顯然二進(jìn)制代碼指令與其狀態(tài)對(duì)應(yīng)直觀,但記憶困難。而十六進(jìn)制代碼指令則方便記憶。因此80*86的代碼指令通常都用十六進(jìn)制表示。

用機(jī)器指令所寫的程序稱作機(jī)器指令程序,機(jī)器指令程序也指剛代碼指令所寫的程序。機(jī)器指令程序遵循馮·諾依曼原理:用二進(jìn)制表示數(shù),程序與數(shù)據(jù)都存儲(chǔ)在同樣的存儲(chǔ)器,程序指令一般按存取順序執(zhí)行。

計(jì)算機(jī)出現(xiàn)初期只有一種機(jī)器語言,程序員只能用代碼指令編寫程序,即機(jī)器語言程序。用機(jī)器語言編寫程序是相當(dāng)艱苦的工作,必須由經(jīng)過嚴(yán)格訓(xùn)練的專業(yè)技術(shù)人員承擔(dān),這是早期計(jì)算機(jī)之所以不能夠廣泛應(yīng)用的最大障礙之一。

一方面機(jī)器語言十分重要,必須了解;另一方面機(jī)器代碼指令程序使用又十分困難;因因此唯一能夠替代機(jī)器語言的匯編語言就成為計(jì)算機(jī)科技人員必須掌握的一種計(jì)算機(jī)語言。

2、匯編語言

雖然用機(jī)器語言編寫程序有許多不便,但程序執(zhí)行效率高。所以,在保留“程序執(zhí)行效率高”的前提下,人們開始著手研究一種能大大改善程序可讀性的編程方法。即選用能反映機(jī)器指令功能的單詞或詞組來代替該機(jī)器指令的操作碼,選用相應(yīng)的符號(hào)表示CPU內(nèi)部資源和內(nèi)存等操作數(shù),這就是匯編指令。

例如,匯編指令:

MOVAL,BL其對(duì)應(yīng)的二進(jìn)制指令為:1101100010001000,十六進(jìn)制代碼指令則為D888H,可見記憶機(jī)器指令相當(dāng)困難。

而匯編指令中MOV源于Move,表示傳送指令;AL、BL分別表示80x86的AL和BL寄存器。指令功能是將BL寄存器中的內(nèi)容傳送到AL寄存器。如此,令人難懂的二進(jìn)制機(jī)器代碼指令或十六進(jìn)制機(jī)器代碼指令就可以用通俗易懂的、具有一定含義的符號(hào)指令來表示了,這就是匯編指令的原意。我們稱這些具有一定含義的符號(hào),例如上述指令中的MOV,為助記符。用助記符、符號(hào)地址等組成的符號(hào)指令稱為匯編格式指令或匯編指令。

因此,用助記符表示的機(jī)器指令稱作匯編指令,用匯編指令編寫的程序稱作匯編指令程序。但匯編指令最終必須翻譯成機(jī)器指令才能夠在計(jì)算機(jī)上執(zhí)行。

匯編語言是匯編指令集、偽指令集及其使用規(guī)則的統(tǒng)稱。能夠一對(duì)一地翻譯成機(jī)器指令的這種用助記符表示的機(jī)器指令稱作匯編指令。偽指令則是出現(xiàn)在匯編語言程序中的一些輔助性的說明,它不對(duì)應(yīng)具體的機(jī)器指令,而是程序設(shè)計(jì)者與匯編過程中的翻譯程序(即匯編)、連接程序,以及執(zhí)行時(shí)如何裝入的一種約定。

用匯編語言編寫的程序稱作匯編語言程序,或匯編語言源程序,也簡稱為源程序。匯編語言程序較之機(jī)器指令程序容易理解和維護(hù)。

匯編語言源程序是一個(gè)文本文件,它必須經(jīng)過翻譯才能夠變成可執(zhí)行的機(jī)器語言程序,這個(gè)翻譯過程稱作匯編。匯編的核心過程是將匯編指令逐條翻譯成機(jī)器指令,這正是匯編語言中“匯編”一詞的含義。

80x86匯編語言源程序擴(kuò)展名為.a(chǎn)sm,經(jīng)過匯編以后生成的浮動(dòng)地址二進(jìn)制文件擴(kuò)展名為.obj,.obj文件需要經(jīng)過連接才能夠生成可執(zhí)行文件.exe。.exe是一個(gè)可以由操作系統(tǒng)執(zhí)行的機(jī)器指令程序。圖1-2給出了一個(gè)簡單匯編語言程序與其機(jī)器指令程序之間的對(duì)應(yīng)關(guān)系。

盡管不同的CPU有不同的匯編語言,但不同種類的匯編語言都有其共同規(guī)律。因此,學(xué)會(huì)一種匯編語言,再學(xué)習(xí)其他匯編語言就相對(duì)容易多了。

機(jī)器語言的發(fā)展

每種計(jì)算機(jī)都有自己獨(dú)特的機(jī)器指令,比如,某種型號(hào)的計(jì)算機(jī)用8位二進(jìn)制信息10001010表示加法指令,用00010011表示減法指令,等等。這些指令的執(zhí)行由計(jì)算機(jī)的線路來保證,計(jì)算機(jī)在設(shè)計(jì)之初,先就要確定好每一條指令對(duì)應(yīng)的線路邏輯操作。計(jì)算機(jī)處理信息的早期語言是所謂的機(jī)器語言,使用機(jī)器語言進(jìn)行程序設(shè)計(jì)需要面向機(jī)器來編寫代碼,即需要針對(duì)不同的機(jī)器編寫諸如01011100這樣的指令序列。用機(jī)器語言進(jìn)行程序設(shè)計(jì)是一項(xiàng)累人的工作,代碼難以閱讀和理解,一個(gè)簡單的任務(wù)往往蘊(yùn)含著編寫大量的代碼,而且同樣的任務(wù)需要針對(duì)不同型號(hào)的計(jì)算機(jī)分別進(jìn)行編寫指令,因?yàn)橐环N型號(hào)的計(jì)算機(jī)用10001010表示加法指令,而另一種型號(hào)的計(jì)算機(jī)可能用11110000表示加法指令。因此,使用機(jī)器語言編程也稱為面向機(jī)器編程。20世紀(jì)50年代出現(xiàn)了匯編語言,在編寫指令時(shí),用一些簡單的容易記憶的符號(hào)代替二進(jìn)制指令,但匯編語言仍是面向機(jī)器語言,需針對(duì)小同的機(jī)器編寫不同的代碼。習(xí)慣上稱機(jī)器語言、匯編語言是低級(jí)語言。

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

    關(guān)注

    14

    文章

    406

    瀏覽量

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

    關(guān)注

    0

    文章

    35

    瀏覽量

    10732
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

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

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

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

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

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

    高級(jí)語言被編譯器變成最后的機(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)號(hào)(Label)代替地址碼。這樣用符號(hào)代替機(jī)器語言的二進(jìn)制碼,就把機(jī)器語言變成了匯編語言。匯編語言機(jī)器語言易于讀寫、調(diào)
    發(fā)表于 07-19 06:05

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

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

    匯編語言詳解

    匯編語言(Assembly Language)是面向機(jī)器的程序設(shè)計(jì)語言。   匯編語言中,用助記符(Memoni)代替操作碼,用地址符號(hào)
    發(fā)表于 06-30 10:28 ?4031次閱讀

    弱類型語言哪些_和強(qiáng)類型、動(dòng)態(tài)、靜態(tài)類型的區(qū)別在哪里

    計(jì)算機(jī)不能直接理解高級(jí)語言,僅僅能直接理解機(jī)器語言,所以必需要把高級(jí)語言翻譯成機(jī)器語言,計(jì)算機(jī)才干運(yùn)行高級(jí)語言編寫的程序。翻譯的方式
    發(fā)表于 12-04 16:12 ?1.1w次閱讀
    弱類型<b class='flag-5'>語言</b><b class='flag-5'>有</b>哪些_和強(qiáng)類型、動(dòng)態(tài)、靜態(tài)類型的區(qū)別在哪里

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

    本文開始介紹看機(jī)器語言是什么或概念,其次介紹了機(jī)器語言缺點(diǎn),最后介紹了機(jī)器語言指令概述及指令大全。
    的頭像 發(fā)表于 04-16 10:08 ?7.5w次閱讀
    <b class='flag-5'>機(jī)器語言</b>是什么_<b class='flag-5'>機(jī)器語言</b>指令大全

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

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

    80C51單片機(jī)匯編語言程序設(shè)計(jì)總結(jié)資料免費(fèi)下載

    序設(shè)計(jì)語言分:機(jī)器語言、匯編語言和中高級(jí)語言 1.機(jī)器語言:硬件識(shí)別,二進(jìn)制,無需翻譯、直接執(zhí)行,面向
    發(fā)表于 10-12 17:17 ?14次下載
    80C51單片機(jī)匯編<b class='flag-5'>語言</b>程序設(shè)計(jì)總結(jié)資料免費(fèi)下載

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

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

    單片機(jī)三大編程語言_單片機(jī)編程入門注意事項(xiàng)

    單片機(jī)的編程語言三種:機(jī)器語言、匯編語言與高級(jí)語言機(jī)器語言是計(jì)算機(jī)能夠看懂的
    發(fā)表于 08-13 15:37 ?4.1w次閱讀

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

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

    什么語言適合做C2工具的免殺?

    機(jī)器語言(二進(jìn)制代碼)、匯編語言面向機(jī)器的程序設(shè)計(jì)語言)和符號(hào)語言。匯編
    的頭像 發(fā)表于 02-16 10:30 ?1095次閱讀