Выполнение работы. Для вывода массивов и другого рода материала подготовим рабочую область, выделим ячейки памяти в ОЗУ
Для вывода массивов и другого рода материала подготовим рабочую область, выделим ячейки памяти в ОЗУ. Первоначальный код вывода одномерного массива показан на рисунках 1 и 2 соответственно. Рисунок №1(Листинг) Рисунок №2(Листинг) Далее собираем исходники и преобразуем их в исполняемый файл Unix. Результат вывода одномерного массива показан на рисунке №3. Рисунок №3 При возникновении подобной ошибки, а имеено с некорректным выводом русского языка в консоли, нужно поправить конфигурационный файл /etc/lang/nasm.conf. Нужно найти строку //lang[RU-ru]: UTF-8. И раскомментировать ее. Если таковой строки нет ее следует дописать. Настройки данного файла также вносят корректировку в файлы конфигурации языка терминала. При некорректной настройки, руская локализация может вовсе слететь. Корректный результат показан на рисунке №4
Рисунок №4 Немного видоизменив программный код получим вывод массива построчно а не через пробел это показано на рисунке №5 Рисунок №5 Далее складываем 2 массива. Результат показан на руснке №6, листинг на рисунке №7 Рисунок №6 Так как исходный код слишком большой чтобы его постоянно дублировать, я продемонстрирую кусок кода в котором происходит сложение показанное на рисунке №7 Рисунок №7 Далее из первого массива выберем максимальное число. Результат показан на рисунке № 8 Рисунок №8 Далее изменим все отрицательные значения на 0. Результат показан на рисунке № 9 Рисунок №9 После этого нарисуем пару псевдографических элементов. Результат показан на рисунке № 10
Рисунок №10 А теперь выводим все что было до этого в двоичном коде. Двоичная кодировка корректно работает через раз. Но работает! Результат показан на рисунке №11 Рисунок №11 Контрольные вопросы 1. Какие команды условного перехода используются при операциях над числами со знаком? 2. Какие команды безусловного перехода используются для обхода группы команд? 3. Какие команды используются для организации цикла? 4. Какие команды используются для вызова программы обработки прерывания и возврата из нее? 5. Какие команды используются для вызова процедуры (подпрограммы) и возврата из нее?
Ответы на вопросы Заключение В данной лабораторной работе с помощью свободного отладчика linice вскрыл программу. С помощью встроенных команд изучил соответствующие стеки, вскрыл встроенные механизмы компиляции, с помощью изменения 1го байта изучил конструкцию данного программного обеспечения.
Список литературы 1. wikiTaxi // Assembler NASM 2. wikiTaxi // Основные команды NASM 3. wikiTaxi // Ядро Darwin 4. wikiTaxi // Компиляция пакетов
|