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

  1. DOSSEG
  2. .MODEL    SMALL
  3.  
  4. .STACK
  5.  
  6. .DATA
  7.  
  8.     PUBLIC    SECTOR
  9. SECTOR    DB    16 DUP (10h)
  10.     DB    16 DUP (11h)
  11.     DB    16 DUP (12h)
  12.     DB    16 DUP (13h)
  13.     DB    16 DUP (14h)
  14.     DB    16 DUP (15h)
  15.     DB    16 DUP (16h)
  16.     DB    16 DUP (17h)
  17.     DB    16 DUP (18h)
  18.     DB    16 DUP (19h)
  19.     DB    16 DUP (1Ah)
  20.     DB    16 DUP (1Bh)
  21.     DB    16 DUP (1Ch)
  22.     DB    16 DUP (1Dh)
  23.     DB    16 DUP (1Eh)
  24.     DB    16 DUP (1Fh)
  25.  
  26. .CODE
  27.  
  28.     PUBLIC    DISP_HALF_SECTOR
  29.     EXTRN    SEND_CRLF:PROC
  30. ;-----------------------------------------------------------------------;
  31. ; This procedure displays half a sector (256 bytes)            ;
  32. ;                                    ;
  33. ; Uses:        DISP_LINE, SEND_CRLF                    ;
  34. ;-----------------------------------------------------------------------;
  35. DISP_HALF_SECTOR    PROC
  36.     MOV    AX,DGROUP        ;Put data segment into AX
  37.     MOV    DS,AX            ;Sets DS to point to data
  38.  
  39.     XOR    DX,DX            ;Start at beginning of SECTOR
  40.     MOV    CX,16            ;Display 16 lines
  41. HALF_SECTOR:
  42.     CALL    DISP_LINE
  43.     CALL    SEND_CRLF
  44.     ADD    DX,16
  45.     LOOP    HALF_SECTOR
  46.  
  47.     MOV    AH,4Ch            ;Return to DOS
  48.     INT    21h
  49. DISP_HALF_SECTOR    ENDP
  50.  
  51.  
  52.     PUBLIC    DISP_LINE
  53.     EXTRN    WRITE_HEX:PROC
  54.     EXTRN    WRITE_CHAR:PROC
  55. ;-----------------------------------------------------------------------;
  56. ; This procedure displays one line of data, or 16 bytes, first in hex,    ;
  57. ; then in ASCII.                            ;
  58. ;                                    ;
  59. ; On entry:    DS:DX    Offset into sector, in bytes.            ;
  60. ;                                    ;
  61. ; Uses:        WRITE_CHAR, WRITE_HEX                    ;
  62. ; Reads:    SECTOR                            ;
  63. ;-----------------------------------------------------------------------;
  64. DISP_LINE    PROC
  65.     PUSH    BX
  66.     PUSH    CX
  67.     PUSH    DX
  68.     MOV    BX,DX            ;Offset is more useful in BX
  69.     MOV    CX,16            ;Dump 16 bytes
  70.     PUSH    BX            ;Save the offset for ASCII_LOOP
  71. HEX_LOOP:
  72.     MOV    DL,SECTOR[BX]        ;Get 1 byte
  73.     CALL    WRITE_HEX        ;Dump this byte in hex
  74.     MOV    DL,' '            ;Write a space between numbers
  75.     CALL    WRITE_CHAR
  76.     INC    BX
  77.     LOOP    HEX_LOOP
  78.  
  79.     MOV    DL,' '            ;Add another space before characters
  80.     CALL    WRITE_CHAR
  81.     MOV    CX,16
  82.     POP    BX            ;Get back offset into SECTOR
  83. ASCII_LOOP:
  84.     MOV    DL,SECTOR[BX]
  85.     CALL    WRITE_CHAR
  86.     INC    BX
  87.     LOOP    ASCII_LOOP
  88.  
  89.     POP    DX
  90.     POP    CX
  91.     POP    BX
  92.     RET
  93. DISP_LINE    ENDP
  94.  
  95.  
  96.     END    DISP_HALF_SECTOR
  97.