Post a New Question

Computer/assembly language

posted by .

Write a procedure BCD to convert a hexadecimal number in RA into its BCD (binary-coded decimal) representation and place it in RB. The return address should be placed in RF. For example, if RA=0x0024 before the call, RB=0x0036 after the all.

// can someone tell me how to write that//

  • Computer/assembly language -

    0x0024 is 2*16+4=36, which is what is required in RB 0x0036.
    Basically, the hex value is converted into decimal, and each decimal digit is stored as a byte in RB.

    The algorithm to do this is to divide the hex number by 10 (decimal), store the integer quotient in a register, and the remainder is the first byte in RB.
    Repeat the process, i.e. divide the quotient by 10(dec.). However, the remainder must be shifted 8 bits to the left before adding to RB to get the next digit.

    Repeat, if necessary, until the quotient is zero.

    Example:
    RA = 0x0024
    RB = 0x0000
    Divide by 0x000A to get
    RA = 0x0003 (quotient)
    RC = 0x0006 (remainder)
    Add rb,rc
    RB = 0x0006

    if RA≠0, Repeat division
    RA = 0x0000
    RC = 0x0003 (remainder)
    shift left 8 bits
    RC = 0x0030
    add rb,rc
    RB = 0x0036

    etc.

    You will have to do some register management to put the quotient and remainder in the right places.

Answer This Question

First Name
School Subject
Your Answer

Related Questions

More Related Questions

Post a New Question