Post a New Question

Computer/assembly language

posted by on .

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:
Answer:

Related Questions

More Related Questions

Post a New Question