The blanks are filled, below.
The
sign bit is shifted right 31 bit positions.
This puts it in the low-order bit of the
destination register ($9
in this case).
To test if $9
is zero, use branch-on-equal
with register $0
(which is always zero).
Now calculate -A and store it back into word "A".
The instruction at done
is a no-op.
## absVal.asm ## ## Calculate the absolute value of A .text .globl main main: # Get A lui $10,0x1000 # Init base register lw $8,0($10) # Load A sll $0,$0,0 # load delay slot # Is A negative? srl $9,$8,31 # Shift sign bit to position 0 beq $0,$9,done # sign bit == zero, done sll $0,$0,0 # branch delay slot # Store -A subu $8,$,$8 # negate A sw $8,($) # save it done: sll $0,$0,0 .data A: .word -1 ## End of file
Fill the blanks.