Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. format MZ
  2. heap 0
  3. stack 800h
  4. entry main:start
  5.  
  6. segment main use16
  7.  
  8. use16
  9. start:
  10.  
  11.  mov ax,_data
  12.  mov ds, ax
  13.  mov es, ax
  14.  
  15.  xor eax, eax
  16.  mov ax,ds
  17.  
  18.  shl eax, 4
  19.  
  20.  mov bx, gdt
  21.  add ebx, eax ; ebx - ëèíåéíûé àäðåñ gdt
  22.  
  23.  mov word [gdtPtr], 2 * 8 -1 ; ïðåäåë gdt 2 äåñêðèïòîðà = 0x000f
  24.  mov dword [gdtPtr + 2], ebx
  25.  
  26.  lgdt pword [gdtPtr]
  27.  
  28.  in al, 0x70 ;çàïðåùàåì NMI
  29.  mov bl, al
  30.  or al, 0x80
  31.  out 70h , al
  32.  in al, 0x71 ;íåêîòîðûå RTC ïîñëå çàïèñè áàéòà â ïîðò 0õ70
  33.              ;îæèäàþò îáðàùåíèÿ ê ïîðòó 0x71
  34.  
  35.  cli
  36.  
  37.  mov eax, cr0
  38.  or al, 01b
  39.  mov cr0, eax
  40.  
  41.  mov dx, 0x08
  42.  mov gs, dx ;gs - ãëîáàëüíûé ñåãìåíò ñ áàçîé 0 è ïðåäåëîì 0xFFFFFFFF
  43.  mov fs, dx
  44.  
  45.  and al, 0xFE
  46.  mov cr0, eax
  47.  
  48.  sti
  49.  
  50.  mov al, bl
  51.  out 70h , al
  52.  in al, 71h
  53.  
  54.  mov dx,92h
  55.  in al,dx
  56.  or al,2
  57.  out dx,al
  58.  
  59. ;òåïåðü ìîæíî ïîëó÷èòü äîñòóï êî âñåé ïàìÿòè
  60. ;íàïðèìåð
  61. ;mov eax, [gs:0xFFFFFFF0] ;
  62.  
  63.  mov ah,4ch ;çàâåðøåíèå ÄÎÑ ïðîãðàììû
  64.  int 21h
  65.  
  66. segment _data use16
  67.  
  68.  align 16
  69.  
  70.  gdt dw 0, 0, 0, 0 ;0
  71.  _flat dw 0ffffh,0,0F200h,008fh ;08 ñåãìåíò äàííûõ DPL = 3
  72.  ;áàçà 0, ïðåäåë 0xFFFFFFFF
  73.  
  74.  gdtPtr dq ?