匯編入門:循環語句的匯編實現


匯編其實沒有想象中的那么難!

我們用高級語言時,定義變量,循環語句,判斷語句等等句子,我們就不想知道它在匯編是怎么實現的嗎?

匯編其實就是對我們板子中寄存器的操作,所以匯編提供了一堆指令,我這里就不展開了,只列舉一下會用到的幾個。

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程序段,結束該循環。

 

好了,就介紹到這里。

 


免責聲明!

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



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