Участник:Mityada/Ассемблер — различия между версиями
Mityada (обсуждение | вклад) |
Mityada (обсуждение | вклад) (→Простейшая программа) |
||
| Строка 18: | Строка 18: | ||
=== Windows === | === Windows === | ||
| − | section .text | + | section .text ; code section |
| − | global _main | + | global _main ; entry point must be global |
| − | _main: | + | _main: ; entry point |
| − | ret | + | ret ; exit |
=== Linux === | === Linux === | ||
| − | section .text | + | section .text ; code section |
| − | global _start | + | global _start ; entry point must be global |
| − | _start: | + | _start: ; entry point |
| − | mov eax, 1 | + | mov eax, 1 ; sys_exit system call |
| − | mov ebx, 0 | + | mov ebx, 0 ; return code 0 |
| − | int 0x80 | + | int 0x80 ; call kernel |
= Компиляция = | = Компиляция = | ||
Версия 23:18, 2 марта 2012
Содержание
Необходимые программы
Компилятор
Yasm. Качаем отсюда.
Линковщик
Windows
link.exe из Microsoft Visual Studio. Лежит в %Program Files%/Microsoft Visual Studio 10.0/VC/bin/. При запуске может ругаться на нехватку mspdb100.dll, берем из %Program Files%/Microsoft Visual Studio 10.0/Common7/IDE/.
Linux
ld из пакета binutils
Текстовый редактор
На ваш вкус и цвет.
Простейшая программа
Windows
section .text ; code section
global _main ; entry point must be global
_main: ; entry point
ret ; exit
Linux
section .text ; code section
global _start ; entry point must be global
_start: ; entry point
mov eax, 1 ; sys_exit system call
mov ebx, 0 ; return code 0
int 0x80 ; call kernel
Компиляция
После компиляции у вас должен получится объектный файл.
Windows
yasm -f win32 test.asm
Linux
yasm -f elf32 test.asm
Линковка
Windows
link.exe /subsystem:console /entry:main test.obj
Linux
ld -o test test.o
Запуск
Если вы все сделали правильно, программа должна запускаться и завершаться без ошибки.