home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / assemblr / library / nor_asm / disp_s15.asm < prev    next >
Assembly Source File  |  1989-05-16  |  2KB  |  80 lines

  1. .MODEL    SMALL
  2.  
  3. .DATA?
  4.  
  5.     PUBLIC    SECTOR
  6. SECTOR    DB    8192 DUP (?)
  7.  
  8. .CODE
  9.  
  10.     PUBLIC    DISP_HALF_SECTOR
  11.     EXTRN    SEND_CRLF:PROC
  12. ;-----------------------------------------------------------------------;
  13. ; This procedure displays half a sector (256 bytes)            ;
  14. ;                                    ;
  15. ; On entry:    DS:DX    Offset into sector, in bytes -- should be    ;
  16. ;            multiple of 16.                    ;
  17. ;                                    ;
  18. ; Uses:        DISP_LINE, SEND_CRLF                    ;
  19. ;-----------------------------------------------------------------------;
  20. DISP_HALF_SECTOR    PROC
  21.     PUSH    CX
  22.     PUSH    DX
  23.     MOV    CX,16            ;Display 16 lines
  24. HALF_SECTOR:
  25.     CALL    DISP_LINE
  26.     CALL    SEND_CRLF
  27.     ADD    DX,16
  28.     LOOP    HALF_SECTOR
  29.     POP    DX
  30.     POP    CX
  31.     RET
  32. DISP_HALF_SECTOR    ENDP
  33.  
  34.  
  35.     PUBLIC    DISP_LINE
  36.     EXTRN    WRITE_HEX:PROC
  37.     EXTRN    WRITE_CHAR:PROC
  38. ;-----------------------------------------------------------------------;
  39. ; This procedure displays one line of data, or 16 bytes, first in hex,    ;
  40. ; then in ASCII.                            ;
  41. ;                                    ;
  42. ; On entry:    DS:DX    Offset into sector, in bytes.            ;
  43. ;                                    ;
  44. ; Uses:        WRITE_CHAR, WRITE_HEX                    ;
  45. ; Reads:    SECTOR                            ;
  46. ;-----------------------------------------------------------------------;
  47. DISP_LINE    PROC
  48.     PUSH    BX
  49.     PUSH    CX
  50.     PUSH    DX
  51.     MOV    BX,DX            ;Offset is more useful in BX
  52.     MOV    CX,16            ;Dump 16 bytes
  53.     PUSH    BX            ;Save the offset for ASCII_LOOP
  54. HEX_LOOP:
  55.     MOV    DL,SECTOR[BX]        ;Get 1 byte
  56.     CALL    WRITE_HEX        ;Dump this byte in hex
  57.     MOV    DL,' '            ;Write a space between numbers
  58.     CALL    WRITE_CHAR
  59.     INC    BX
  60.     LOOP    HEX_LOOP
  61.  
  62.     MOV    DL,' '            ;Add another space before characters
  63.     CALL    WRITE_CHAR
  64.     MOV    CX,16
  65.     POP    BX            ;Get back offset into SECTOR
  66. ASCII_LOOP:
  67.     MOV    DL,SECTOR[BX]
  68.     CALL    WRITE_CHAR
  69.     INC    BX
  70.     LOOP    ASCII_LOOP
  71.  
  72.     POP    DX
  73.     POP    CX
  74.     POP    BX
  75.     RET
  76. DISP_LINE    ENDP
  77.  
  78.  
  79.     END
  80.