# Category : Assembly Language Source Code

Archive : ASM_SUBR.ZIP

Filename : SGND16IN

; from BLUEBOOK OF ASSEMBLY ROUTINES FOR IBM PC & XT.

; page : 78

;

; NAME SGND16IN

; ROUTINE FOR Conversion From ASCII Signed Decimal To Binary

;

; FUNCTION: This routine accepts a signed decimal number from the std

; input device and converts it to internal signed two's complement 16-bit

; binary form.

;

; INPUT: Individual digits of the signed decimal number are received in

; ASCII through a call to a std input routine. The sign (+/-) is optional

; and the valid digits are 0 through 9. An ASCII code other than that for

; the sign and the valid digits terminates the routine.

;

; OUTPUT: A signed two's complement 16-bit binary number is returned in the

; DX register.

;

; REGISTERS USED: AX and CX are modified. DX is used for output.

; SEGMENTS REFERENCED: None

; ROUTINES CALLED: STDIN

; SPECIAL NOTES: None

;

; ROUTINE TO CONVERT FROM ASCII SIGNED DECIMAL TO INTERNAL TWO'S COMPLEMENT

; 16-BIT BINARY.

;

sgnd16in proc far

;

mov dx,0 ; initialize dx

mov ch,0 ; sign flag

;

call stdin ; look for sign

cmp al,'-' ; was it minus ?

jz sgnd16in1 ; yes... store it

cmp al,'+' ; was it a plus ?

jz sgnd16in2 ; ignore pluses

jmp sgnd16in3 ; anything else is a number

;

sgnd16in1:

; set sign as a negative

mov ch,0FFh ; 0FFh is -1 in two's complement

;

sgnd16in2

; normal loop

call stdin ; receive a digit in AL

;

sgnd16in3:

; already have a digit

sub al,30h ; reduce from ASCII

jl sgnd16in4 ; check if too low

cmp al,9

jg sgnd16in4 ; check if too high

cbw ; convert to word

;

push cx ; save sign

push ax ; save digit

mov ax,dx

mov cx,10 ; multiplier of ten

mul cx ; multiply

mov dx,ax ; result in dx

pop ax ; restore digit

;

add dx,ax ; add in digit

pop cx ; restore count

jmp sgnd16in2

;

sgnd16in4:

; resolve the sign

cmp ch,0 ; is it there ?

je sgnd16in5 ; no... skip it

;

neg dx ; was negative

;

sgnd16in5:

;

ret ; return

;

sgnd16in endp

;-------------------------sgnd16in routine ends---------------------------+

Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/