In a normal swap a temporary variable is needed, eg "r2 = r0; r0 = r1; r1 = r2; " swaps r0 and r1. A swap can be implemented without the temporary r2 register using xor operations (the eor instruction). Write a program to swap two registers using eor instructions.
NOTE: This is an assembly class, so these programs must be coded in Pi
5 - In a normal swap a temporary variable is needed, eg "r2 = r0; r0 = r1; r1 = r2; " swaps r0 and r1. A swap can be implemented without the temporary r2 register using xor operations (the eor instruction). Write a
# Program File: Neg.s
# Purpose: This program reads a number and prints out the negative value.
.text
.global main
main:
#Push stack
SUB sp, sp, #4
STR lr, [sp, #0]
#Prompt and read number
LDR r0, =prompt
BL printf
LDR r0, =format
LDR r1, =number
BL scanf
#Calc negative
LDR r1, =number
LDR r1, [r1]
MVN r1, r1
ADD r1, r1, #1
#Print Answer
LDR r0, =output
BL printf
#Pop stack
MOV r0, #0 // Make the program return true
LDR lr, [sp, #0]
ADD sp, sp, #4
MOV pc, lr
.data
prompt: .asciz "\nEnter a number: "
output: .asciz "\nThe negative value is %d\n"
number: .word 0
format: .asciz "%d"
Trending now
This is a popular solution!
Step by step
Solved in 2 steps