Участник:Mityada/Ассемблер — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Новая страница: «= Необходимые программы = == Компилятор == Yasm. Качаем отсюда http://yasm.tortall.net/. == Линковщик == === ...»)
 
м (Компиляция: http://tsya.ru/)
 
(не показано 9 промежуточных версий 1 участника)
Строка 2: Строка 2:
  
 
== Компилятор ==
 
== Компилятор ==
Yasm. Качаем отсюда http://yasm.tortall.net/.
+
Yasm. Качаем [http://yasm.tortall.net/ отсюда].
  
 
== Линковщик ==
 
== Линковщик ==
 
=== Windows ===
 
=== Windows ===
<code>link.exe</code> из Microsoft Visual Studio. Лежит в "<code>%Program Files%/Microsoft Visual Studio 10.0/VC/bin/</code>". При запуске может ругаться на нехватку mspdb100.dll, берем из "<code>%Program Files%/Microsoft Visual Studio 10.0/Common7/IDE/</code>".
+
<code>link.exe</code> из Microsoft Visual Studio. Лежит в <code>%Program Files%/Microsoft Visual Studio 10.0/VC/bin/</code>. При запуске может ругаться на нехватку <code>mspdb100.dll</code>, берем из <code>%Program Files%/Microsoft Visual Studio 10.0/Common7/IDE/</code>.
 +
 
 
=== Linux ===
 
=== Linux ===
<code>ld</code> из пакета <code>binutils</code>
+
<code>ld</code> из пакета <code>binutils</code>.
  
 
== Текстовый редактор ==
 
== Текстовый редактор ==
Строка 15: Строка 16:
 
= Простейшая программа =
 
= Простейшая программа =
  
== Windows ==
+
=== 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
 +
 
 +
= Компиляция =
  
section .text
+
После компиляции у вас должен получиться [http://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BD%D1%8B%D0%B9_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C объектный файл].
    global _main
 
  
  _main:
+
=== Windows ===
    ret
+
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
  
== Linux ==
+
= Запуск =
  
section .text
+
Если вы все сделали правильно, программа должна запускаться и завершаться без ошибки.
    global _start
 
  
_start:
+
= Полезные ссылки =
    mov eax, 1
+
*[http://www.tortall.net/projects/yasm/manual/html/manual.html Yasm User Manual]
    mov ebx, 0
+
*[http://en.wikipedia.org/wiki/X86_assembly_language x86 assembly language]
    int 0x80
+
*[http://en.wikibooks.org/wiki/X86_Assembly x86 assembly]
 +
*[http://google.com Google]

Текущая версия на 10:17, 3 марта 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

Запуск

Если вы все сделали правильно, программа должна запускаться и завершаться без ошибки.

Полезные ссылки