Предыдущая глава ПЕРЕПИСКА СЕКТОРА ПАМЯТИ Следующий раздел

Разработанная в предыдущем разделе программа выполняет вывод на экран единственного 256-байтового сектора, заполняемого транслятором до начала выполнения программы. Теперь пришла пора заняться выводом на экран любого сектора, входящего в состав того сегмента ОП, который выделен нашей программе. Напомним, что размер одного сегмента ОП – 64K, что соответствует 256 секторам по 256 байт.

13.1. Функции переписки сектора

В полученной ранее программе мы использовали для хранения редактируемого сектора (256 байт) область (переменную) Sector. В принципе можно было бы не использовать эту область, а напрямую работать с требуемым сектором памяти. Но в этом случае любая ошибка в редактировании мгновенно отразилась бы на оригинале. Поэтому мы будем копировать текущий сектор памяти в область Sector, а после выполнения редактирования осуществим обратное копирование.

На  рис.43 приведено дерево подпрограмм для программы, выполняющей различные виды функций переписки сектора. Набор этих функций определяется потребностями пользователя разрабатываемой программы. Каждая из функций программно реализуется одной из следующих процедур:

 

 

 Рис. 43. Дерево подпрограмм для программы, выполняющей функции переписки сектора

 

Write_sector – переписывает содержимое переменной Sector в область памяти, начальный адрес которой находится в переменной  Address;

Init_sector помещает в переменную Sector начальный сектор сегмента памяти нашей программы. Кроме того, эта процедура помещает 0 в переменную  Address;

Prev_sector помещает в Sector предыдущий сектор памяти, а в переменную  Address записывает начальный адрес этого сектора;

Next_sector помещает в переменные Sector и Address соответственно содержимое и начальный адрес следующего сектора памяти;

N_sector загружает в область Sector N-й сектор сегмента программы. При этом значение N (0<N<255), умноженное на 256, записывается в переменную Address

 


Предыдущая глава В начало Следующий раздел