home *** CD-ROM | disk | FTP | other *** search
/ World of Shareware - Software Farm 2 / wosw_2.zip / wosw_2 / CPROG / TASMSWAN.ZIP / CONVERT.ASM < prev    next >
Assembly Source File  |  1989-07-14  |  2KB  |  101 lines

  1. %TITLE  "Convert Binary/Hexadecimal/Decimal numbers"
  2.  
  3.     IDEAL
  4.     DOSSEG
  5.     MODEL    small
  6.     STACK    256
  7.  
  8. EOS    EQU    0
  9. cr    EQU    13
  10. lf    EQU    10
  11. maxLen    EQU    40
  12.  
  13.  
  14.     DATASEG
  15.  
  16. exitCode    db    0
  17. welcome        db    cr,lf,'Convert binary/hexadecimal/decimal values'
  18.         db    cr,lf,'(C) 1989 by Tom Swan',cr,lf
  19.         db    cr,lf,'Press <ENTER> to quit.',cr,lf,EOS
  20. prompt        db    cr,lf,cr,lf,'Value to convert? ', EOS
  21. error        db    cr,lf,'*** ERROR:  illegal character in string',EOS
  22. binary        db      cr,lf,'Binary ............. : ', EOS
  23. hex        db    cr,lf,'Hexadecimal ........ : ', EOS
  24. decimal        db    cr,lf,'Unsigned decimal ... : ', EOS
  25. sdecimal    db    cr,lf,'Signed decimal ..... : ', EOS
  26. value        dw    ?
  27. response    db    maxLen + 1 DUP (?)
  28.  
  29.  
  30.     CODESEG
  31.  
  32. ;----- from STRINGS.OBJ & STRIO.OBJ
  33.  
  34.     EXTRN    StrLength:proc, StrRead:proc
  35.     EXTRN    StrWrite:proc, NewLine:proc
  36.  
  37. ;----- from BINASC.OBJ
  38.  
  39.     EXTRN    BinToAscHex:proc, SBinToAscDec:proc, BinToAscDec:proc
  40.     EXTRN    BinToAscBin:proc, AscToBin:proc
  41.  
  42.  
  43. Start:
  44.     mov    ax,@data
  45.     mov    ds,ax
  46.     mov    es,ax
  47.  
  48.     mov    di, OFFSET welcome
  49.     call    StrWrite
  50. Again:
  51.     mov    di, OFFSET prompt
  52.     call    StrWrite
  53.     mov    di, OFFSET response
  54.     mov    cx,maxLen
  55.     call    StrRead
  56.     call    NewLine
  57.     call    StrLength
  58.     jcxz    Exit
  59.     call    AscToBin
  60.     mov    [value],ax
  61.     jnc    Continue
  62.     mov    di, OFFSET error
  63.     call    StrWrite
  64.     jmp    Again
  65. Continue:
  66.     mov    di,OFFSET binary
  67.     call    StrWrite
  68.     mov    ax,[value]
  69.     mov    cx,16
  70.     mov    di,OFFSET response
  71.     call    BinToAscBin
  72.     call    StrWrite
  73.     mov    di,OFFSET hex
  74.     call    StrWrite
  75.     mov    ax,[value]
  76.     mov    cx,4
  77.     mov    di,OFFSET response
  78.     call    BinToAscHex
  79.     call    StrWrite
  80.     mov    di,OFFSET decimal
  81.     call    StrWrite
  82.     mov    ax,[value]
  83.     mov    cx,1
  84.     mov    di,OFFSET response
  85.     call    BinToAscDec
  86.     call    StrWrite
  87.     mov    di,OFFSET sdecimal
  88.     call    StrWrite
  89.     mov    ax,[value]
  90.     mov    cx,1
  91.     mov    di,OFFSET response
  92.     call    SBinToAscDec
  93.     call    StrWrite
  94.     jmp    Again
  95. Exit:
  96.     mov    ah,04Ch
  97.     mov    al,[exitCode]
  98.     int    21h
  99.  
  100.     END    Start
  101.