匯編其實沒有想象中的那么難!
我們用高級語言時,定義變量,循環語句,判斷語句等等句子,我們就不想知道它在匯編是怎么實現的嗎?
匯編其實就是對我們板子中寄存器的操作,所以匯編提供了一堆指令,我這里就不展開了,只列舉一下會用到的幾個。
ADD 增加 ADD R1 #1 表示R1寄存器加一
MOV 傳值 MOV R1 #0 表示將R1寄存器的值設為一
B 轉跳 B XX 表示要轉跳去執行xxx語句
CMP 比較大小 CMP R1 R2 比較R1和R2的大小
HS 大於等於 BHS XXX 表示如果大於或等於則去執行XXX 跟在比較語句后面使用
NOP 啥都不干 基本就是程序結束了
我一直覺得,學習一個新東西,只要把它的一個簡單實例弄懂了之后,后面就很簡單了。
來看看C語言的循環語句,定義i和j,循環10次,每次把i和j加一
int i = 0; int j = 0; for(;i<10;i++){ j++; } return 0;
相應的匯編語言
因為方便大家看到顏色,我就截圖來了。
簡單說一下:
LOOP 和 LOOP_END是程序段名稱,代表了后面的那一段程序。
首先我們使用了R1和R2這兩個寄存器,做為我們的I和J兩個變量。
初始化時,先用MOV語句,將這倆寄存器置為0.
LOOP是循環執行語句段,比較R1和10的大小,若小於10,則使用ADD語句,將R1和R2的值加一,然后再執行LOOP的程序段;如果R1大於等於10,則執行跳轉語句,
跳轉到LOOP_END程序段,結束該循環。
好了,就介紹到這里。