標(biāo)準(zhǔn)控制結(jié)構(gòu)如何應(yīng)用到Assembly

2018-10-27 11:29 更新

If語(yǔ)句

下面的偽碼:

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

可以像這樣被應(yīng)用:

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

如果沒(méi)有else語(yǔ)句的話,那么else block分支可以用endif分支取代。

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

While循環(huán)

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

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

Do while循環(huán)

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

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

這個(gè)可以翻譯成:

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

例子:查找素?cái)?shù)

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

C寫(xiě)的基本算法

這是匯編語(yǔ)言版:
實(shí)例1
實(shí)例2
實(shí)例3
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)