Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!sdd.hp.com!ucsd!ucbvax!ccfvx3.draper.COM!SEB1525 From: SEB1525@ccfvx3.draper.COM ("Steve Bacher ", Batchman) Newsgroups: comp.lang.asm370 Subject: RE: Writing double word binary numbers on screen Message-ID: <9009251438.AA09452@ucbvax.Berkeley.EDU> Date: 25 Sep 90 12:16:00 GMT Sender: daemon@ucbvax.BERKELEY.EDU Reply-To: IBM 370 Assembly Programming Discussion List Distribution: inet Organization: The Internet Lines: 56 >Hi 370 Assemblers.. >I have a double word binary number, and I want to write it on screen in >decimal form. How can I write it ? Any help would be appreciated. > -Suleyman Kutlu >System Programmer Try this... * * Some code to take the contents of a binary doubleword and convert * to decimal display format. * * This code works for non-negative numbers only. * LM R4,R5,DBLWORD Load double word integer LTR R4,R4 If number is negative BM ... (sorry, I haven't done this path) D R4,=F'1000000000' Divide double-int by 10^9 * * We know that the quotient cannot be greater than 2147483647, so * a program check is not possible. * R4 = remainder * R5 = quotient CVD R5,CVDAREA Convert quotient to decimal UNPK DSPAREA(9),CVDAREA Get 9 digits of decimal number OI DSPAREA+8,X'F0' Fix up sign CVD R4,CVDAREA Convert remainder to decimal UNPK DSPAREA+9(9),CVDAREA Get 9 digits of decimal number OI DSPAREA+9+8,X'F0' Fix up sign * * Now the dumped integer is at DSPAREA. * We have 18 digits. Now get rid of leading blanks. * LA R1,DSPAREA Start pointer at start of digits LA R15,17 Set loop count DLZLOOP CLI 0(R1),C'0' Loop until nonzero digit found BNE DLZEND or last digit found MVI 0(R1),C' ' Blank out each leading zero LA R1,1(,R1) bumping R1 each time BCT R15,DLZLOOP DLZEND DS 0H R15 contains # of significant * decimal digits, R1 points to num B FINISHED ... DBLWORD DS D Here's where your number lives DSPAREA DS CL18 Here's where you put the display CVDAREA DS D Conversion work area ... I hope this helps. Although this code is a slightly-edited extract of a working double-precision-float display routine that works, I have not actually tested this excerpt. Good luck! - Steve Bacher - Charles Stark Draper Laboratory