Предыдущий раздел | ДАМПИРОВАНИЕ ПАМЯТИ | Следующая глава |
Требуется скорректировать программу (и соответствующие файлы) так, чтобы экранная строка дампа содержала бы сначала 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”).
Предыдущий раздел | В начало | Следующая глава |