機(jī)器語(yǔ)言
機(jī)器語(yǔ)言(機(jī)器語(yǔ)言)是用數(shù)字形式表示的機(jī)器基本指令集,還是用符號(hào)操作碼表示的基本指令集。一般來(lái)說(shuō),它由機(jī)器可以執(zhí)行的所有指令和它操作的數(shù)據(jù)組成。其功能可以通過(guò)相應(yīng)計(jì)算機(jī)的基本指令集來(lái)實(shí)現(xiàn)(也稱作指令系統(tǒng))描述一下,其中每條指令都會(huì)指導(dǎo)計(jì)算機(jī)執(zhí)行一個(gè)基本操作。包括數(shù)據(jù)處理操作(如算術(shù)運(yùn)算、邏輯運(yùn)算、字符處理等),控制操作(如判斷、轉(zhuǎn)移、中斷、改變機(jī)器狀態(tài)等)和傳輸操作(如輸入、輸出、數(shù)據(jù)移動(dòng)等)在計(jì)算機(jī)中,實(shí)現(xiàn)操作的指令和被操作的對(duì)象要用二進(jìn)制代碼的形式表示,指令由操作碼和地址碼兩部分組成。操作碼表示要實(shí)現(xiàn)的基本操作,地址表示要實(shí)現(xiàn)的對(duì)象在計(jì)算機(jī)中的存儲(chǔ)位置,要實(shí)現(xiàn)的對(duì)象可以是整數(shù)、實(shí)數(shù)、布爾值、字符串等。因?yàn)樗鼈兌际且远M(jìn)制數(shù)字序列的形式存儲(chǔ)在計(jì)算機(jī)中,為了區(qū)分它們的類型,通常在操作碼中進(jìn)行設(shè)置“標(biāo)志”字段來(lái)加以標(biāo)識(shí)。這不同于在高級(jí)語(yǔ)言中使用類型描述來(lái)標(biāo)識(shí)對(duì)象的類型機(jī)器語(yǔ)言的主要特點(diǎn)是與具體機(jī)器相關(guān),運(yùn)行效率高于高級(jí)語(yǔ)言,但用戶使用起來(lái)比較困難,繁瑣,耗時(shí),容易出錯(cuò)。
語(yǔ)言指令 編輯本段
機(jī)器語(yǔ)言指令是一種二進(jìn)制代碼,由操作碼和操作數(shù)組成。操作碼指定指令的操作,操作碼是指令中的關(guān)鍵字,不能默認(rèn)。操作數(shù)表示指令的操作數(shù)。計(jì)算機(jī)指令格式與機(jī)器字長(zhǎng)、記憶的容量與教學(xué)的功能有很大關(guān)系。從便于程序設(shè)計(jì)、增加基本操作的并行性、從提高說(shuō)明書功能的角度來(lái)看,說(shuō)明書應(yīng)該包含多種信息。但在某些指令中,有些信息可能是無(wú)用的,會(huì)浪費(fèi)指令占用的存儲(chǔ)空間,增加訪問(wèn)次數(shù),影響速度。因此,如何合理、科學(xué)地設(shè)計(jì)指令格式,使指令既能給出足夠的信息,又能使其長(zhǎng)度盡可能與機(jī)器的字長(zhǎng)相匹配,從而節(jié)省存儲(chǔ)空間,縮短取值時(shí)間,提高機(jī)器性能,是一個(gè)重要的問(wèn)題。
計(jì)算機(jī)通過(guò)執(zhí)行指令來(lái)處理各種數(shù)據(jù)。指出數(shù)據(jù)的來(lái)源、在操作結(jié)果和操作執(zhí)行的地方,指令必須包含以下信息:
1)操作碼。它規(guī)定了操作的性質(zhì)和功能。一臺(tái)計(jì)算機(jī)可能有幾十到幾百條指令,每條指令都有相應(yīng)的操作碼計(jì)算機(jī)可以通過(guò)識(shí)別操作碼來(lái)完成不同的操作。
2)操作數(shù)的地址。CPU可以通過(guò)這個(gè)地址獲得所需的操作數(shù)。
3)操作結(jié)果的存儲(chǔ)地址。將操作數(shù)處理的結(jié)果保存在此地址中,以便重復(fù)使用。
4)下條指令的地址。執(zhí)行程序時(shí),大部分指令都是按順序從主存中取出來(lái)執(zhí)行的,只有遇到分支指令時(shí),程序的執(zhí)行順序才會(huì)改變。為了減少指令的長(zhǎng)度,可以使用程序計(jì)數(shù)器(程序計(jì)數(shù)器,個(gè)人電腦)存放指令地址。每次執(zhí)行一條指令,PC機(jī)的指令地址自動(dòng)為1(讓這條指令只占用一個(gè)主存單元),指示要執(zhí)行的下一條指令的地址。當(dāng)遇到執(zhí)行分支指令時(shí),用分支地址修改PC的內(nèi)容。因?yàn)槭褂肞C,所以不需要在指令中明確給出下一條要執(zhí)行的指令的地址。
一條指令實(shí)際上包括兩種信息,即操作碼和地址碼。操作碼(行動(dòng)代號(hào),行動(dòng)代號(hào),行動(dòng)代號(hào),行動(dòng)代號(hào),行動(dòng)代號(hào),行動(dòng)代號(hào),行動(dòng)代號(hào),行動(dòng)代號(hào),行動(dòng)代號(hào),行動(dòng)代號(hào),行動(dòng)代號(hào),行動(dòng)代號(hào),行動(dòng)代號(hào),行動(dòng)代號(hào),行動(dòng)代號(hào),行動(dòng)代號(hào),行動(dòng)代號(hào),行動(dòng)代號(hào),行動(dòng)代號(hào))用于表示指令要完成的操作(如加、減、乘、除、數(shù)據(jù)傳送等)它的長(zhǎng)度取決于指令系統(tǒng)中指令的數(shù)量。地址碼用來(lái)描述指令的操作對(duì)象,要么直接給出操作數(shù),要么表示操作數(shù)的內(nèi)存地址或寄存器地址(即寄存器名)
指令包括兩部分操作碼字段和地址字段。根據(jù)地址域涉及的地址數(shù)量,常見(jiàn)的指令格式如下。
①三地址指令:通用地址域中的A1、A2分別確定第一和第二、第二個(gè)操作數(shù)地址A3決定結(jié)果地址。下一條指令的地址通常由程序計(jì)數(shù)器按順序給出。
②二地址指令:在地址域中,A1確定第一個(gè)操作數(shù)地址,A2同時(shí)確定第二個(gè)操作數(shù)地址和結(jié)果地址。
③單地址指令:地址域中A 確定第一個(gè)操作數(shù)的地址。固定使用寄存器存儲(chǔ)第二個(gè)操作數(shù)和運(yùn)算結(jié)果。因此它們的地址隱含在指令中。
④零地址指令:在棧式計(jì)算機(jī)中,操作數(shù)一般存儲(chǔ)在下推到棧頂?shù)膬蓚€(gè)單元中,結(jié)果放在棧頂,地址都是隱藏的,所以大多數(shù)指令只有操作碼,沒(méi)有地址字段。
⑤可變地址號(hào)指令:地址字段中包含的地址數(shù)量因操作定義而異。例如,一些計(jì)算機(jī)的指令中的地址數(shù)量少則 0,多則6。
技術(shù)應(yīng)用 編輯本段
指令是機(jī)器語(yǔ)言中的語(yǔ)句,是一組有意義的二進(jìn)制代碼。各種計(jì)算機(jī)公司設(shè)計(jì)和生產(chǎn)的計(jì)算機(jī)指令的數(shù)量和功能、指令格式、尋址方式、數(shù)據(jù)格式不同。從計(jì)算機(jī)的發(fā)展過(guò)程中可以看出,由于計(jì)算機(jī)的基礎(chǔ)硬件發(fā)展很快,計(jì)算機(jī)更新?lián)Q代很快,所以存在一個(gè)軟件如何跟上硬件的問(wèn)題。一臺(tái)新機(jī)推出交付,只有少量的系統(tǒng)軟件(如操作系統(tǒng)等)可以提交給用戶,大量的軟件是不斷豐富的,尤其是應(yīng)用,有相當(dāng)一部分是用戶在使用機(jī)器時(shí)不斷產(chǎn)生的。為了緩解原應(yīng)用程序不能 盡管各計(jì)算機(jī)公司生產(chǎn)的同一系列計(jì)算機(jī)的硬件實(shí)現(xiàn)方法可能有所不同,但指令系統(tǒng)、數(shù)據(jù)格式、I/o系統(tǒng)等保持不變,所以軟件完全兼容。在開(kāi)發(fā)該系列計(jì)算機(jī)的新型號(hào)時(shí),雖然指令系統(tǒng)可以大幅度擴(kuò)展,但仍然保留了原有的所有指令,使軟件向上兼容,即舊型號(hào)上的軟件無(wú)需修改就可以在新機(jī)上運(yùn)行。
說(shuō)到這里,大家都明白為什么電腦是電腦,電腦是電腦了再聰明,本質(zhì)也不過(guò)是這些二進(jìn)制代碼運(yùn)算的結(jié)果。然而,二進(jìn)制代碼太難用了,所以后來(lái)基于它開(kāi)發(fā)了匯編語(yǔ)言,但匯編仍然不能用看起來(lái)并不直觀,所以最終出現(xiàn)了一種用于現(xiàn)代編程的高級(jí)語(yǔ)言。這是計(jì)算機(jī)編程語(yǔ)言的發(fā)展。有了編程語(yǔ)言,就假設(shè)這些機(jī)器可以被我使用。It 實(shí)際上沒(méi)那么簡(jiǎn)單。首先,每做一件事都要重復(fù)很多操作程序,工作量很大。其次,我們都看到了,使用計(jì)算機(jī)的人大多不是計(jì)算機(jī)專業(yè)的,更不要說(shuō)編程了,要抵制復(fù)雜的操作步驟。所以我們也需要一個(gè)操作系統(tǒng),把復(fù)雜的操作留給自己,把簡(jiǎn)單的操作呈現(xiàn)給用戶。
機(jī)器語(yǔ)言程序兼容性。機(jī)器語(yǔ)言是由硬件實(shí)現(xiàn)的機(jī)器指令。要實(shí)現(xiàn)用機(jī)器語(yǔ)言編寫的程序的兼容性,對(duì)計(jì)算機(jī)體系結(jié)構(gòu)有非常嚴(yán)格的要求需要兼容的兩臺(tái)電腦的架構(gòu)和操作系統(tǒng)的用戶程序界面要完全一樣;即使略有不同,也可以通過(guò)軟件仿真或硬件仿真實(shí)現(xiàn)兼容。但是,這些方法會(huì)明顯降低用戶程序的運(yùn)行速度。
產(chǎn)品缺點(diǎn) 編輯本段
1.大量瑣碎的細(xì)節(jié)束縛了程序員,使他們無(wú)法有更多的時(shí)間和精力從事創(chuàng)造性的工作,執(zhí)行對(duì)他們更重要的任務(wù)。比如保證程序的正確性、高效性。
2.程序員不僅要掌握程序設(shè)計(jì)的全局,還要深入到每一個(gè)部分,直到實(shí)現(xiàn)細(xì)節(jié)即使是智力超群的程序員,也經(jīng)常會(huì)忽略一件事,反復(fù)出錯(cuò),所以編譯出來(lái)的程序可靠性差,開(kāi)發(fā)周期長(zhǎng)。
3.因?yàn)橛脵C(jī)器語(yǔ)言編程的思維和表達(dá)與人有很大不同 的習(xí)慣,只有經(jīng)過(guò)長(zhǎng)期訓(xùn)練的程序員才能勝任,這就使得編程有高有低。
4.因?yàn)樗臅嫘问匠錆M了'密'代碼,所以可讀性差,不便于交流和合作。
5.因?yàn)樗鼑?yán)重依賴于特定的計(jì)算機(jī),所以不具有可移植性和可重用性。
弱通用性 編輯本段
各種計(jì)算機(jī)公司設(shè)計(jì)和生產(chǎn)的計(jì)算機(jī)指令的數(shù)量和功能、指令格式、尋址方式、數(shù)據(jù)格式不一樣,即使是一些常用的基本指令,比如算術(shù)和邏輯運(yùn)算指令、轉(zhuǎn)賬指令等等也不一樣。所以,雖然各種類型的計(jì)算機(jī)的高級(jí)語(yǔ)言基本相同,但是把高級(jí)語(yǔ)言程序編譯成機(jī)器語(yǔ)言后,差別也很大。所以用機(jī)器語(yǔ)言表達(dá)的程序移植到其他機(jī)器上幾乎是不可能的。從計(jì)算機(jī)的發(fā)展過(guò)程中看到,由于計(jì)算機(jī)的基礎(chǔ)硬件發(fā)展很快,計(jì)算機(jī)的更新?lián)Q代很快,所以就存在一個(gè)軟件如何跟上的問(wèn)題。
附件列表
詞條內(nèi)容僅供參考,如果您需要解決具體問(wèn)題
(尤其在法律、醫(yī)學(xué)等領(lǐng)域),建議您咨詢相關(guān)領(lǐng)域?qū)I(yè)人士。
如果您認(rèn)為本詞條還有待完善,請(qǐng) 編輯
上一篇 HTML組件 下一篇 程序計(jì)數(shù)器