Перенести программу из tasm в fasm x64 - Assembler
Формулировка задачи:
Уважаемые программисты!!! прошу помочь переделать простую прогу из tasm в fasm x64!!!
буду благодарен за любую помощь!!!
Решение задачи: «Перенести программу из tasm в fasm x64»
textual
Листинг программы
mov r9d,0 ; uType == MB_OK (кнопка по умолчанию) ; аргументы по соглашению x86-64 ; передаются через регистры, не через стек! ; префикс d задает регистр размером в слово, ; можно использовать и mov r9,0, но тогда ; машинный код будет на байт длиннее lea r8,[_caption] ; lpCaption, передаем смещение ; команда lea занимает всего 7 байт, ; а mov reg,offset - целых 11, так что ; lea намного более предпочтительна lea rdx,[_message] ; lpText, передаем смещение выводимой строки mov rcx,0 ; hWnd, передам дескриптор окна-владельца ; (можно также использовать xor rcx,rcx ; что на три байта короче) call [MessageBox] ; вызываем функцию MessageBox mov ecx,eax ; заносим в ecx результат возврата ; (Функция ExitProcess ожидает 32-битный параметр; ; можно использовать и mov rcx,rax, но это будет ; на байт длиннее) call [ExitProcess] ; вызываем функцию ExitProcess
Объяснение кода листинга программы
Вот что получилось:
- Переменная
uType
содержит значениеMB_OK
, что соответствует кнопке по умолчанию. - Далее идут аргументы для функции
MessageBox
:lpCaption
— адрес строки с названием диалогового окна.lpText
— адрес выводимой строки.hWnd
— дескриптор окна-владельца.
- Вызывается функция
MessageBox
. - Результат работы функции
MessageBox
сохраняется в регистреeax
. - Значение
eax
приводится к 32-битному значению и передается в функциюExitProcess
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д