Пишем программу начальной загрузки компьютера

Попробуем сделать полезную программу


Как уже упоминалось, учебная программа st2.asm занимает почти весь сектор 512 байт. Тем не менее, прежде, чем переходить к более сложным действиям, попробуем сделать какую-либо полезную программу в этих габаритах. Например, посмотрим значения регистров процессора после POST.

Экран программы regboot.asm для Award Modular BIOS v.4.51PG
CPU registers after POST

    ax=5400
    bx=7C00
    cx=0001
    dx=0000
    sp=03FA
    bp=0E00
    si=4D15
    di=0000
    cs=0000
    ds=0000
    ss=0000
    es=0000
    fl=0096

System halted.
Use Reset button or "Ctrl-Alt-Del" for reboot 
Пример выполнения программы показывает, что предположения часто оказываются неверными. В частности, наше заключение о допустимости продолжения использования стека после программы POST, не совсем корректно. Регистр SP как раз указывает на конец таблицы векторов прерываний и запись данных в стек уничтожает элементы этой таблицы. В данном случае это, правда, не приводит к искажениям в результатах работы программы, так как эти векторы реально не используются при выполнении. В других случаях, если в документации не указаны конкретные данные или документации нет вообще, то программист должен обходиться только достоверно известными ему сведениями.

[Назад] [↑] [Вперед]
Hosted by uCoz