- #1
Margarita0076
- 5
- 0
- Homework Statement
- Write an assembly program to read a four character BCD number from the user. This will be read in as a standard integer. However, you are to convert this number to its BCD equivalent, and print out this decimal number. You can assume that the input is always 4 characters and is legal (i.e. only the digits from 0-9 will appear).
- Relevant Equations
- Here’s an example:
User types in 8762. This is stored in the computer as 100010001110102
We need to convert it to the representation 1000 0111 0110 0010, which is BCD for 8762 (Notice the first 4 bits has an 8, the next 4 bits has a 7, and so on)
Print out that BCD value (10000111011000102) as a decimal: 34658 (Your syscall print_int does this anyway).
Output:
BCD: 8762
Binary: 34658
I have this code which convert decimal number to binary number, but I do not understand how representation 8762 like 1000 0111 0110 0010.
8 | 7 | 6 | 2 |
1000 | 0111 | 0110 | 0010 |
Code:
.data
strmsg: .asciiz "please Enter a decimal number: "
.text
#main method
.globl main
#main function
main:
#load the value
li $v0, 4
#load the string message
la $a0, strmsg
syscall
# read the value 5
li $v0, 5
#syscall method
syscall
add $t0, $zero, $v0
# loop
li $t1, 31
Loop:
blt $t1, 0, EndLoop
srlv $t2, $t0, $t1
and $t2, 1
#load value 1
li $v0, 1
move $a0, $t2
syscall
#substract 1.
sub $t1, $t1, 1
b Loop
EndLoop:
#load the value
li $v0, 10
#end
syscall
Last edited by a moderator: