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