# Convert ascii string of binary digits to integer
#
# $a0 - input, pointer to null-terminated string of 1's and 0's
# $v0 - output, integer form of binary string
# $t0 - ascii value of the char pointed to
# $t1 - integer value (0 or 1) of the char pointed to
.globl binary_convert
binary_convert:
li $v0, 0 # Reset accumulator to 0.
loop:
lb $t0, 0($a0) # Load a character,
beq $t0, $zero, end # if it is null then return.
sll $v0, $v0, 1 # Otherwise shift accumulator left,
addi $t1, $t0, -48 # calculate the value of the character,
or $v0, $v0, $t1 # and add that to the accumulator.
addi $a0, $a0, 1 # Finally, increment the pointer
j loop # and loop.
end:
jr $ra
MIPS is a reduced instruction set computer (RISC) instruction set architecture, currently used mostly in video game consoles and routers. It is also a popular architecture in introductory courses and textbooks on computer architecture, due to its simplicity relative to x86 and ARM. Here we use the 32-bit instruction set; a 64-bit instruction set also exists.
This track involves programming in MIPS assembly language, assembled and run on a cross-platform simulator.
Join the MIPS Assembly trackI'm a newcomer to exercism.io. I've been working as a systems engineer for about a year and I've been putting off learning assembly properly (I don't have a degree). I've been doing the MIPS track and not only do I feel like I am really increasing my level of insight into the inner workings of the machine, I'm having a ton of fun doing it. Thank you so much to everyone who is putting work into this.
Once you join the MIPS Assembly language track, you will receive support and feedback from our team of mentors. Here are the bios of a few of the mentors of this track.
These are a few of the 14 exercises on the MIPS Assembly track. You can see all the exercises here.