What's new

Help auxillary carry implementation for bcd arithmetic?

Status
Not open for further replies.

fireclouu

Honorary Poster
Joined
Jun 1, 2014
Posts
440
Solutions
1
Reaction
152
Points
190
hi! magtatanong sana ko kung sino rito nakakaalam pa'no icheck kung na-trigger 'yung auxillary carry flag? nalilito kasi ako pero kuha ko na siya ng kaunti, eto pagkakaalam ko:

set flag if there is a carry from bit 3 to bit 4 (binary)

nagets ko ng kaunti na:
AUX CARRY:
carry: ¹↓ 2B - 0010 1011 39 - 0011 1001 ---------------- 64 - 0110 0100 ----------↑ generate carry

how the heck can you check it on binary level?
eto initial implementation ko kaso mukhang mali ata:
Java:
int a = 0x39;
int b = 0x2B;
boolean flag;

int ans = (a & 0xf) + (b & 0xf); // get least significant nibble
flag = (ans > 16) ? true : false;

will it work on all occasions?

ps. di pa klaro sakin pati bakit siya kailangan sa bcd arithmetic, eg. 0x39 + 0x47 is NOT 0x80 in BCD, but 0x86
 
Last edited:
hehe oks na, eto reference kung meron sa inyo makaencounter ng ganito :)
Java:
        short fetch = 0x39; // assume as parameter
        short a = 0x41; // assume as parameter
        short res; // container
        
        //  since 'byte' and variable natin, use short data type, use int if 'word'
       // avoid using byte data type dahil -127 to 128 lang , alanganin!

        // get least and most significant nibble
        short msb = fetch >> 4; 
        short lsb = fetch & 0xf;
        
        // check lsb (least significant)
        lsb = (a & 0xf) + lsb;
        if (lsb > 0x9) {
            lsb += 0x6; // adjust
        }
        
        // check msb (most significant)
        msb = (a >> 4) + msb;
        if (msb > 0x9) {
            msb += 0x6; // adjust
        }
        
        res = ((msb << 4) + lsb) & 0xff; // cut values to 'byte' size
        
        System.out.println("0x" + Integer.toHexString(res));

helpful 'to kung sumusulat ka ng interpreter, commonly cpu instruction, mas okay rin kung sa c/c++ written kaso inaaral ko pa lang rin sobrang nalilito ako sa c/c++ lalo na pointers na 'yan haha.
 
Last edited:
Status
Not open for further replies.
Back
Top