;******************************************************************************* ; Input: packed BCD in bcd2:bcd1:bcd0 (modified!) ; bcd0 = tens:ones ; bcd1 = thou:hund ; bcd2 = 0:tenk ; Output: 16 bit binary in hi:lo ;Temporary: counter ; Size: 23 instructions ; Timing: 3+2+16*(6+12+4)-2+3=358 instruction cycles ; ; Notes: The routine uses BCD division by 2. Each iteration ; the LSB of BCD value (which coincides with correspondent ; binary bit) is shifted to output and BCD value is ; divided by 2. To do the division, BCD is shifted right ; once and corrected. Correction: if MSB of a nibble is set, ; subtract 3 from it. ; ;January 22, 2001 by Nikolai Golovchenko ;******************************************************************************* bcd2bin16 mov W, #16 mov counter, W bcd2bin16loop clc rr bcd2 rr bcd1 rr bcd0 rr hi rr lo clr W snb bcd0.3 or W, #$03 snb bcd0.7 or W, #$30 sub bcd0, W clr W snb bcd1.3 or W, #$03 snb bcd1.7 or W, #$30 sub bcd1, W decsz counter jmp bcd2bin16loop ret ;*******************************************************************************
file: /Techref/scenix/lib/math/radix/bcd2bin16.htm, 1KB, , updated: 2004/6/10 13:40, local time: 2024/12/27 11:47,
owner: NG--944,
3.141.45.90:LOG IN
|
©2024 These pages are served without commercial sponsorship. (No popup ads, etc...).Bandwidth abuse increases hosting cost forcing sponsorship or shutdown. This server aggressively defends against automated copying for any reason including offline viewing, duplication, etc... Please respect this requirement and DO NOT RIP THIS SITE. Questions? <A HREF="http://ecomorder.com/techref/scenix/lib/math/radix/bcd2bin16.htm"> Packed BCD to 16 bit binary conversion</A> |
Did you find what you needed? |
Welcome to ecomorder.com! |
Welcome to ecomorder.com! |
.