section .data m1 db 10,13, 'Processor is in real mode' m1Len equ $-m1 m2 db 10,13, 'Processor is in protected mode' m2Len equ $-m2 m3 db 10,13, 'Contents of GDTR are: ' m3Len equ $-m3 m4 db 10,13, 'Contents of LDTR are: ' m4Len equ $-m4 m5 db 10,13, 'Contents of IDTR are: ' m5Len equ $-m5 m6 db 10,13, 'Contents of TR are: ' m6Len equ $-m6 m7 db 10,13, 'Contents of MSW are: ' m7Len equ $-m7 colon db ':' newline db 10 section .bss gdt resw 1 resd 1 ldt resw 1 idt resw 1 resd 1 tr resw 1 msw resw 1 disp_buff resb 8 %macro disp 2 mov eax,04 mov ebx,01 mov ecx,%1 mov edx,%2 int 80h %endmacro section .text global _start _start: smsw ax mov[msw],ax bt ax,0 jc prm disp m1,m1Len jmp exit exit: mov eax,1 mov ebx,0 int 80h prm: disp m2,m2Len next1: sgdt[gdt] sldt[ldt] sidt[idt] str[tr] smsw[msw] disp m3,m3Len mov bx,[gdt+4] call disp4 mov bx,[gdt+2] call disp4 disp m4,m4Len mov bx,[ldt] call disp4 disp m5,m5Len mov bx,[idt] call disp4 mov bx,[idt+2] call disp4 disp m6,m6Len mov bx,[tr] call disp4 disp m7,m7Len mov bx,[msw] call disp4 disp newline,1 jmp exit disp4: mov ecx,4 mov edi, disp_buff up1: rol bx,04 mov al,bl and al,0fh cmp al,09 jbe y add al,07h y: add al,30h mov[edi],al inc edi loop up1 disp disp_buff,4 ret