Прерывания в защищенном режиме процессора IA-32

Тема в разделе "WASM.OS.DEVEL", создана пользователем wasm_test, 17 мар 2007.

  1. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Цитирую кстати:
    Источник: http://www.wasm.ru/article.php?article=ab_flashbios_i

    rei3er
    опередил )
     
  2. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Great
    Тут спорить не буду. Так как официальной документации не встречал.
    Добавлю что обычно по этому аддресу 0FFFFFFF0h и находиться дальней переход.
     
  3. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Судя по всей собранной инфе, теневая часть CS содержит дескриптор сегмента с базой FFFF0000 при загрузке.
    Поэтому CS:FFF0 как раз транслируется в линейный адрес FFFFFFF0.
    Забавно, зачем так сделано... хотя в проце много странностей) чего стоят две команды loadall...
     
  4. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    есть подозрение, что 0xFFFFFFF0 интерпретируется на уровне контроллера памяти как доступ к EEPROM (по анологии с доступом к регистрам APIC через базовый адрес 0xFEE00000), а вот почему именно такой адрес - интересно
     
  5. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    то, что именуется физ.адресами памяти в мануалах на проц -- это физ. адреса только с точки зрения самого проца. С точки зрения же чипсета физ. адрес от проца -- это не физический, а "виртуальный", который надо "преобразовывать" по аналогии как проц преобразует линейный в физический (хреновая аналогия, на всё же). ;) Т.е. в зависимости от настроек чипсета (в т.ч. и дефолтовых после сброса) "физический" адрес от проца может быть как реальным физ.адресом памяти, так и переадресован на другой адрес физ.памяти, также как может адресовать вообще не физ.память, а память устройства, memory-mapped регистры и тп. Из этой оперы и 0FFFFFFF0h.
     
  6. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    ...И всю эту информациб можно считать через MSR :P
     
  7. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    какую информацию, какие MSR?
    Даже на процах со встроенным контроллером памяти всё не только на нем одном зиждется.
     
  8. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    после ресета чипсет обычно перенаправляет обращения к памяти по адресам FFFF0000-FFFFFFFF на LPC или FWH. А там на них обычно реагирует EPROM. Позже проц может перенастроить это поведение чипсета путем конфигурирования его регистров, отображенных на I/O, но после ресета все снова вернется на свои места. Способы конфигурирования специфичны для каждого чипсета.
     
  9. Toxasoft

    Toxasoft New Member

    Публикаций:
    0
    Регистрация:
    20 сен 2010
    Сообщения:
    188
    Покритикуйте....
    Я вот переделал немного (кому может надо..) обработчик клавиатуры.

    Код (Text):
    1. int9_handler:
    2.     push eax
    3.     push edi
    4.     xor  ax, ax
    5.  
    6.     ; запрашиваем позиционный код клавиши
    7.     in   al, 060h
    8.     cmp al,14
    9.     jnz vvivio
    10.     cmp  dword [cursor],0
    11.     jz Ack
    12.     dec  dword [cursor]
    13.     mov  edi, dword [cursor]
    14.     shl  edi, 1
    15.     mov  byte [es:edi],0
    16.     jmp Ack
    17.     vvivio:
    18.     ; отжатия не обрабатываем, только нажатия
    19.     mov  ah, al
    20.     and  ah, 80h
    21.     jnz clear_request
    22.     cmp al,57
    23.     jz ffkf
    24.     ; преобразуем позиционный код в ASCII по таблице
    25.     and  al, 7Fh
    26.     push edi
    27.     mov  edi, ascii
    28.     add  di, ax
    29.     mov  al, [edi]
    30.     pop  edi
    31.     cmp al,0
    32.     jz  Ack
    33.     jmp x3
    34.     ffkf:
    35.     xor al,al
    36.     ; выводим символы на экран один за другим
    37.     x3:
    38.     mov  edi, dword [cursor]
    39.     shl  edi, 1
    40.     mov  byte [es:edi], al
    41.     inc  dword [cursor]
    42.  
    43.     ; посылка подтверждения обрабоки в порт клавиатуры
    44.     ; (установка и сброс 7 бита порта 061h)
    45.    Ack:
    46.     in   al, 061h
    47.     or   al, 80
    48.     out  061h, al
    49.     xor  al, 80
    50.     out  061h, al
    51.  
    52. clear_request:
    53.     pop  edi
    54.     pop  eax
    55.     jmp  int_EOI
    56.  
    57. ascii    db 0,0,'1234567890-+',0,0,'QWERTYUIOP[]',0,0,'ASDFGHJKL;',"'`",0,0,'ZXCVBNM,./',0,'*',0,' ',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'-',0,0,0,'+',0,0,0,0,0,0,0
    58. cursor   dd 1
    Теперь можно удалять символи с екрана. (ascii тоже копировать)
     
  10. Toxasoft

    Toxasoft New Member

    Публикаций:
    0
    Регистрация:
    20 сен 2010
    Сообщения:
    188
    Доброго утра(дня, вечера,ночи).
    А етот Ета ОС работает для AMD?
    Ато у няня на P2 работает, а на P4 нет.
    У мня : AMD athlon II X2 245
     
  11. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Toxasoft
    Что за ета ос?
     
  12. Toxasoft

    Toxasoft New Member

    Публикаций:
    0
    Регистрация:
    20 сен 2010
    Сообщения:
    188
    Ну код который ты здесь написал.
     
  13. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Toxasoft
    ds не настроен.
    es тоже не настроен.
    А вы их используете.

    ss не помню надо настраивать или нет.

    Это не нужно у вас не XT, а PS/2 контроллер. Вы уже это сделали командой. in al, 060h
    Не говоря о том что сделано с опечаткой 80h.
     
  14. Toxasoft

    Toxasoft New Member

    Публикаций:
    0
    Регистрация:
    20 сен 2010
    Сообщения:
    188
    Я тогда Еше только начал изучение и брал инфу из статьи Greata
     
  15. Toxasoft

    Toxasoft New Member

    Публикаций:
    0
    Регистрация:
    20 сен 2010
    Сообщения:
    188
    Sorry У кого нить есть пример перехода в РМ из под MS-DOS
     
  16. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    А чем отличается от перехода не из-под мс-доса?
     
  17. Toxasoft

    Toxasoft New Member

    Публикаций:
    0
    Регистрация:
    20 сен 2010
    Сообщения:
    188
    Твой код переделать на простой исполняемый файл...
    Я так понял нужно убрать:
    Код (Text):
    1.     ; сие безобразие никак не умещается в пределы одного сектора (512 байт)...
    2.     ; поэтому подгрузим остальные сектора в память
    3.     mov  ah, 2  ; AH = Function                          : Read sectors
    4.     mov  al, 10 ; AL = Number of sectors to read (1-128) : 10 ( с запасом ;-) )
    5.     xor  ch, ch ; CH = Cylinder number (0-1023)          : 0
    6.     mov  cl, 2  ; CL = Sector number (1-17)              : 2
    7.     xor  dx, dx ; DH = Head number (0-15)                : 0
    8.                 ; DL = Drive number (0-A:, 1-B:)         : 0 (A:)
    9.     mov  bx, start + 512
    10.     int  13h
    11.     jnc  continue_loading
    12.  
    13.     ; ошибка чтения. покажем сообщение и грохнем процессор
    14.     jmp display_read_error
    15. read_error db 'R',7, 'e',7, 'a',7, 'd',7, ' ',7, 'e',7, 'r',7, 'r',7, 'o',7, 'r',7
    16. read_err_l dw $-read_error
    17. display_read_error:
    18.     mov  ax, 0B800h
    19.     mov  es, ax
    20.     xor  di, di
    21.     mov  si, read_error
    22.     mov  cx, word [read_err_l]
    23.     rep  movsb
    24.     jmp  $
    25.  
    26.  
    27. ends: rb 510-(ends-start)
    28. db 055h, 0aah
    и
    Код (Text):
    1. org 7c00
    и добавить format MZ
     
  18. d2k9

    d2k9 Алексей

    Публикаций:
    0
    Регистрация:
    14 сен 2008
    Сообщения:
    325
    н-да, вообще-то это компилируется и в бинарный вид переводится
     
  19. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    А что мешает скомпилить .com? Заменив org 7c00h на org 100h
     
  20. Toxasoft

    Toxasoft New Member

    Публикаций:
    0
    Регистрация:
    20 сен 2010
    Сообщения:
    188
    Great
    Спс за
    Код (Text):
    1. Заменив org 7c00h на org 100h
    Я как-то не подумал про ето