Системное программное обеспечение. Особенности программирования 32-разрядных процессоров. Рощин А.В. - 55 стр.

UptoLike

Составители: 

55
ВНИМАНИЕ! Как уже было сказано, после выхода из защищенного
режима нельзя перезаписывать регистр GS, иначе будет полностью или
частично стерта информация в соответствующем теневом регистре. В
частности, нельзя выполнять операции сохранения/восстановления
содержимого регистра при помощи команд работы со стеком push и pop.
При использовании нестандартных режимов работы возникают
определенные трудности в процессе отладки программ: стандартные
программы-отладчики становятся неудобными. Во многих случаях, однако,
достаточно использовать простую отладочную печать. В листинге 2.2 [1]
приведена подпрограмма ShowRegs, отображающая на экране содержимое
регистров общего назначения, сегментных регистров, регистра флагов и
регистра CR0. Недостаток этого упрощенного примера заключается в том, что
ShowRegs не сохраняет содержимое видеопамяти. Однако при использовании
линейной адресации программу не трудно усовершенствовать, если есть
достаточный запас оперативной памяти: в текстовом режиме для сохранения
одной страницы нужно менее 4 Кбайт, а в графическом режиме TrueColor32 с
разрешением 1920x1280 требуется уже 9,5 Мбайт.
Листинг 2.2 – Отладочная подпрограмма, предназначенная для
отображения на экран содержимого регистров процессора
DATASEG
label REGROW_386 byte
DB 0,0,'EAX =',0
DB 1,0,'EBX =',0
DB 2,0,'ECX =',0
DB 3,0,'EDX =',0
DB 4,0,'ESI =',0
DB 5,0,'EDI =',0
DB 6,0,'EBP =',0
DB 7,0,'ESP =',0
DB 8,0,'IP =',0
DB 9,0,'CS =',0
DB 10,0,'DS =',0
     ВНИМАНИЕ! Как уже было сказано, после выхода из защищенного
режима нельзя перезаписывать регистр GS, иначе будет полностью или
частично стерта информация в соответствующем теневом регистре. В
частности,   нельзя   выполнять   операции    сохранения/восстановления
содержимого регистра при помощи команд работы со стеком push и pop.


     При использовании нестандартных режимов работы возникают
определенные трудности в процессе отладки программ: стандартные
программы-отладчики становятся неудобными. Во многих случаях, однако,
достаточно использовать простую отладочную печать. В листинге 2.2     [1]
приведена подпрограмма ShowRegs, отображающая на экране содержимое
регистров общего назначения, сегментных регистров, регистра флагов и
регистра CR0. Недостаток этого упрощенного примера заключается в том, что
ShowRegs не сохраняет содержимое видеопамяти. Однако при использовании
линейной адресации программу не трудно усовершенствовать, если есть
достаточный запас оперативной памяти: в текстовом режиме для сохранения
одной страницы нужно менее 4 Кбайт, а в графическом режиме TrueColor32 с
разрешением 1920x1280 требуется уже 9,5 Мбайт.

      Листинг 2.2 – Отладочная подпрограмма, предназначенная для
        отображения на экран содержимого регистров процессора
     DATASEG
     label REGROW_386 byte
        DB 0,0,'EAX =',0
        DB 1,0,'EBX =',0
        DB 2,0,'ECX =',0
        DB 3,0,'EDX =',0
        DB 4,0,'ESI =',0
        DB 5,0,'EDI =',0
        DB 6,0,'EBP =',0
        DB 7,0,'ESP =',0
        DB 8,0,'IP =',0
        DB 9,0,'CS =',0
        DB 10,0,'DS =',0


                                      55