Sadda.ru Ironetcart Андроид Ассемблер MASM32 Linux Все статьи Table of Contents


 

VKDEBUG

  Макс Петров июнь 2013

      Ассемблер MASM32 имеет в своем составе встроенное средство - VKDEBUG, которое может быть полезным при отладке программ. VKDEBUG - это набор из 16 функций, позволяющих выводить из программы по ходу ее выполнения информацию - от содержимого регистров (в десятичном или шестнадцатеричном формате) или дампов памяти до текстовых сообщений.

      Для работы с функциями VKDEBUG к программе необходимо подключить файлы: windows.inc, kernel32.inc, kernel32.lib, user32.inc, user32.lib, masm32.inc, masm32.lib, debug.inc, debug.lib.

      Функции VKDEBUG следующие:
      PrintDec Value [,Text] - выводит в десятичном формате значение 8-32 битной переменной или регистра;
      PrintHex Value [,Text] - выводит в шестнадцатеричном формате значение 8-32 битной переменной или регистра;
      PrintDouble Value [,Text] - выводит переменную REAL8 типа;
      PrintString szText - выводит ascii-zero-string (строку символов, оканчивающуюся нулем);
      PrintStringByAddr lpszText - выводит ascii-zero-string по указателю на нее;
      PrintText Text - выводит переданный в качестве аргумента текст;
      PrintLine - выводит разделительную строку;
      PrintError - выводит идентификатор последней ошибки (GetLastError), зафиксированной Windows;
      PrintException lpBufer - выводит по указателю структуру, описывающую исключение;
      Spy Var - выводит значение переменной при каждом ее изменении в программе;
      ASSERT Value [,Text] - выводит сообщение Text, если значение 8-32-битной переменной или регистра равно нулю;
      TrapException lpSafePlace - обходит исключение и выводит сообщение о нем;
      DumpMem Address, Count [,Text] - выводит в шестнадцатеричном формате Count байт содержимого памяти, начиная с адреса Address;
      DbgDump Address, Count - выводит в шестнадцатеричном формате Count байт содержимого памяти, начиная с адреса Address, дополняя вывод символическим представлением;
      DumpFPU [Text] - выводит информацию о состоянии сопроцессора;
      Fix [Text] - выводит текст в консоль, сообщающую о ходе ассемблирования.

      Вывод осуществляется в windows-окно, которое открывается при запуске откомпилированной программы. Во всех случаях [,Text] - это дополнительное сообщение-комментарий, которое может быть добавлено к выводу.

      Примеры использования VKDEBUG:

.386 .model flat, stdcall option casemap :none include <\masm32\include\windows.inc> include <\masm32\include\kernel32.inc> includelib <\masm32\lib\kernel32.lib> include <\masm32\include\user32.inc> includelib <\masm32\lib\user32.lib> include <\masm32\include\masm32.inc> includelib <\masm32\lib\masm32.lib> include <\masm32\include\debug.inc> includelib <\masm32\lib\debug.lib> .data massiv dword 10 dup (9,6,3,8,5,2,7,4,1,0) ; массив 100 чисел bDiv10 byte 10 .code start: ; сообщение в консоли ассемблирования: Fix <EXAMPLE OF VKDEBUG> Fix <++++++++++++++++++> Fix <++++++++++++++++++> ; текстовое сообщение и разделительная черта: PrintText "ЭТО ПРИМЕР ИСПОЛЬЗОВАНИЯ VKDEBUG" PrintLine ; напечатаем значения 10 первых элементов массива: mov ecx, 0 .while ecx <= 9 mov ebx, massiv[ecx*4] PrintDec ebx inc ecx .endw ; напечатаем значения 10 первых элементов массива в виде дампа памяти: DumpMem offset massiv, 40, "дамп памяти:" ; создадим исключение и обойдем его: TrapException offset metka mov eax, 10000 div bDiv10 metka: ; "шпионим" за переменной massiv[0]: Spy massiv add massiv, 2 add massiv, 2 sub massiv, 4 StopSpy invoke ExitProcess, 0 end start

      Вот результат:

MASM32, VKDEBUG, Fix MASM32, VKDEBUG, примеры

     


Добавить комментарий

E-mail:
*


Контрольные цифры:

   MASM32    29.05.2017    03:13
OllyDbg все же лучше?


   М.П.    29.05.2017    04:06
Расскажите нам про эти штуки (OllyDbg) поподробнее.




Ассемблер MASM32

      Простейшая программа на ассемблере (beeper)
      Переменные и типы данных ассемблера
      Регистры процессора IA32
      Консоль ввода-вывода
      API-функция CharToOem и строки ассемблера
      API-функция ReadConsoleInput
      API-функция PeekConsoleInput
      События консоли (таблица)
      Системы счисления, тэги ассемблера, перевод чисел
      Отрицательные числа
      Инкремент и декремент
      Деление (DIV, IDIV)
      VKDEBUG
      Макросы ассемблера
      Воспоминание об Альгамбре на системном динамике
      Командная строка
      Пузырьковая сортировка. Эстафета шариков
      Сортировка расческой
      Быстрая сортировка

     


© Max Petrov При использовании материалов ссылка на sadda.ru обязательна