彙編入門指南

2021-10-24 13:07:07 字數 1541 閱讀 9967

2.介紹

常見概念

3.推薦資源

本教程按照作者親身經歷和《x86組合語言:從實模式到保護模式》寫成

為什麼要學彙編?

眾所周知,彙編是比較早期的一種程式語言和低階語言,雖然比不上高階語言的可讀性和效率,但這種語言作為最接近機器碼的語言可以很好的幫助我們了解最底層相關機制。

mov指令是資料傳送指令

mov ax,

10

把10這個立即數賦值給ax,相當於ax=10;

mov ax,bx
把bx裡16位資料賦值給ax,相當於ax=bx;

參考文章

jmp是組合語言中的無條件跳轉指令。無條件跳轉指令可轉到記憶體中任何程式段。轉移位址可在指令中給出,也可以在暫存器中給出,或在儲存器中指出,相當於goto差不多,如

infi: jmp near infi

這個是彙編中的除法指令,被除數預設放在ax或dx和ax,如果除數為8位,被除數則為16位,預設在ax中存放;如果除數 為16位,被除數則為32位,在dx和ax中存放,dx存放高16位,ax存放低16位。

在結果中:如果除數為8位,則al儲存除法操作的商,ah儲存除法操作的餘數;如果除數為16位,則ax儲存除法操作的商,dx儲存除法操作的餘數。

一般格式為

mov ax,

10mov bx,

5div bx

add是彙編中的加法指令,大概格式為

add a,b
把a和b的資料相加存到a裡,a為任一通用暫存器或儲存器運算元,可以是任意乙個通用暫存器,而且還可以是任意乙個儲存器運算元,b為立即數,也可以是任意乙個通用暫存器運算元.立即數只能用於源運算元b,a和b均為暫存器是允許的,乙個為暫存器而另乙個為儲存器也是允許的, 但不允許兩個都是儲存器運算元。

add ax,

10h

把十六進製制數10h加到ax裡

組合語言中的ax、bx、cx、dx是cpu內部的通用暫存器中的資料暫存器助記符。相當於4個16位二進位制的變數,其中的高8位用ah、bh、ch、dh表示,低8位用al、bl、cl、dl表示。參考文章

偏移位址一般和段位址一起用,應用如下

mov ax,

0xb800

mov es,ax

mov byte [es:

0x00],'h'

mov byte [es:

0x01],

0x07

其中,es是上面從ax賦值的段位址,0x00和0x01是偏移位址,這段**在螢幕上輸出h

在上面的jmp示例**中,"infi"為標號,相當於goto的標號,代表這裡的物理記憶體位址

在上面的偏移位址的示例中,byte為資料型別,為8 位無符號整數,b 代表位元組

參考文章

藍奏雲密碼:3yp4

包含以上提到的教程

-end-

彙編入門總結(5)

四 串指令 ds si 源串段暫存器 源串變址.es di 目標串段暫存器 目標串變址.cx 重複次數計數器.al ax 掃瞄值.d標誌 0表示重複操作中si和di應自動增量 1表示應自動減量.z標誌 用來控制掃瞄或比較操作的結束.movs 串傳送.movsb 傳送字元.movsw 傳送字.movs...

mips 彙編入門 helloworld

原始碼如下 hello.s vb view plain copy text segment text globl main main execution starts here la a0,str put string address into a0 li v0,4 system call to p...

PIC彙編入門示例

將20h單元低4位取出存入21h,高四位取出存入22h 要點 andlw和swapf movf 20h,0 將20h單元的內容送人w andlw 0fh w高四位清零低4位保持不變 movwf 21h 將拆分後的低4位送21h swapf 20h,0 將20h單元內容高 低半位元組換位後送w and...