標準控制結構如何應用到Assembly

2018-10-27 11:29 更新

If語句

下面的偽碼:

if ( 條件)
  then block ;
else
  else block ;

可以像這樣被應用:

1              ; 設置FLAGS的代碼
2              jxx       else_block        ; 選擇xx,如果條件為假,則分支
3              ; then模塊的代碼
4              jmp endif
5 else_block:
6              ; else模塊的代碼
7 endif:

如果沒有else語句的話,那么else block分支可以用endif分支取代。

1              ; 設置FLAGS的代碼
2              jxx endif                     ; 選擇xx,如果條件為假,則分支
3              ; then模塊的代碼
4 endif:

While循環(huán)

while循環(huán)是一個頂端測試循環(huán):

while( 條件) {
  循環(huán)體;
}
這個可以翻譯成:
1 while:
2              ; 基于條件的設置FLAGS的代碼
3              jxx endwhile ; 選擇xx,如果條件為假,則分支
4              ; 循環(huán)體
5              jmp while
6 endwhile:

Do while循環(huán)

do while循環(huán)是一個末端測試循環(huán):

do {
   循環(huán)體;
} while( 條件);

這個可以翻譯成:

1 do:
2              ; 循環(huán)體
3              ; 基于條件的設置FLAGS的代碼
4              jxx do               ; 選擇xx,如果條件為假,則分支|

例子:查找素數

這一小節(jié)是一個查找素數的程序。根據回憶,素數是一個只能被1和它本身整除的數。沒有公式來做這件事情。這個程序使用的基本方法是在一個給定的范圍內查找所有奇數的因子。如果一個奇數沒有找到一個因子,那么它就是一個素數。圖2.3 展示了用C寫的基本的算法。

C寫的基本算法

這是匯編語言版:
實例1
實例2
實例3
以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號