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

12.4. Лабораторная работа 10

Требуется скорректировать программу (и соответствующие файлы) так, чтобы экранная строка дампа содержала бы сначала 4-х позиционный шестнадцатеричный адрес первого байта строки, далее один пробел, после которого шестнадцатеричное представление 16-и байтов памяти. Далее следует еще один пробел, после которого следует символьное представление этих же 16-и байтов (между символами пробелов нет). При этом требуется скорректировать процедуру Write_char так, чтобы вместо любого управляющего символа (код ASCII от 00h до 1Fh включительно) должен выводиться символ “.”. Пример экранной строки:

А17F  41 42 43 44 45 46 47 00 20 1F 80 81 82 83 84 85 ABCDEFG. .АБВГДЕ

Примечание 1. Переменная-слово Address содержит начальный адрес-смещение  256-и байтовой области (см. рис.42). Поэтому начальный адрес строки рассчитывается в процедуре Disp_line путем суммирования содержимого  Address с содержимым регистра DX. Это суммирование выполняет оператор:

add   dx, [Address]

Обратите внимание, что имя переменной Address заключено в квадратные скобки. При отсутствии этих скобок к содержимому регистра dx было бы прибавлено не содержимое переменной, а ее адрес-смещение.

Не забудьте определить переменную-слово Address в начале файла Disp_sec.asm, задав ей первоначальное значение, например 100h. Для этого используется псевдооператор резервирования слова памяти dw:

Address dw     100h

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

Примечание 2. Перед оператором с меткой  “.M”  в  Disp_line запишите оператор  “push bx”,  который сохранит в стеке номер первого байта выводимой строки. Этот номер пригодится при выводе на экран символов (для его получения не забудьте записать оператор  “pop bx”).

 


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