home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / assemblr / library / asm_kit / decihex.asm < prev    next >
Assembly Source File  |  1985-06-21  |  4KB  |  96 lines

  1. ;DECIHEX--Main Program
  2. ; Converts decimal on keyboard to hex on screen
  3. ;
  4. ;********************************************************************
  5. ;
  6. ;MAIN PART OF PROGRAM.  Connects procedures together
  7. ;
  8. decihex segment
  9.         assume cs:decihex
  10. repeat: call decibin                 ;keyboard to binary
  11.         call crlf                    ;print cr and lf
  12.         call binihex                 ;binary to screen
  13.         call crlf                    ;print cr amd lf
  14.         jmp  repeat
  15. ;
  16. ;--------------------------------------------------------------------
  17. ;PROCEDURE TO CONVERT DEC ON KEYBOARD TO BINARY
  18. ;  Results is left in BX register
  19. ;
  20. decibin proc near
  21. ;
  22. ;
  23.         mov bx,0                     ;clear BX for number
  24. ;
  25. ;Get digit from keyboard, convert to binary
  26. ;
  27. newchar:
  28.         mov ah,1                     ;keyboard input
  29.         int 21h                      ;call DOS
  30.         sub al,30h                   ;ASCII to binary
  31.         jl exit                      ;jump if <0
  32.         cmp al,9h                    ;is it > 9d ?
  33.         jg exit                      ;yes, not decimal digit
  34.         cbw                          ;byte in AL to word in AX
  35. ;(digit is now in AX)
  36. ;
  37. ;Multiply number in BX by 10 decimal
  38.         xchg ax,bx                   ;trade digit & number
  39.         mov cx,10d                   ;put 10 decimal in CX
  40.         mul cx                       ;number times 10
  41.         xchg ax,bx                   ;trade number & digit
  42. ;
  43. ;Add digit in AX to number in BX
  44.         add bx,ax                    ;add digit to number
  45.         jmp newchar                  ;get next digit
  46. exit:
  47. ;
  48.         ret                          ;return from decibin
  49. ;
  50. decibin endp
  51. ;--------------------------------------------------------------------
  52. ;PROCEDURE TO CONVERT BINARY NUMBER IN BX TO HEX ON CONSOLE SCREEN
  53. ;
  54. binihex proc near
  55. ;
  56.                      mov ch,4           ;number of digits
  57. rotate:              mov cl,4           ;set count to 4 bits
  58.                      rol bx,cl          ;left digit to right
  59.                      mov al,bl          ;move to AL
  60.                      and al,0fh         ;mask off left digit
  61.                      add al,30h         ;convert hex to ASCII
  62.                      cmp al,3ah         ;is it > 9?
  63.                      jl  printit        ;jump if digit = 0 to 9
  64.                      add al,7h          ;digit is A to F
  65. printit:
  66.                      mov dl,al          ;put ASCII char in DL
  67.                      mov ah,2           ;Display Output function
  68.                      int 21h            ;call DOS
  69.                      dec ch             ;done 4 digits?
  70.                      jnz rotate         ;not yet
  71. ;
  72.                      ret                ;return from binihex
  73. ;
  74. binihex              endp               ;end of segment
  75. ;--------------------------------------------------------------------
  76. ;PROCEDURE TO PRINT CARRIAGE RETURN AND LINEFEED
  77. ;
  78. crlf                 proc near
  79. ;
  80.                      mov dl,0dh        ;carriage return
  81.                      mov ah,2          ;dispaly function
  82.                      int 21h           ;call DOS
  83. ;
  84.                      mov dl,0ah        ;linefeed
  85.                      mov ah,2          ;display function
  86.                      int 21h           ;call DOS
  87. ;
  88.                      ret              ;return from crlf
  89. ;
  90. crlf                 endp
  91. ;--------------------------------------------------------------------
  92. decihex              ends
  93. ;********************************************************************
  94.                      end
  95. ;====================================================================
  96.