Difference between revisions of "Assembly Language IF"

From TRCCompSci - AQA Computer Science
Jump to: navigation, search
(Assembly Version)
Line 6: Line 6:
 
{
 
{
 
     x = 9;
 
     x = 9;
}
 
else
 
{
 
    y++
 
 
}
 
}
  
Line 19: Line 15:
 
     LDR R1, #0
 
     LDR R1, #0
 
     CMP R0, #10
 
     CMP R0, #10
     BNE .else
+
     BNE .end
 
     MOV R1, #9
 
     MOV R1, #9
    B .endif
+
  .end
.else
 
    ADD R0, R0, #1
 
  .endif
 
  
  
Line 31: Line 24:
 
Line 2 sets the value of Register 1 to the value 0.<br>
 
Line 2 sets the value of Register 1 to the value 0.<br>
 
Line 3 compares the value in Register 0 with the value 10.<br>
 
Line 3 compares the value in Register 0 with the value 10.<br>
Line 4 will branch to the .else label if the previous compare was NOT EQUAL.<br>
+
Line 4 will branch to the .end label if the previous compare was NOT EQUAL.<br>
 
Line 5 will move the value 9 into Register 1. <br>
 
Line 5 will move the value 9 into Register 1. <br>
Line 6 will branch always to the .endif label. <br>
+
Line 6 is the .end label
Line 7 is a label called .else and is used in a branch. <br>
 
Line 8 will add together the value 1 with the current value in Register 0, the output will be stored back in Register 0.
 

Revision as of 12:36, 20 December 2018

C# example

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

Assembly Version

   LDR R0, #0
   LDR 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