Організація роботи мiкропроцесора в захищеному режимi, страница 29

       mov semaf,1               { якщо да - установка семафора }

   @k2:cmp cpu_type,2

       je @k3

       db 66h

   @k3:iret

    end;

  procedure int_30h;assembler;         { Обpобник програмного }

    asm                                      { пеpеpивання 30h:              }

       cmp ah,2                   { AH - номер функцiї                  }

       jz @i1                       { BL - номер рядка екрана         }

       cmp ah,3                   { BH - номер стовпця екрана     }

       jz @i2                       { AL - значення байта/символу  }

       cmp ah,4                   { DH - вiдеоатpибут символу     }

       jz @i3                       { SI - змiщення рядка символiв  }

       mov ax,bx { Функцiя 1: установка маркера в задану точку екрана }

       xor bh,bh

       mov bl,ah

       xor ah,ah

       mov dl,80

       mul dl

       add ax,bx

       shl ax,1

       mov di,ax

       jmp @i4

   @i1:                 { Функцiя 2: виведення символу на екран }

       mov ah,dh

       stosw

       jmp @i4

   @i2:                { Функцiя 3: виведення байта на екран у виглядi 2-х символiв }

       mov ch,al

       mov bx,offset hex_tabl

       mov ah,dh

       mov cl,4

       shr al,cl

       xlat

       stosw

       mov al,ch

       and al,$0f

       xlat

       stosw

       jmp @i4

   @i3:          { Функцiя 4: виведення рядка символiв на екран }

       mov ah,dh

       mov bx,si

       inc si

       mov cl,[bx]

       xor ch,ch

  @wxy:

       lodsb

       stosw

       loop @wxy

   @i4:cmp cpu_type,2

           je @i5

           db 66h

       @i5:iret

     end;

     end.

4.12. Iндiвiдуальнi завдання

При виконаннi кожного iз нижчеперелiчених iндивiдуальних завдань необхiдно:

a)  перевести мiкропроцесор в захищений режим;

b)  здiйснити дiї, передбаченi iндивiдуальним завданням;

c)  повернутися в pеальний режим.

                           Перелiк iндивiдуальних завдань.

      1. Вивести на екран значення сегментних регiстрiв.

      2. Зберегти в областi пам'ятi вище 1 Мбайт поточний змiст вiдеопам'ятi в текстовому режимi з наступним вiдновленням зображення.

      3. Створити в пам'ятi вище 1 Мбайта сегмент коду розмiром 512 байт, захищений вiд читання, i перевiрити роботу з ним.

      4. Зберегти в областi пам'ятi вище 1 Мбайта поточний змiст вiдеопам'ятi в графiчному режимi з наступним вiдновленням зображення.

      5. Створити в пам'ятi вище 4 Мбайт сегмент даних розмiром 4 Мбайти, захищений вiд запису, i перевiрити роботу з ним.

      6. Розробити функцiю для виводу на екран значень змiнних типу Byte i Word.

      7. Встановити розряднiсть даних за замовчуванням, рiвну 32, i перевiрити роботу з ними.

      8. Забезпечити можливiсть модифiкацiї програм в захищеному режимi.

      9. Встановити розряднiсть адреси по умовчанню, рiвну 32, i перевiрити роботу з нею.

    10. Розробити процедуру читання сектора iз гнучкого магнiтного диска.

    11. Розробити процедуру читання сектора iз жорсткого магнiтного диска.

    12. Використовуючи процедуру читання сектора, зберегти в пам'ятi змiст дискети.

    14. Використовуючи процедуру читання сектора, зберегти в пам'ятi вище 1 Мбайта змiст FAT дискети.

    15. Використовуючи процедуру читання сектора, зберегти в пам'ятi вище 1 Мбайта змiст FAT роздiлу жорсткого диска.

    16. Використовуючи процедуру читання сектора, зберегти в пам'ятi вище 1 Мбайта змiст кореневого каталога дискети.

    17. Використовуючи процедуру читання сектора, зберегти в пам'ятi вище 1 Мбайта змiст кореневого каталога роздiлу жорсткого диска.

   18. Виконати тестування пам'ятi вище 1 Мбайта.

   19. Органiзувати в областi пам'ятi вище 1 Мбайта зберiгання набору шрифтiв iз можливiстю їхнього завантаження у вiдеопам'ять.

   20. Розробити текстовий редактор, що працює з даними в областi пам'ятi вище 1 Мбайта.

   21. Визначити розмiр вбудованої кеш-пам'ятi МП i кеш-пам'ятi другого рiвня персонального комп'ютера.

___________