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 + -
显示快捷键?