什么是匯編語言?(簡要介紹)


匯編是低級語言,可以用來直接控制硬件,所以不同於高級語言,因為匯編的代碼和機器碼有關,所以不同的機器使用不同的匯編碼。

匯編因為是在二進制上面發展過來的,所以比二進制更加方便,舉個栗子:

 一個hello world程序(別問我Hello Word是啥,謝謝~)用二進制語言寫的話需要花50行的0和1,相比匯編語言的16行,差的太多太多~

16位匯編采用實模式

(可以隨意對內存編程的模式,也就是說,如果存放着系統的內存是允許被修改的,一經修改系統將會發生故障)

32位匯編采用的是保護模式(擁有權限級別,1級2級3級 根據等級的不同,訪問的內存單元也不同)

16位尋址能力為2的16次方 從00000-FFFFF 就是內存大小

接下來我們介紹幾個常用的寄存器

AX,BX,CX,DX

Ax:累加器

BX:存放一個內存單元的偏移地址

Cx :循環的計數器,當cx=0時,跳出循環執行下一條指令

Dx: 存放着數據

Cs:存放着當前執行的指令的段地址

IP:存放着要執行的指令的偏移地址 (和CS是一組)

Cs*16+IP =要執行的指令的實際地址

(乘16是因為要將地址轉變為基地址,加上了偏移地址后就是實際地址)

 

當10000成為基地址,加載內存后,前面的內存單元和下一個內存單元之間,偏移量會變

 

這時候我們只需要計算偏移量,也就是0 1 2 3這些小的數字,加起來后我們就可以輕松的獲取到程序的內存(就是執行的代碼)

 


 

 

接下來我們講一個特殊的東西,在匯編里面,有一種叫“棧”的奇特結構

這種結構的特性是,最先進去的內存最后出來,最后進去的內存最先出來。

棧遵循先進后出的原則

 

 

然后我們介紹兩個跟棧有關的寄存器SS SP

Ss存放着棧頂的段地址

Sp存放着棧的偏移地址

無論何時 ss:sp指向棧頂

棧由於其特殊的結構,經常用來做數據交換。

 

補充:

Ds cs ss 這些寄存器是不能通過直接賦予數值來改變寄存器的地址,只能通過ax,bx等寄存器的中轉去改變!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM