Описание алгоритма решения задачи

Описание алгоритма решения задачи. Если в оперативной памяти ПК имеется 2 в 20 степени ячеек, то для ссылок на эти ячейки нужны 20-разрядные адреса их принято называть физическими адресами.

Ясно, что при большом объеме памяти большим будет и размер физических адресов, а это ведет к увеличению длины команд и к увеличению размера программ в целом.

Это плохо. Чтобы сократить размеры команд, поступают следующим образом. Память условно делят на участки, которые принято называть сегментами. Начальные адреса сегментов могут быть любыми, но на длину сегментов накладывается ограничение размер любого сегмента не должен превышать 64Кб. В этих условиях физический адрес А любой ячейки памяти можно представить в виде суммы A B ofs, где В - адрес сегмента, а ofs - смещение относительно адреса В. Таким образом, если в команде надо указать физический адрес А, то адрес сегмента B - прячем в так называемый сегментный регистр, а в команде указываем лишь этот регистр и слагаемое ofs. Это даёт экономию размера команд.

В связи с этим максимальный объем сегмента равен 64Кб, а минимальный равен 16 байтам. Процедура теста памяти реализована с помощью вложенного цикла.

Первый цикл увеличивает на единицу модификационный регистр BP до тех пор, пока BP меньше 0A000h это последний сегмент 640 Кб. Внутри этого цикла реализован еще один цикл - он увеличивает на единицу модификационный регистр SI до тех пор, пока он меньше 16. Внутри вложенного цикла осуществляется непосредственно проверка памяти на неисправные биты сначала происходит проверка на постоянные единицы - в сегмент по адресу BP со смещением SI записывается ноль что в двоичной системе счисления означает восемь нулей, затем осуществляется проверка этого значения, т.е. нуля. Если это значение равно нулю, значит память исправна, в противном случае - не исправна.

Затем происходит проверка на постоянные нули по тому же адресу записывается число FFh что в двоичной системе счисления означает восемь единиц, затем осуществляется проверка этого значения. Если значение равно FFh, значит память исправна, в противном случае - неисправна. 2.4.