Professional Documents
Culture Documents
red
MOV R1, #7
MOV R2, #9
MOV R3, #15
MOV R4, #25
bl rect
MOV R0, #.green
MOV R1, #7
MOV R2, #9
MOV R3, #15
MOV R4, #1
bl rect
MOV R0, #.blue
MOV R1, #7
MOV R2, #9
MOV R3, #1
MOV R4, #25
bl rect
HALT
//R0 - colour
//R1 - start x
//R2 - start y
//R3 - length x
//R4 - length y
rect:
PUSH {R2,R4,LR}
CMP R4, #1
BLT rectError
ADD R4, R4, R2 //Convert length to 1 past finishing point
rectLoop: BL horizLine
ADD R2, R2, #1
CMP R2, R4
BLT rectLoop
POP {R2,R4,LR}
RET
rectError: HALT //At least parameter is out of range
//R0 - colour
//R1 - start x
//R2 - start y
//R3 - length x
horizLine:
PUSH {R1,R3,LR}
CMP R3, #1
BLT horizLineError
ADD R3, R3, R1 //Convert length to 1 past finishing point
horizLineLoop: BL point
ADD R1, R1, #1
CMP R1, R3
BLT horizLineLoop
POP {R1,R3,LR}
RET
horizLineError: HALT //At least one parameter is out of range
//R0 - colour
//R1 - start x
//R2 - start y
//R4 - length y
vertLine:
PUSH {R2,R4,LR}
CMP R4, #1
BLT vertLineError
ADD R4, R4, R2 //Convert length to 1 past finishing point
vertLineLoop: BL point
ADD R2, R2, #1
CMP R2, R4
BLT vertLineLoop
POP {R2,R4,LR}
RET
vertLineError: HALT //At least one parameter is out of range