настройка відладчика softice
nbsp Найвище вікно показує стан регістрів процесора. Його розмір змінити не можна, але можна приховати командою WR. Вивести його знову можна за допомогою тієї ж команди. Під ним знаходиться вікно дампа пам'яті. Третє вікно зверху - вікно коду, в якому показується або код у вигляді символьної інформації, або в аналізувати код, або змішаному вигляді. Висота вікна встановлюється командою WC X, де Х - кількість ліній. Приховати і знову відобразити його можна командою WC без параметрів. Зверніть увагу, що в рядку стану завжди показується підказка при наборі команд. Отримати довідку про команду можна, давши команду H X, де Х - ім'я команди. Якщо дати команду H без параметрів, то SoftICE виведе інформацію про всі команди.
nbsp Експериментуйте з різними командами, не бійтеся чогось зіпсувати. Тільки перед цим збережіть всі не збережені файли. Дуже важливо освоїтися в SoftICE, подолати страх перед ним. Я знаю людей, у яких при одному згадуванні про нього ворушиться волосся, як при згадці про нічному кошмарі. Однак SoftICE - це дуже потужний, зручний і приємний інструмент програміста. Думаю, що до кінця курсу ви полюбите його настільки, що будь-яка машина без нього буде здаватися вам неповноцінною.
nbsp Ви, напевно, подумує тепер про те, як зберегти зміни в налаштуваннях, які ми зараз зробили? Це абсолютно правильний хід думок. Виходимо з SoftICE, натиснувши знову CTRL + D або F5 і вирушаємо в директорію, куди встановлено SoftICE (я сподіваюся, ви вже використовуєте FAR?). Там знаходимо файл winice.dat. Відкриваємо його і шукаємо рядок nbsp Це рядок ініціалізації, в якій вказуються початкові настройки отладчика. Ось як виглядає цей рядок у мене: nbsp Вкажіть в ній свої настройки, які вам здадуться зручними. До речі, про команду FAULTS OFF. Вкажіть її обов'язково, так як вона забороняє отладчику спливати при виникненні GPF - General Protected Fault, коли система видає на екран вікно повідомлення типу:
документація та література
перша програма на асемблері
загальна структура ассемблерних програм
nbsp Ще не будемо сильно заглиблюватися в розбір написаної нами програми first.asm. Однак скажу, що в цілому вона відображає загальну структуру програм написаних на макроассемблере.
nbsp Програма, як ви бачите, складається з заголовка (рядка 1-6), глобальних змінних (секція ініціалізованих даних, рядки 7-9), власне коду (секція коду, рядка 10-17) і кінця програми (рядок 18).
nbsp Перший рядок говорить асемблеру, що необхідно дозволити команди 386 процесора. Цього зазвичай вистачає, але можна написати і .486, і .586. По суті ми і написав щось .386, щоб визначити плоску (flat) модель пам'яті у другому рядку. Також у другому рядку декларується угоду про виклик процедур STDCALL. Про плоскою моделі пам'яті ми будемо говорити в наступній статті, коли будемо розбирати архітектуру процесора, а про угоду STDCALL в статті "Робота зі стеком". У рядках 4-5 підключаються заголовки. Практично завжди в програмах, написаних з використання пакета MASM32 першим повинен підключатися файл windows.inc. У ньому визначені необхідні константи, структури і прототипи деяких функцій. Наприклад, константи MB_OK і NULL (рядки 12 і 15) визначено в цьому файлі.
nbsp Що стосується рядків 5 і 6, то поки буде достатньо, якщо я скажу, що в них визначається ім'я функції MessageBoxA з кількістю зраджувати аргументів, і йдеться, що її треба шукати в модулі user32.dll. Сказане лише віддалено нагадує, що відбувається насправді, але ми будемо детально розбирати питання виконання функцій з DLL пізніше. У секції ініціалізованих даних (рядки 7-9) оголошуються дві глобальні змінні типу byte. Далі починається секція коду (рядок 10). Нижче її розташована точка входу в програму (рядок 11). У рядках 12-16 викликається функція MessageBoxA, в результаті якої на екрані з'являється вікно повідомлення з відповідним написом. Інструкція ret (рядок 17) повертає керування операційній системі, коли робота нашої програми завершена.
nbsp Кінець програми визначається в рядку 18. Насправді ця інструкція виконує ще одну дуже важливу роботу: каже компонувальнику, що зміщення start є точкою входу в програму.