showreg.asm
来自「windows下汇编语言 学习汇编语言好助手」· 汇编 代码 · 共 199 行
ASM
199 行
;***************************
;文件: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 + =
减小字号Ctrl + -
显示快捷键?