-
我自己的看法,我希望能全部讀完。
機器語言是硬體工作的物理語言,只有 0 和 1,不供人看到,例如 CPU 的內部工作指令。
組合語言適用於開發人員,但與其他高階語言(C、基本、C++)不同。
組合語言不像高階語言那樣跨平台,首先CPU的工作是基於機器語言(即指令集,ISA),這些指令有的獨有,有的必須由外界訪問,比如讓CPU做加法運算,誰加誰不是由CPU決定的, 並且必須由外界指定才能計算。於是問題來了,用機器碼控制CPU太難了,只有0和1,程式設計師要做很多工作! 於是組合語言誕生了。
它是以文字的形式,程式設計師編寫程式後,通過彙編器(類似於高階語言的編譯器)將文字轉換為機器碼,因此程式可以控制CPU,因此組合語言非常依賴CPU,i386的匯程式設計序只能執行在支援i386系統的CPU上, Apple PowerPC 匯程式設計序只能在 Mac 上執行。 這就是為什麼 Windows 程式不能在 Mac 上執行的原因,因為它們彼此具有不同的彙編指令集,因此具有不同的機器程式碼。
當然,電腦程式的執行最終是用機器碼來執行的,但是程式語言是極其重要的,比如用C語言寫出最簡單的程式,首先C語言編譯器(Compiler)將程式轉換成相應的彙編,彙編器將彙編**轉換為機器碼後才能執行。
高階語言之所以可以跨平台,是因為同一高階語言在不同平台上的不同編譯器可以呼叫對面平台的彙編器在對應的平台上執行。 因此,將高階語言和組合語言分為一類是不對的......
我想說的很多,畢竟我剛剛學會了,順便複習一下,所以咱們就到此為止。
-
組合語言編譯器是軟體程式。 你說它不需要硬體支援。
例如,POP 指令位於 AMD64 架構下的處理器中。
8ffffa1 或 0fa9 等。
有幾個參考資料:
IA-32 英特爾架構軟體開發人員指南是一本三卷本指南。
《英特爾 64 位和 IA-32 架構軟體開發人員指南》由三卷組成。
《AMD64 體系結構程式參考》由三卷組成。
其中,IA-32是指基於Intel80386結構的X86系列(包括奔騰系列)的處理器。
Intel 64 和 AMD 64 是指基於 IA-32 系統的 64 位處理器。 Intel 64 和 AMD 64 之間的核心功能沒有區別,除了一些次要功能(從命令角度來看)。
-
組合語言是一種比較高階的語言,如果說機器語言是計算機本身的語言,那麼組合語言就是人機交流的中介語言; 因為機器語言過於複雜和不方便(雖然方便計算機執行)要求使用者對計算機有深刻的理解,而現實中對計算機有深入了解的人並不多,所以組合語言是那些對計算機有深入了解的人提高機器語言的語言, 更接近人類可以理解的語言,如int a;我們知道我們定義了乙個整數變數a,組合語言通過編譯器將int a翻譯成機器語言,比如01010001,然後傳輸給機器,所以組合語言也是基於機器語言的。 只是為了方便使用,機器語言預先定義了表達形式。
-
你的理解應該是正確的,裝配指令只是機器指令的助記符。
-
組合語言由編譯器編譯並成為機器語言。
裝配指令和機器語言是相對應的。
-
計算機的工作本來就是由硬體完成的,既然程式可以使計算機工作,那麼程式就是由硬體完成的,你知道的!
程式語言是程式設計師與機器交流的語言,我們通過程式語言告訴機器如何去做。 因此,無論哪種語言可以使機器按照我們的語言描述去做,這都是乙個不好的問題。 什麼程式語言不能控制硬體?
如果你不能控制硬體,你如何讓計算機工作?
我想你問的是這兩種語言的特點,其實組合語言和機器語言可以說是一樣的,組合語言只是機器語言的象徵。 這是最低級別的語言,不能再分開,這意味著如果程式設計師按照組合語言進行程式設計,他或她就是在根據硬體最基本的工作細節來思考。 這就是它與其他高階語言的不同之處。
當我們用 C 語言程式設計時,我們不知道機器是做什麼的,但我們可以通過彙編來做到這一點! 舉個例子,如果你讓電腦找1+2,你可以直接用C寫a=1+2,a的值就是我們想要的。 組合語言就是在安裝機器的方式上解決這個問題,先把1從記憶體移到CPU中的暫存器上,然後讓這個暫存器的值加上2,然後把結果儲存在這個暫存器裡,再把結果從暫存器移回記憶體,就這樣結束了。
機器的每一步都被程式設計師理解和透明,這就是通常所說的“硬體直接操作”的本質。 在C語言等高階語言中,我們不需要知道機器是做什麼的。
當你學習這些語言時,你就會明白這些細節。
-
用機器語言編寫的程式一般是編譯器獲取的組合語言程式。 彙編器一般是在DOS命令下執行的程式,可以控制CPU。 當然,您也可以控制硬體。
-
一切都在掌控之中。 組合語言最終還是被編譯成機器語言。 只是機器語言太複雜了,無法記住和理解。
-
是的,而且沒有太大的區別,不需要使用機器語言,組合語言就可以實現,它們幾乎處於同一水平。
-
組合語言是從機器語言轉換而來的。 最早的計算機系統沒有可用的高階語言,直接用0101這樣的二進位編碼進行程式設計,這對絕大多數使用者來說非常不方便,因為它需要對計算機系統的軟硬體資源有很好的了解。 記憶體量也很大。
後來,我們用一些符號來代替一些二進位的**,容易識別,比如原來的**1011表示加法,現在不寫1011,寫成加法,用加法,這樣就方便大家識別符號進行程式設計,可以提高一些效率。 但是,計算機的執行仍然只能識別二進位**,因此有必要將用組合語言編寫的**轉換為機器語言。
組合語言是一種低階語言,其優點是可以直接控制計算機的硬體和軟體資源。 缺點是對程式設計師的要求非常高。 計算機執行時,用組合語言編寫的**的執行效率最高。
與機器語言一樣高效**。
-
組合語言是一種面向機器的程式語言。
在彙編合成中,使用助記符而不是操作碼,使用符號或標籤而不是位址 mom。 這樣,用符號代替機器語言文盲的二進位程式碼,就把機器語音變成了組合語言。 因此,組合語言也稱為符號語言。
用組合語言編寫的程式可以直接被機器識別,組合語言應由程式翻譯成機器語言,起翻譯作用的程式稱為匯程式設計序,匯程式設計序是系統軟體中的語言處理系統軟體。 組合語言將匯程式設計序翻譯成機器語言的過程稱為組合語言。
組合語言比機器語言更容易讀寫,易於除錯和修改,還具有執行速度快、機器語言占用記憶體空間少等優點,但在編寫複雜程式時有明顯的侷限性。
-
LDI R21,-10為什麼它的機器語言是11101111-01010110
這些機器語言都是由CPU設計人員制定的,他們直接控制硬體,只有懂硬體的人才能理解。
機器語言不適合普通人理解和使用,為此出現了彙編和C等高階語言。
人,只要使用高階語言程式設計,編譯系統,就會將高階語言轉化為機器語言。
-
你有沒有學過計算機組成的原理,簡單來說,這些機器語言中的0和1對應計算機中的電路,表示為有電流或無電流(有電壓或無電壓),計算機由許多晶元組成,這些晶元如何工作取決於它們是否通電(0或1)。
你看到的00001110-00111100(相當於設計晶元時定義的指令)與告訴計算機哪些晶元需要工作以及如何工作完全相同
-
機器程式碼與裝配體一一對應,但很複雜。
解決方案:判斷>這是 8086 彙編 16 位彙編指令格式,它是暫存器定址。
查詢表格>開啟檔案,找到標題“主要說明”,然後單擊“M”。
字母,然後對應格式為“mov reg,reg”的“操作碼”條目為:1000101woorrrmmm
同樣>由於暫存器是 ax 而 bx 顯然是“字運算”,因此 W 1
如果你看一下本文上面的“表4”,你會發現oo 11是一種暫存器定址方法。
在檢視本文上面的“表1”時,rrr 的對應值為 000,因為當兩次操作。
數字是暫存器,因此目的運算元通常是標準。
在本文上面的表 3 中,mmm 的對應值為 011,因為當兩個運算元都是暫存器時,通常使用源運算元。
綜合結果 > w 1
oo=11rrr=000
mmm=011
1000101woorrrmmm=1000 1011 1100 0011b ->8bc3h
-
這是預定義的編碼,例如 MOV 的 1
2 代表 mul
3 代表 div
然後加上ax bx cx dx暫存器,編碼很長,這是乙個類比,簡而言之,不同的數字組合代表不同的指令是唯一的。
-
使用編譯器進行轉換。 編譯程式的原理可以在《編譯原理》一書中找到。
這會將 MOV AX、BX(機器語言助記符)轉換為計算機硬體可以識別的100001...... 二進位程式碼(機器程式碼)也是如此。
每個組合語言片段對應乙個機器語言片段。
-
組合語言可以看作是機器語言的助記符,不同的彙編命令對應不同的二進位**,有相關的對應表要檢查。 組合語言只有在編譯軟體生成相應的機器語言後才能執行。
-
組合語言編譯器的目的是將組合語言轉換為機器程式碼。
-
組合語言是一種符號標記語言,它不是機器語言所謂機器語言,說白了就是010101的二進位**,沒有幾十年經驗的人看不懂(呵呵,還有那些能直接讀懂二進位內容的牛**)。
組合語言編譯後就是機器碼,機器可以很容易地理解機器碼。 機器碼一般很少用二進位表示,多以16為基數,但無論如何,人類記憶機器程式碼和程式還是非常困難的,更不用說可行性了,只是說效率不堪。 業內普遍認為,彙編的開發效率很低(執行效率高),錯誤檢查難,可讀性差,更不用說使用難以理解的機器程式碼了!!
編譯和機器碼,幾乎是一一對應關係,一蘿蔔一坑。因此,識別符號在組合語言中被稱為助記符。 “助記符”這個詞很有意思,呵呵。
good luck!
-
組合語言不是機器語言,也需要在CPU執行之前進行編譯。 編譯後的二進位檔案**是機器語言,或機器**。
科學是非常嚴謹的,所以老師在指導學生做科學實驗時,也要注意科學的嚴謹性,只有從嚴謹的實驗中得出的結論才能保證其科學性,更有說服力。 >>>More
張云芝實驗小學學生報到公告 摘要:大浦縣張云志實驗小學於今年9月1日正式開學,學校計畫招收30個班級,1560名學生。 其中,一年級有10個班,520名學生; 2 至 6 年級分為 4 個班級,每個級別有 208 名學生。 >>>More
杭州江南實驗學校位於杭州市濱江區江南大道南側濱河路與春曉路交匯處(濱江區對面),占地124畝。 是濱江區投資2億元建設的一所高標準學校,打造強教育區,服務高新技術企業。 杭州濱江區教育局與杭州市第二中學教育集團聯合創辦的九年制實驗學校,實行民辦管理機制。 >>>More