Читайте также: |
|
Программа получает данные из командной строки и выводит их в небольшом windows-окне.
.486.model flat, stdcalloption casemap: none include /masm32/include/windows.incinclude /masm32/include/user32.incinclude /masm32/include/kernel32.inc includelib /masm32/lib/user32.libincludelib /masm32/lib/kernel32.lib include /masm32/macros/macros.asm uselib masm32, comctl32, ws2_32.data.codestart: call GetCommandLine; результат будет помещен в eax push 0push chr$("Command Line")push eax; текст для вывода берем из eaxpush 0call MessageBox push 0call ExitProcess end startКод с вызовом функций можно было бы заменить кодом:
invoke GetCommandLineinvoke MessageBox, 0, eax, chr$("Command Line"), 0invoke ExitProcess, 0invoke — это встроенный макрос для упрощения кода, и при компиляции всё это преобразуется в ассемблерные команды.
Т.е. код
invoke MessageBox, 0, eax, chr$("Command Line"), 0эквивалентен коду
push 0push chr$("Command Line")push eaxpush 0call MessageBoxСтек — это удобное место для хранения информации. Чаще всего он используется при вызове функций.
Все WinAPI-функции созданы по соглашению stdcall, то есть, передача аргументов в них производится через стек в обратном порядке. Возвращают эти функции значение в регистре eax.
Дата добавления: 2015-07-16; просмотров: 66 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Команды ENTER и LEAVE | | | Программа 2. Сложение двух чисел |