組合語言程式設計,組合語言是一種什麼程式語言?

2021-12-21 13:27:29 字數 4839 閱讀 2506

1樓:娛樂大潮咖

組合語言是用於電子計算機,微處理器,微控制器或其他可程式設計裝置的低階語言,e68a8462616964757a686964616f31333431366431也稱為符號語言。 在組合語言中,助記符用於替換機器指令的操作碼,並且使用位址或運算元代替指令或運算元的位址。

在不同的裝置中,組合語言對應於不同的機器語言指令集,這些指令集通過彙編過程轉換為機器指令。 特定的組合語言和特定的機器語言指令集是一一對應的,不能直接移植到不同的平台上。

由於彙編指令系統龐大,因此有必要構建一種指令系統,該指令系統具有大量指令,複雜的格式以及較差的儲存空間。 指令中最難的部分是指令支援的定址模式。 指令的本質是如何獲取指令中的運算元。

(1)傳送指令:

包括通用資料傳送指令mov、條件傳送指令cmovcc、堆疊操作指令push/pusha/pushad/pop/popa/popad、交換指令xchg/xlat/bswap、位址或段描述符選擇子傳送指令lea/lds/les/lfs/lgs/lss等

(2)邏輯運算:

這部分指令用於執行算術和邏輯運算,包括加法指令add/adc、減法指令sub/sbb、加一指令inc、減一指令dec、比較操作指令cmp等。

(3)移位指令:

這部分指令用於將暫存器或記憶體運算元移動指定的次數。包括邏輯左移指令shl、邏輯右移指令shr、算術左移指令sal、算術右移指令sar、迴圈左移指令rol、迴圈右移指令ror等。

但是,對於計算機的基本組合語言而言,這種型別的定址將涉及大量與複雜的儲存管理方法密切相關的計算儲存格式,因此很難理解。 最後,彙編指令還與標誌的影響方式有關,但是處理器標誌非常複雜,因此很難掌握該機制。

組合語言是計算機提供給使用者的最快,最高效的語言,並且是唯一可以利用計算機的所有硬體功能並直接控制硬體的語言。 但是,由於編寫和除錯組合語言程式比高階語言複雜,因此它們的應用程式目前不如高階語言廣泛。

暫存器可以理解為cpu中的儲存器或者記憶體,是cpu中可以儲存資料的器件,乙個cpu中可以有多個暫存器。上述示例中的 ax 、bx 就是暫存器的代號。

組合語言比機器語言更具可讀性,但是組合語言仍然比高階語言更不可讀。 但是,用它編寫的程式具有儲存空間低和執行速度快的特性,並且不能用高階語言代替。 在實際應用中,組合語言的使用取決於特定的應用程式要求,軟體開發時間和質量。

2樓:鶴髮童顏

組合語言是依賴於計算機的低階的程式語言。

這些指令都是二進位制的,稱為操作碼(opcode),比如加法指令就是00000011。編譯器的作用,就是將高階語言寫好的程式,翻譯成一條條操作碼。

對於人類來說,二進位制程式是不可讀的,根本看不出來機器幹了什麼。為了解決可讀性的問題,以及偶爾的編輯需求,就誕生了組合語言。

由於彙編更接近機器語言,能夠直接對硬體進行操作,生成的程式與其他的語言相比具有更高的執行速度,占用更小的記憶體,因此在一些對於時效性要求很高的程式、許多大型程式的核心模組以及工業控制方面大量應用。

組合語言是二進位制指令的文字形式,與指令是一一對應的關係。比如,加法指令00000011寫成組合語言就是 add。只要還原成二進位制,組合語言就可以被 cpu 直接執行,所以它是最底層的低階語言。

組合語言基礎命令就只有「將資訊從某處移到某處」和加、減等,都是幼兒園小孩能理解的計算。跳轉命令分直接跳轉和有條件跳轉,總共加起來也沒幾個。

而且每個模組都很小,能寫的內容非常有限。但在這麼簡陋的基礎上,可以從最基礎的傳輸資訊、到用加法減法配合儲存單元實現乘法除法等運算、再到更複雜的資訊處理,可以說這個遊戲在其設計範圍內真的做到極致了。

學習組合語言的好處:

可以自己編寫出比較高階的程式,開始專精彙編分支的某一種比如51微控制器,arm,x86,懂得硬體基本構造和計算機邏輯電路和cpu原理。可以自己編寫除錯底層系統。可以彙編/反彙編,可以進行病毒的編寫和除錯和破譯。

移動端系統底層/電子產品/硬體基本系統熟練於心,可以高階成乙個真正的電子極客了。

3樓:魏啟

組合語言是一種助記符,一種低階語言,直接面對指令,將二進位制指令替換**類便於記憶的字串,並冠以特殊的格式。每一條彙編指令對應一條二進位制指令。根據核心架構的不同,不同的指令有不同的長度和格式。

4樓:江柳兒情感生活

組合語言(assembly language)包含用抄短bai助記符如 add、mov、sub 和 call 書寫的語句。彙編du語言與機器語言是一zhi對一(daoone-to-one)的關係:每一條組合語言指令對應一條機器語言指令。

5樓:匿名使用者

組合語言是一種依賴於計算機的低階 程式語言 。

