home *** CD-ROM | disk | FTP | other *** search
- ; from ASSEMBLY LANGUAGE PRIMER FOR THE IBM PC & XT
- ; by Robert LaFore
- ; modified to be compilable by CHASM (disk # 37)
- ;MAIN PART OF PROGRAM
- ;Connects procedures together
- repeat call decibin ;keyboard to binary
- call crlf ;print cr and lf
- call binihex ;binary to screen
- call crlf ;print cr and lf
- jmps repeat ;do it again
-
- ;+++++++++++++++++++++++++++++++++++++++++++
- ;PROCEDURE TO CONVERT DEC ON KEYBD TO BINARY
- ;result is left in bx register
- decibin proc near
- mov bx,0 ;clear bx for number
- ; get digit from keyboard, convert to binary
- newchar mov ah,1 ;keyboard input
- int 21h ;call DOs
- sub al,30h ;ASCII to binary
- jl exit ;jump if <0
- cmp al,9 ;> 9d?
- jg exit ;if so, not a dec. digit
- cbw ;byte in al to word in ax
- ;(digit is now in ax)
- ;Multiply number in bx by 10 decimal
- xchg ax,bx ;trade digit and number
- mov cx,10 ;put 10d in cx
- mul ax,cx ;number times 10 (ChAsm wants "ax")
- xchg ax,bx ;trade number and digit
- ;add digit in ax to number in bx
- add bx,ax ;add digit to number
- jmps newchar ;get next digit
- exit
- ret ;return from decibin
- endp
- ;+++++++++++++++++++++++++++++++++++++++++++
- ;PROCEDURE TO CONVERT BINARY NUMBER IN BX TO HEX ONSCREEN
-
- binihex proc near ;
- mov ch,4 ;number of digits
- rotate mov cl,4 ;set count to 4 bits
- rol bx,cl ;left digit to right
- mov al,bl ;move to al
- and al,0fh ;mask off left digit
- add al,30h ;convert to ascii
- cmp al,3ah ;is it > 9?
- jl printit ;if not, printit
- add al,7h ;digit is A to F
- printit
- mov dl,al ;put ascii chr in dl
- mov ah,2 ;display output function
- int 21h ;DOS call
- dec ch ;done 4 yet?
- jnz rotate ;if not, go back
- ret ; return from binihex
- endp
- ;+++++++++++++++++++++++++++++++++++++++++++
- ;PROCEDURE TO PRINT CR AND LF ONSCREEN
- crlf proc near
- mov dl,0dh ;carriage return
- mov ah,2 ;display function
- int 21h ;DosCall
- mov dl,0ah ;linefeed
- mov ah,2 ;display function
- int 21h ;DosCall
- ret ;return from crlf
- endp
- ;+++++++++++++++++++++++++++++++++++++++++++
- ;decihex ends
- ;+++++++++++++++++++++++++++++++++++++++++++