📄 showreg.asm
字号:
;***************************
;文件:ShowReg.asm *
;功能:显示80X86的寄存器 *
;***************************
.386P
DATA SEGMENT USE16
BEGIN LABEL BYTE
_CS DB 'CS = ',0DH,0AH
_IP DB 'IP = ',09H
_DS DB 'DS = ',0DH,0AH
_ES DB 'ES = ',09H
_FS DB 'FS = ',0DH,0AH
_GS DB 'GS = ',09H
_SS DB 'SS = ',0DH,0AH
_ESP DB 'ESP= ',09H
_EAX DB 'EAX= ',0DH,0AH
_EBX DB 'EBX= ',09H
_ECX DB 'ECX= ',0DH,0AH
_EDX DB 'EDX= ',09H
_ESI DB 'ESI= ',0DH,0AH
_EDI DB 'EDI= ',09H
_EBP DB 'EBP= ',0DH,0AH
_CR0 DB 'CR0= ',09H
_CR2 DB 'CR2= ',0DH,0AH
_CR3 DB 'CR3= ',09H
_DR0 DB 'DR0= ',0DH,0AH
_DR1 DB 'DR1= ',09H
_DR2 DB 'DR2= ',0DH,0AH
_DR3 DB 'DR3= ',09H
_DR6 DB 'DR6= ',0DH,0AH
_DR7 DB 'DR7= ',09H
_EFL DB 'EFL= ',0DH,0AH
_LDTR DB 'LDTR= ',0DH,0AH
_GDTR DB 'GDTR= ',0DH,0AH
_IDTR DB 'IDTR= ',09H
DB '$'
DIGIT DB '0123456789ABCDEF'
DATA ENDS
;++++++++++++++++++++++++++++++++
CODE SEGMENT USE16
ASSUME CS:CODE,DS:DATA,ES:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV AX,CS
LEA DI,[_CS+4]
CALL COMPUTE16
MOV AX,DS
LEA DI,[_DS+4]
CALL COMPUTE16
MOV AX,ES
LEA DI,[_ES+4]
CALL COMPUTE16
MOV AX,FS
LEA DI,[_FS+4]
CALL COMPUTE16
MOV AX,GS
LEA DI,[_GS+4]
CALL COMPUTE16
MOV AX,SS
LEA DI,[_SS+4]
CALL COMPUTE16
CALL NEXT
NEXT:
POP AX
LEA DI,[_IP+4]
CALL COMPUTE16
MOV EAX,EAX
LEA DI,[_EAX+4]
CALL COMPUTE32
MOV EAX,EBX
LEA DI,[_EBX+4]
CALL COMPUTE32
MOV EAX,ECX
LEA DI,[_ECX+4]
CALL COMPUTE32
MOV EAX,EDX
LEA DI,[_EDX+4]
CALL COMPUTE32
MOV EAX,ESI
LEA DI,[_ESI+4]
CALL COMPUTE32
MOV EAX,EDI
LEA DI,[_EDI+4]
CALL COMPUTE32
MOV EAX,EBP
LEA DI,[_EBP+4]
CALL COMPUTE32
MOV EAX,ESP
LEA DI,[_ESP+4]
CALL COMPUTE32
MOV EAX,CR0
LEA DI,[_CR0+4]
CALL COMPUTE32
MOV EAX,CR2
LEA DI,[_CR2+4]
CALL COMPUTE32
MOV EAX,CR3
LEA DI,[_CR3+4]
CALL COMPUTE32
MOV EAX,DR0
LEA DI,[_DR0+4]
CALL COMPUTE32
MOV EAX,DR1
LEA DI,[_DR1+4]
CALL COMPUTE32
MOV EAX,DR2
LEA DI,[_DR2+4]
CALL COMPUTE32
MOV EAX,DR3
LEA DI,[_DR3+4]
CALL COMPUTE32
MOV EAX,DR6
LEA DI,[_DR6+4]
CALL COMPUTE32
MOV EAX,DR7
LEA DI,[_DR7+4]
CALL COMPUTE32
PUSHFD
POP EAX
LEA DI,[_EFL+4]
CALL COMPUTE32
; sldt ax
; lea di,[_LDTR+5]
; call Compute16
PUSH EAX
PUSH AX
SGDT [ESP]
POP AX
LEA DI,[_GDTR+5]
CALL COMPUTE16
ADD DI,4
POP EAX
CALL COMPUTE32
PUSH EAX
PUSH AX
SIDT [ESP]
POP AX
LEA DI,[_IDTR+5]
CALL COMPUTE16
ADD DI,4
POP EAX
CALL COMPUTE32
MOV AH,9
MOV DX,OFFSET BEGIN
INT 21H
MOV AH,4CH
INT 21H
COMPUTE32:
PUSHAD
MOV BX,OFFSET DIGIT
MOV CX,8
CLD
AGAIN:
ROL EAX,4
PUSH EAX
AND EAX,0FH
XLAT
STOSB
POP EAX
LOOP AGAIN
POPAD
RET
COMPUTE16:
PUSHAD
MOV BX,OFFSET DIGIT
MOV CX,4
CLD
AGAIN1:
ROL AX,4
PUSH AX
AND AX,0FH
XLAT
STOSB
POP AX
LOOP AGAIN1
POPAD
RET
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -