DOS下RSR调试程序

B站影视 2025-02-24 20:22 1

摘要:state1 dw 'VO','ND','IE','GN','RZ','CA','EP','YC'

;Used for RSR debugging

;INT 61H

IF DEBUG

d_str db 'AX=0000 BX=0000 CX=0000 DX=0000 '

db 'SP=0000 BP=0000 SI=0000 DI=0000 '

db 'DS=0000 ES=0000 SS=0000 CS=0000 '

db 'IP=0000 NV UP DI PL NZ NA PO NC ',0

state1 dw 'VO','ND','IE','GN','RZ','CA','EP','YC'

state2 dw 'VN','PU','ID','LP','ZN','AN','OP','CN'

flag_mask dw 0000100000000000B

dw 0000010000000000B

dw 0000001000000000B

dw 0000000010000000B

dw 0000000001000000B

dw 0000000000010000B

dw 0000000000000100B

dw 0000000000000001B

d_hex db '0123456789ABCDEF',0

d_rtemp dw 16 dup (0)

ENDIF

new_int61 proc far

IF DEBUG

sti

assume ds:nothing ;Override segment with CS

mov d_rtemp[00],ax ;Save all the register to d_rtemp

mov d_rtemp[02],bx

mov d_rtemp[04],cx

mov d_rtemp[06],dx

mov d_rtemp[08],sp

mov d_rtemp[10],bp

mov d_rtemp[12],si

mov d_rtemp[14],di

mov d_rtemp[16],ds

mov d_rtemp[18],es

mov d_rtemp[20],ss

pop ax ;get IP

pop bx ;get CS

pop cx ;get FLAG

push cx

push bx

push ax

mov d_rtemp[22],bx ;Save CS register

mov d_rtemp[24],ax ;Save IP register

mov d_rtemp[26],cx ;Save FLAG register

add word ptr d_rtemp[8],6 ;Adjust SP value

assume cs:cseg,ds:cseg ;Does not override segment

mov ax,cs

mov ds,ax

mov si,0 ;Translate register value to ascii

mov di,offset d_str

add di,3

debug1: mov ax,d_rtemp[si]

push si

mov dl,4

debug2: mov cl,4

rol ax,cl

mov si,ax

and si,000FH

mov bl,d_hex[si]

mov [di],bl

inc di

dec dl

jnz debug2

pop si

add di,6

add si,2

cmp si,26

jne debug1

mov ax,d_rtemp[26] ;Translate FLAG to ascii

mov di,131

mov si,0

mov bx,offset flag_mask

mov cx,8

debug3: mov dx,state2[si]

test ax,[bx+si]

jz debug4

mov dx,state1[si]

debug4: mov word ptr d_str[di],dx

add di,3

add si,2

loop debug3

mov si,0 ;Display

mov ah,0EH

mov bh,1

mov bl,5

debug5: mov al,d_str[si]

int 10H

inc si

cmp si,160

jne debug5

mov ax,d_rtemp[00] ;Restore all the registers value

mov bx,d_rtemp[02] ;that have been modified

mov cx,d_rtemp[04]

mov dx,d_rtemp[06]

mov si,d_rtemp[12]

mov di,d_rtemp[14]

mov ds,d_rtemp[16]

来源:小何科技观察

相关推荐