組合語言程式設計,組合語言程式設計

2021-12-21 15:49:24 字數 5723 閱讀 9350

1樓:匿名使用者

教你一個小招,用vc6.0編好一個c的程式,然後alt+8可以檢視彙編程式

1: #include

2: void main(void)

3:00401055 jmp main+21h (00401031)

10: for(i=0;i<4;i++)

00401057 mov dword ptr [ebp-14h],0

0040105e jmp main+59h (00401069)

00401060 mov eax,dword ptr [ebp-14h]

00401063 add eax,1

00401066 mov dword ptr [ebp-14h],eax

00401069 cmp dword ptr [ebp-14h],4

0040106d jge main+0ach (004010bc)

11:20: }

004010b8 jmp main+67h (00401077)

21: }

004010ba jmp main+50h (00401060)

22: for(i=0;i<4;i++)

004010bc mov dword ptr [ebp-14h],0

004010c3 jmp main+0beh (004010ce)

004010c5 mov ecx,dword ptr [ebp-14h]

004010c8 add ecx,1

004010cb mov dword ptr [ebp-14h],ecx

004010ce cmp dword ptr [ebp-14h],4

004010d2 jge main+0dbh (004010eb)

23: printf("%d>",a[i]);

004010d4 mov edx,dword ptr [ebp-14h]

004010d7 mov eax,dword ptr [ebp+edx*4-10h]

004010db push eax

004010dc push offset string "%d>" (0042501c)

004010e1 call printf (00401140)

004010e6 add esp,8

004010e9 jmp main+0b5h (004010c5)

24: }

004010eb pop edi

004010ec pop esi

004010ed pop ebx

004010ee add esp,5ch

004010f1 cmp ebp,esp

004010f3 call __chkesp (00401220)

004010f8 mov esp,ebp

004010fa pop ebp

004010fb ret

2樓:匿名使用者

執行時在螢幕右上角顯示時間,按任意鍵退出。

(不要問我任意鍵是哪個鍵哦^_^)

data segment

str db ' : : $'

data ends

code segment

assume cs:code,ds:datastart:

mov ax,data

mov ds,ax

test:

mov ah,1

int 16h

jnz exit

mov ah,2

int 1ah

mov al,cl

mov ah,al

mov cl,4

shr ah,cl

or ah,30h

mov str+3,ah

and al,0fh

or al,30h

mov str+4,al

mov ah,ch

shr ah,cl

or ah,30h

mov str,ah

and ch,0fh

or ch,30h

mov str+1,ch

mov ah,dh

shr ah,cl

or ah,30h

mov str+6,ah

and dh,0fh

or dh,30h

mov str+7,dh

mov dh,0

mov dl,72

mov ah,2

int 10h

lea dx,str

mov ah,9

int 21h

jmp test

exit:

mov ah,4ch

int 21h

code ends

end start

程式語言和組合語言有什麼區別啊

3樓:匿名使用者

1、程式語言包含組合語言,組合語言只是程式語言的一種。

2、程式語言:

程式語言(programming language),是用來定義計算機程式的形式語言。它是一種被標準化的交流技巧,用來向計算機發出指令。一種計算機語言讓程式設計師能夠準確地定義計算機所需要使用的資料,並精確地定義在不同情況下所應當採取的行動。

3、組合語言:

組合語言(assembly language)是一種用於電子計算機、微處理器、微控制器或其他可程式設計器件的低階語言,亦稱為符號語言。在組合語言中,用助記符(mnemonics)代替機器指令的操作碼,用地址符號(symbol)或標號(label)代替指令或運算元的地址。在不同的裝置中,組合語言對應著不同的機器語言指令集,通過彙編過程轉換成機器指令。

普遍地說,特定的組合語言和特定的機器語言指令集是一一對應的,不同平臺之間不可直接移植。

4樓:匿名使用者

很多開發者雖從事開發工作多年,但一直都只停留在熟練使用語法和api的層面,根本不知道程式語言的底層實現,導致存在非常多的程式設計誤區。如果掌握組合語言,就非常容易挖掘程式語言的本質,做一名懂底層的真·高階開發工程師。本課程就是站在組合語言的角度去挖掘程式語言的本質,掃清常見的程式設計誤區。

5樓:冬草秋葉

先學vb簡單些

用c入門的人最多,但c難

彙編也算程式設計了,就是非常難,程式設計效率低,執行效率高,具體的你隨便學個語言書上會介紹機器語言,組合語言,和高階語言的區別

6樓:

組合語言也是一門程式語言,但與你說的c,c++,vb等不同的是以上都是軟體類的,而彙編是硬體方面的程式語言.買一本組合語言的基礎教程就可以學了,不過相比軟體類程式語言來說,個人認為組合語言會更難一些.

7樓:匿名使用者

組合語言是dephi之類的語言的語言,專門用來做硬體方面的,譬如微控制器!很多

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

8樓:娛樂大潮咖

組合語言是用於電子計算機,微處理器,微控制器或其他可程式設計裝置的低階語言,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 就是暫存器的代號。

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

9樓:鶴髮童顏

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

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

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

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

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

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

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

學習組合語言的好處:

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

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

組合語言程式設計題,組合語言程式設計題目,線上等答案!!!急!

mov ah,1 int 21h cmp al,a jb l1 cmp al,z 1 jnb l1 and al,5fh l1 mov dl,al mov ah,2 int 21h include main char a 100 char p a scanf s a while p 0 if p a...

什麼是組合語言,什麼是彙編和組合語言?

組合語言 assembly language 是面向機器的程式設計語言。在彙編語閤中,用助記符 memoni 代替操作碼,用地址符號 symbol 或標號 label 代替地址媽。這樣用符號代替機器語盲的二進位制碼,就把機器語音變成了組合語言。於是組合語言亦稱為符號語言。使用組合語言編寫的程式,機器...

組合語言問題求解,組合語言問題求解

我也是學這門課,我試試吧。本人學的不是很精通,僅供參考。1 code segmentassume cs codemov cx,offset datamov dx,offset max 用lea指令也可 專以mov ax,cx mov bx,cx 1 cmp ax,bxja loop1mov dx,b...