Открой свой мир программирования и    
цифровых технологий
Рабочие характеристики служб ROM BIOS
Автор lisa   
06.07.2011 г.

Службы ROM BIOS используют ряд общих соглашений по обращению к ним, которые обеспечи­вают согласованное использование регистров, флагов, стека и памяти. Мы опишем в общих чертах характеристики этих рабочих соглашений, начиная с сегментных регистров.

Регистр сегмента кода (CS) в процессе прерывания автоматически запоминается, загружается новым значением и снова восстанавливается. Следовательно, вам нечего беспокоиться о регистре CS в своей программе. Регистры DS и ES также сохраняются служебными программами ROM BIOS, за исключением тех редких случаев, когда они непосредственно используются. Регистр стекового сегмента (SS) остается без изменений, и службы ROM BIOS зависят от организованного вами рабочего стека. (Все зависит от рабочего стека!)

Потребности в стеке со стороны служб ROM BIOS четко не оговорены и могут значительно менятся, главным образом из-за того, что некоторые службы, в свою очередь, вызывают другие службы. Однако в целом большинство программ должно работать со стеком значительно больших размеров, чем требуется для служб ROM BIOS.

Другие регистры микропроцессора 8086 службы ROM BIOS используют по-разному. Указатель команды (IP) сохраняется таким же способом, как и регистр сегмента кода. По сути дела, указатель стека (SP) также сохраняется, поскольку все службы ROM BIOS очищают стек, удаляя из него все данные, записанные при выполнении служебной программы.

Как обычно, регистры общего назначения — с АХ по DX — свободно используются. Согласно общему правилу предполагается, что содержимое этих регистров не обязательно будет сохранено при передаче вами управления от одной программе к другой. Это правило распространяется и на службы ROM BIOS. Если вы внимательно изучите кодирование таких служб, приведенное в технических справочных руководствах фирмы IBM, то заметите, что некоторые службы не изменяют содержимое одного или более регистров общего назначения, но глупо пытаться извлечь из этого какую-либо выгоду. Как правило, когда подпрограмма возвращает элементарный результат вычислений, он поме­щается в регистр АХ; это относится как к службам ROM BIOS, так и ко всем языкам программирова­ния. При подробном рассмотрении служб ROM BIOS вы увидите, насколько распространена такая ситуация.

Индексные регистры (SI и DI) могут быть изменены точно так же,как и регистры общего назна­чения. Регистр стекового фрейма (ВР) также может модифицироваться некоторыми служебными программам ROM BIOS.

Различные флаги регистра флагов обычно меняются в результате выполнения отдельных команд, входящих в программы ROM BIOS. He рассчитывайте на то, что некоторые из них будут сохранены. В некоторых случаях флаг переноса (CF) или флаг нуля (ZF) используются для индикации успешного или неудачного выполнения запрошенной операции.

Все эти детали существенны, но довольно утомительны, поэтому не стоит особо на них останавливаться. Если в программе вы будете следовать общим правилам интерфейса, изложенным в следующем разделе, и специфическим требованиям конкретного языка программирования (описанных в гл. 19 и 20), они вам и вовсе не понадобятся.

ПРИМЕЧАНИЕ. Если вы решили использовать в своей программе службы ROM BIOS, то, естес­твенно, будете принимать во внимание наличие возможных конфликтов между этими службами и операционными соглашениями, которым следует выбранный вами язык программирования. Не. тревожьтесь! Очень скоро вы обнаружите, что не нужно принимать никаких чрезвычайных мер для защиты выбранного языка программирования от ROM BIOS и наоборот.

 
« Пред.   След. »
Скачать книги по программированию