2016-11-15 38 views
0

如何在彙編languange中編寫if else語句?如何在程序集中編寫if-else?

C代碼:

If (input < WaterLevel) 
{ 
    MC = 1; 
} 
else if (input == WaterLevel) 
{ 
    MC = 0; 
} 

If input < Water Level 
Send 1 to microcontroller 
Turn Motor On 


Else if input == Water Level 
Send 0 to microcontroller 
Turn Motor Off 

不完整大會:(MC-微控制器)

CMP Input, WaterLevel 
MOV word[MC], 1 

MOV word[MC], 2 
+1

隨着條件分支... –

+1

*「不然,如果輸入==水等級...關閉電機「*我希望你不是在用這個工作在真實世界的項目上,因爲如果這是真實的,那麼請立即僱傭一些專業人員,如果你有能力在沒有檢測到的情況下寫出這個問題這種想法在5小時後造成的惡果,你不能勝任任務和招聘真正的程序員會爲你節省大量的金錢。 (如果這只是一些練習,那麼繼續,沒關係......也可以嘗試弄清楚這有什麼問題)。 – Ped7g

+0

是的放心,我剛剛開始學習今天..我是一名學生.. –

回答

0

不知道你都在用,我會具體的彙編語言用僞代碼寫出來:

compare input to waterlevel 
if less, jump to A 
if equal, jump to B 
jump to C 
A: 
send 1 to microcontroller 
turn motor on 
jump to C 
B: 
send 0 to microcontroller 
turn motor off 
C: 
... 

對於前三條命令:大多數彙編語言都具有條件​​分支命令來測試零或符號位的值,並根據是否設置該位來跳轉或不跳轉。

1

如果我們想要做的用C喜歡的東西:

if (ax < bx) 
{ 
    X = -1; 
} 
else 
{ 
    X = 1; 
} 

它看起來在大會這樣的:

cmp ax, bx  
jl  Less 
mov word [X], 1  
jmp Both    
Less: 
mov word [X], -1 
Both: 
+0

如何在組件中編寫相同的條件(在問題中)?你的例子有一個else語句,而我的使用一個else if。 –

+0

je等於意味着跳轉到相等,如果相等 –

+1

不僅有一種彙編語言。 ARM的組裝顯然必須與Sparc,MIPS或x86不同。他們都有不同的比較指示。您必須指定架構。關於'else if',後者'if'只是另一個代碼塊。 –