.NLIST TOC,SYM .TITLE $MUL .SBTTL ULBLIB 039 - Integer multiply magnitude numbers .IDENT \V03.02\ .PSECT .LIBC. .ENABL LC,GBL ; Copyright (c) 1998 by Mentec, Inc., Nashua, NH. ; All rights reserved ; ; This software is furnished under a license for use only on a ; single computer system and may be copied only with the ; inclusion of the above copyright notice. This software, or ; any other copies thereof, may not be provided or otherwise ; made available to any other person except for use on such ; system and to one who agrees to these license terms. Title ; to and ownership of the software shall at all times remain ; in Mentec, Inc. ; ; The information in this document is subject to change without ; notice and should not be construed as a commitment by Digital ; Equipment Corporation, or Mentec, Inc. ; ; Digital and Mentec assume no responsibility for the use or ; reliability of its software on equipment which is not supplied ; by Digital or Mentec, and listed in the Software Product ; Description. ;+ ; $MUL ; This routine multiplies two unsigned integers. ; ; R0 = multiplier ; R1 = multiplicand ; ; CALL $MUL ; ; R0 = high order result ; R1 = low order result ;- .PSECT .LIBC. $MUL:: MOV R0,-(SP) ;Save R0 for adds MOV #21,-(SP) ;Set repeat count CLR R0 ;Clear high part 1$: ROR R0 ;Double right shift ROR R1 ; BCC 2$ ;If C-bit = 0, do not add ADD 2(SP),R0 ; 2$: DEC (SP) ;Decrement repeat count BGT 1$ ;If GT, more to go 3$: CMP (SP)+,(SP)+ ;Clean stack RETURN .END