home *** CD-ROM | disk | FTP | other *** search
/ C!T ROM 5 / ctrom5b.zip / ctrom5b / PROGRAM / ASM / ALIB30B / MISC2.ASM < prev    next >
Assembly Source File  |  1994-11-27  |  3KB  |  183 lines

  1.     PAGE    66,132
  2. ;******************************** MISC2.ASM  *********************************
  3. LIBSEG           segment byte public "LIB"
  4.         assume cs:LIBSEG , ds:nothing
  5. ;----------------------------------------------------------------------------
  6.     include    mac.inc
  7.     extrn    stdout_crlf:far
  8.     extrn    stdout_string:far
  9.     extrn    word_to_hex_stdout:far
  10.     extrn    stdout_char:far    
  11.  
  12. comment 
  13. ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -(  MISC   )
  14. ; REGISTER_DUMP - unsigned 32 bit number compare
  15. ;  inputs  registers
  16. ;  outputs  registers displayed on stdout on one line
  17. ;           registers are unchanged
  18. ;
  19. ;  note:  This function is intended for debugging programs.
  20. ;* * * * * * * * * * * * * *
  21. 
  22.  
  23.     public    REGISTER_DUMP
  24. REGISTER_DUMP    proc    far
  25.     mov    cs:rd_ds,ds
  26.     mov    cs:rd_ax,ax
  27.     mov    ax,cs
  28.     mov    ds,ax
  29.     mov    ds:rd_dx,dx
  30.     mov    ds:rd_si,si
  31.     mov    ds:rd_bp,bp
  32.     
  33.     call    stdout_crlf
  34.  
  35.     mov    bp,sp
  36.     mov    ax,word ptr ss:[bp+2]    
  37.     call    word_to_hex_stdout    ;display cs
  38.     mov    al,':'
  39.     call    stdout_char
  40.     mov    ax,word ptr ss:[bp+0]    ;get IP
  41.     call    word_to_hex_stdout
  42.     mov    al,' '
  43.     call    stdout_char
  44.  
  45.     mov    si,offset msg_a
  46.     call    stdout_string
  47.     mov    ax,rd_ax
  48.     call    word_to_hex_stdout
  49.     mov    al,' '
  50.     call    stdout_char
  51.  
  52.     mov    si,offset msg_b
  53.     call    stdout_string
  54.     mov    ax,bx
  55.     call    word_to_hex_stdout
  56.     mov    al,' '
  57.     call    stdout_char
  58.  
  59.     mov    si,offset msg_c
  60.     call    stdout_string
  61.     mov    ax,cx
  62.     call    word_to_hex_stdout
  63.     mov    al,' '
  64.     call    stdout_char
  65.  
  66.     mov    si,offset msg_d
  67.     call    stdout_string
  68.     mov    ax,ds:rd_dx
  69.     call    word_to_hex_stdout
  70.     mov    al,' '
  71.     call    stdout_char
  72.  
  73.     mov    si,offset msg_si
  74.     call    stdout_string
  75.     mov    ax,rd_ds
  76.     call    word_to_hex_stdout
  77.     mov    al,':'
  78.     call    stdout_char
  79.     mov    ax,rd_si
  80.     call    word_to_hex_stdout
  81.     mov    al,' '
  82.     call    stdout_char
  83.  
  84.     mov    si,offset msg_di
  85.     call    stdout_string
  86.     mov    ax,es
  87.     call    word_to_hex_stdout
  88.     mov    al,':'
  89.     call    stdout_char
  90.     mov    ax,di
  91.     call    word_to_hex_stdout
  92.     mov    al,' '
  93.     call    stdout_char
  94.     
  95.     mov    si,offset msg_bp
  96.     call    stdout_string
  97.     mov    ax,bp
  98.     call    word_to_hex_stdout
  99.     
  100.     mov    ax,ds:rd_ax
  101.     mov    dx,ds:rd_dx
  102.     mov    si,ds:rd_si
  103.     mov    bp,ds:rd_bp
  104.     mov    ds,ds:rd_ds    
  105.         
  106.     retf
  107. REGISTER_DUMP    endp
  108.  
  109. comment 
  110. ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -(  MISC   )
  111. ; STACK_DUMP - unsigned 32 bit number compare
  112. ;  inputs  registers
  113. ;  outputs  registers displayed on stdout on one line
  114. ;           registers are unchanged
  115. ;
  116. ;  note:  This function is intended for debugging programs.
  117. ;* * * * * * * * * * * * * *
  118. 
  119.  
  120.     public    STACK_DUMP
  121. STACK_DUMP    proc    far
  122.     mov    cs:rd_ds,ds
  123.     mov    cs:rd_ax,ax
  124.     mov    ax,cs
  125.     mov    ds,ax
  126.     mov    ds:rd_dx,dx
  127.     mov    ds:rd_si,si
  128.     mov    ds:rd_bp,bp
  129.     
  130.     call    stdout_crlf
  131.  
  132.     mov    bp,sp
  133.     add    bp,4
  134.     mov    si,offset msg_sp
  135.     call    stdout_string
  136.     mov    ax,ss
  137.     call    word_to_hex_stdout    ;display ss
  138.     mov    al,':'
  139.     call    stdout_char
  140.     mov    ax,bp
  141.     call    word_to_hex_stdout    ;display sp
  142.     mov    al,' '
  143.     call    stdout_char
  144.  
  145.     mov    rloop,12
  146. sloop:    mov    ax,word ptr [bp]
  147.     call    word_to_hex_stdout
  148.     mov    al,' '
  149.     call    stdout_char
  150.     add    bp,2
  151.     dec    rloop
  152.     jnz    sloop
  153.     
  154.     
  155.     mov    ax,ds:rd_ax
  156.     mov    dx,ds:rd_dx
  157.     mov    si,ds:rd_si
  158.     mov    bp,ds:rd_bp
  159.     mov    ds,ds:rd_ds    
  160.         
  161.     retf
  162. STACK_DUMP    endp
  163.  
  164. rloop    db    0
  165.  
  166. rd_ax    dw    0
  167. rd_dx    dw    0
  168. rd_si    dw    0
  169. rd_bp    dw    0
  170. rd_ds    dw    0
  171.  
  172. msg_a    db    'A=',0
  173. msg_b    db    'B=',0
  174. msg_c    db    'C=',0
  175. msg_d    db    'D=',0
  176. msg_si    db    'DS:SI=',0
  177. msg_di    db    'ES:DI=',0
  178. msg_bp    db    'BP=',0
  179. msg_sp    db    'SS:SP=',0
  180.  
  181. LIBSEG    ENDS
  182. ;;    end
  183.