Размер буфера у wsprintf - Assembler
Формулировка задачи:
Здравствуйте!
Есть такой код:
При изменении "buf dd
invoke wsprintfA, buf, "0x%p", 0xAABBCCDD mov [buf2], buf mov eax, [buf2] mov [buf3], eax mov eax, [buf3] mov [buf4], eax mov eax, [buf4] mov [buf5], eax invoke MessageBoxA, 0, [buf5], ttl, MB_OK invoke ExitProcess, 0 ttl db 'tittle', 0 buf dd 3 dup(?) buf2 dd ? buf3 dd ? buf4 dd ? buf5 dd ?
3
dup(?)" на "buf dd2
dup(?)" видим следующую картину: Почему так? Это резервация места под все три параметра ф-и wsprintf?Решение задачи: «Размер буфера у wsprintf»
textual
Листинг программы
invoke wsprintfA, buf, "0x%p", 0xAABBCCDD invoke MessageBoxA, 0, buf, ttl, MB_OK invoke ExitProcess, 0 ttl db 'tittle', 0 buf dd ?
Объяснение кода листинга программы
В данном коде:
- Выполняется вызов функции wsprintfA с передачей в неё адреса переменной buf и строки
0x%p
в качестве первого аргумента. - Выполняется вызов функции MessageBoxA с передачей в неё значения 0 в качестве первого аргумента, адреса переменной buf в качестве второго аргумента, строки
tittle
в качестве третьего аргумента и значения MB_OK в качестве четвёртого аргумента. - Выполняется вызов функции ExitProcess с передачей в неё значения 0 в качестве аргумента.
- Переменная ttl содержит строку
tittle
. - Переменная buf содержит адрес, по которому будет выведено значение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д