Difference between revisions of "Assembly Language IF"

From TRCCompSci - AQA Computer Science
Jump to: navigation, search
(Assembly Version 1)
 
Line 12: Line 12:
 
==Assembly Version 1==
 
==Assembly Version 1==
  
     LDR R0, #0
+
     MOV R0, #0
     LDR R1, #0
+
     MOV R1, #0
 
     CMP R0, #10
 
     CMP R0, #10
     BNE .end
+
     BNE end
 
     MOV R1, #9
 
     MOV R1, #9
  .end
+
  end:
  
  
Line 30: Line 30:
 
==Assembly Version 2==
 
==Assembly Version 2==
  
     LDR R0, #0
+
     MOV R0, #0
     LDR R1, #0
+
     MOV R1, #0
 
     CMP R0, #10
 
     CMP R0, #10
     BEQ .true
+
     BEQ true
     B .end
+
     B end
  .true
+
  true:
 
     MOV R1, #9
 
     MOV R1, #9
  .end
+
  end:
  
  

Latest revision as of 10:28, 22 January 2020

C# example

int y = 0;
int x = 0;
if (y == 10)
{
    x = 9;
}

Assembly Version 1

   MOV R0, #0
   MOV R1, #0
   CMP R0, #10
   BNE end
   MOV R1, #9
end:


Line 1 sets the value of Register 0 to the value 0.
Line 2 sets the value of Register 1 to the value 0.
Line 3 compares the value in Register 0 with the value 10.
Line 4 will branch to the .end label if the previous compare was NOT EQUAL.
Line 5 will move the value 9 into Register 1.
Line 6 is the .end label

Assembly Version 2

   MOV R0, #0
   MOV R1, #0
   CMP R0, #10
   BEQ true
   B end
true:
   MOV R1, #9
end:


Line 1 sets the value of Register 0 to the value 0.
Line 2 sets the value of Register 1 to the value 0.
Line 3 compares the value in Register 0 with the value 10.
Line 4 will branch to the .true label if the previous compare was EQUAL.
Line 5 will branch to the .end Line 6 is the label for the .true code Line 7 will move the value 9 into Register 1.
Line 8 is the .end label