組合語言是直接告訴cpu的每個暫存器及每個外設去做什麼,因為是最基本的語言,比這再低階的語言就職110100010101011110之類的語言了。

6樓:左手半夏

組合語言本身很簡單,常用指令沒幾個,語法規則也不多,看幾個小時資料似乎就明白了,但其實不然。彙編的背後是體系結構,是程式設計拋開各種高層形態的最根本,最本質的解釋。

7樓:杰哥來說電影

組合語言是依賴於計算機的低階的程式語言。

以匯言但編譯機語,故其不從根本版上解決機言之特殊性。是權故,匯語與機身之程式設計境同候。難推與植,然其言之有仍之機行。高效,以其可讀性、簡性,匯言猶為常用之程式設計語一。

8樓:匿名使用者

組合語言是最古老的程式語言,在所有的語言中,它與原生機器語言最為接近。它能直接訪問計算機硬體,要求使用者了解計算機架構和作業系統。

9樓:沙里波特

組合語言du

,是和機器zhi語dao言專

同一層次的程式語言。

組合語言的主體,是機器語

屬言的助記符,比機器語言易懂,好記。

用組合語言編寫程式,也就是用機器語言程式設計,難度很高。

一般初學者,學不進去。

會了高階語言,如果不學會組合語言,就難稱高手。

用組合語言編寫乙個簡單程式

10樓:sweet馮

1.計算u=(x+(y*z-100))/w

其中:x,y,z,w均為十六位有符號數。

程式如下:

data segment

x dw 10 ;16位變數

y dw 20

z dw 30

w dw 40

u dw ?,?

data ends

code segment

assume cs:code,ds:data

start:

mov ax,data

mov ds,ax

mov ax,y

imul z ;計算y*z,內容放在dx,ax中

mov cx,ax

mov bx,dx

sub cx,100 ;計算y*z-100

sbb bx, 0

mov ax,x

cwd ;將x符號擴充套件,形成dx:ax中的雙字

add ax,cx ;計算x+(y*z-100),內容放在dx,ax中

adc dx,bx

idiv w ;計算(x+(y*z-100))/w

mov u,ax

mov u+2,dx

mov ah,4ch

int 21h

code ends

end start

11樓:匿名使用者

push ax

push bx

pop ax

pop bx

核心**

什麼是彙編和組合語言?

12樓:揚落

彙編語copy言是一種低階計算bai機程式語言,說"低階du"並不是指語言的功能和複雜程度,而是它zhi出現在計算機發展史dao的早期,但現在仍廣泛應用於計算機開發領域,應為它是絕大多數語言的基礎.再者,它是一種面向機器的語言,即它執行與操作都與計算機硬體密切相關.

c語言是一種高階語言,它有利於人為操作,近於物件導向與面向機器之間(vb就是一種物件導向的程式語言),它的功能更加強大,可移植性高,是當今最廣泛的語言之一.

dos彙編是說組合語言的操作介面是dost系統,這也說明是彙編是更低階一些,但執行速度是其它語言無法相比的,就是可移植性較差.

13樓:匿名使用者

簡單點說是一種低階語言,c語言是高階語言,dos是老的一種作業系統,不是程式設計

14樓:忘忘忘啊

組合語言是最底層的語言。

c已經可以說是高階語言,一般認為是中級語言

15樓:匿名使用者

組合語言和

baic語言的不同在於du彙編是低階語言,zhi程式設計者直接控制dao機器硬體。專

彙編的**和機屬

器碼有關,不同的機器使用不同的彙編碼。

而不同的機器可以使用相同的c語言**,翻譯成不同的機器碼。

彙編的優勢在於,你可以控制程式的長度與速度間的平衡,而高階語言很難。

dos彙編實際上並不確切,可以理解為:

intel 8086彙編+dos中斷服務程式(一般指int 21h)相對於windows,32位彙編

但是,組合語言可能有上千種,家用電腦僅是intel 80x86彙編。

16樓:邱茗蔣和豫

就是最接近機器碼的語言,所有程式最後都要被翻譯成組合語言才能執行。

組合語言直接操作硬體,對cpu內的暫存器、運算器進行控制。

組合語言問題組合語言問題

微控制器中 沒有相等就跳轉的指令 其實,cjne實際上也實現了相等跳轉的功能的 cjne a,data,rel 如果不等跳到rel指令a 如果等就執行下一條指令 指令a.rel 指令b 假如有一條相等就跳轉的指令cje 實際上沒有 cje a,data,rel 相等跳到rel指令b 不等跳到指令b ...

組合語言題目,組合語言題目,求詳解

a2,b2,是a的平方,還是a 2?兩個數相乘,就要考慮溢位問題。y是32位?還是16位?需不需要考慮溢位?dseg segment org d 開始地址d a dw b dw c dw dseg ends assume cs cseg,ds dsegcseg segment start mov a...

組合語言中WAIT啥意思,組合語言中LOOPNE l20什麼意思

1 wait 當晶元引線test為高電平時使cpu進入等待狀態.2 組合語言 assemblylanguage 是面向機器的程式語言。在組合語言中,用助記符 memoni 代替操作碼,用位址符號 symbol 或標號 label 代替位址碼。這樣用符號代替機器語言的二進位製碼,就把機器語言變成了組合...