home *** CD-ROM | disk | FTP | other *** search
/ World of Shareware - Software Farm 2 / wosw_2.zip / wosw_2 / CPROG / CEXPRESS.ZIP / SCREEN.ASM / DISPMEMB.ASM < prev    next >
Assembly Source File  |  1989-05-03  |  2KB  |  60 lines

  1. ;void  display_mem_b(segment,offset,num_chars,col,row,color);
  2. ;  unsigned short  segment,offset,num_chars;
  3. ;  unsigned char  col,row,color;
  4.  
  5.     EXTRN  _memory_model:byte
  6.     EXTRN  _video_page:byte
  7.  
  8. _TEXT    SEGMENT BYTE PUBLIC 'CODE'
  9.     ASSUME CS:_TEXT
  10.     PUBLIC _display_mem_b
  11. _display_mem_b proc near
  12.     push bp            ;
  13.     mov  bp,sp        ;set stack frame
  14.     push di            ;
  15.     push si            ;
  16.     cmp  _memory_model,0    ;near or far?
  17.     jle  begin        ;jump if near
  18.     inc  bp            ;else add 2 to BP
  19.     inc  bp            ;
  20. begin:    push ds            ;save DS
  21.     mov  bh,_video_page    ;set the video page
  22.     mov  ax,[bp+4]        ;get segment
  23.     mov  ds,ax        ;
  24.     mov  si,[bp+6]        ;offset
  25.     mov  bl,[bp+14]        ;attribute in BL
  26.     mov  dh,[bp+12]        ;Row
  27.     dec  dh            ;count from zero
  28.     mov  dl,[bp+10]        ;Col
  29.     dec  dl            ;count from zero
  30.     mov  cx,[bp+8]        ;NumChars
  31.     jcxz L3            ;quit if null
  32.     mov  di,cx        ;keep Strg ctr in DI
  33.     mov  cx,1        ;write 1 char each time
  34. L1:    mov  ah,2        ;function to set cursor
  35.     int  10h        ;set the cursor
  36.     mov  ah,9        ;function to write char
  37.     mov  al,[si]        ;get a character
  38.     int  10h        ;write it
  39.     inc  si            ;forward string ptr
  40.     inc  dl            ;inc column position
  41.     cmp  dl,80        ;beyond edge of screen?
  42.     jne  L2            ;jump ahead if not
  43.     mov  dl,0        ;back to left
  44.     cmp  dh,24        ;bottom row?
  45.     je   L2            ;jump if so
  46.     inc  dh            ;else forward row
  47. L2:    dec  di            ;dec Strg length counter
  48.     jnz  L1            ;loop till finished
  49. L3:    pop  ds            ;
  50.     pop  si            ;
  51.     pop  di            ;
  52.     pop  bp            ;
  53.     cmp  _memory_model,0    ;quit
  54.     jle  quit        ;
  55.     db   0CBh        ;RET far
  56. quit:    ret            ;RET near
  57. _display_mem_b endp
  58. _TEXT    ENDS
  59.     END
  60.