2016-11-15 31 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'只是另一个代码块。 –