+1 (315) 557-6473 

Convert a string to an integer using PLP assembly homework help

The program deals with reading a series of characters from the UART and converting each string of characters to an integer. The strings are terminated by semicolons. Any invalid characters are ignored and an error message is printed. The conversion process continues indefinitely while there are characters coming from the UART. Below is the solution to this homework provided by our PLP assembly homework helpers.
Table Of Contents
  • String to Integer Conversion in PLP Assembly

String to Integer Conversion in PLP Assembly

Convert a string to an integer using PLP assembly assignment help

.org 0x10000000 li $sp,0x10fffffc main: li $s0,';' # delimiter to use li $s1,10 # load s1 with 10 for doing multiplications by 10 li $a0,0 # a0 will contain the converted number, initialize to zero li $a1,0 # a0 will contain 1 if there was a bad character input, set to zero read: li $t0,0xf0000000 # load UART command register address in t0 li $t1,2 # load a 2 to send a clear status command to the UART sw $t1,0($t0) # send clear status command to UART nop inwait: lw $t1,4($t0) # load current status register from UART andi $t1,$t1,2 # test the second bit (ready) beq $t1,$0,inwait # if there is no data, keep waiting nop lw $t1,8($t0) # load received char in t1 beq $t1,$s0,send # if the read character was a ';', send the result nop addiu $t1,$t1,-48 # convert from ascii to integer slt $t2,$t1,$0 # set t2 to 1 if conversion<0 bne $t2,$0,error # if the it was <0, set error nop slt $t2,$t1,$s1 # set t2 to 1 if conversion<10 beq $t2,$0,error # if the it was >=10, set error nop mullo $a0,$a0,$s1 # multiply old number by 10 addu $a0,$a0,$t1 # add current digit to number j read # read another character nop error: addiu $a1,$0,1 # set a1 to 1 to indicate error j read # read another character nop send: call project3_print # print the converted number nop j main # restart program nop