Erinevus lehekülje "Assembler" redaktsioonide vahel

Allikas: Kuutõrvaja
(Uus lehekülg: 'TODO = Lingid = http://www.csn.ul.ie/~darkstar/assembler/ http://www.csn.ul.ie/~darkstar/assembler/intlist.html')
 
(Kompileerimine)
 
(ei näidata sama kasutaja 10 vahepealset redaktsiooni)
1. rida: 1. rida:
 
TODO
 
TODO
 +
 +
= Näited =
 +
 +
== ??? ==
 +
 +
assembler;
 +
label l1, l2;
 +
asm
 +
  mov dx,3DAh
 +
  l1:
 +
  in al, dx
 +
  and al,08h
 +
  jnz l1
 +
  l2:
 +
  in al,dx
 +
  and al,08h
 +
  jz l2
 +
 +
== Hello World ==
 +
 +
<source lang="asm">
 +
global _start
 +
 
 +
section .data
 +
        hello  db      "Hello, World!", 10
 +
        length  equ    $-hello
 +
 
 +
section .text
 +
 
 +
_start:
 +
        mov eax, 4      ; write to file
 +
        mov ebx, 1      ; STDOUT handle
 +
        mov ecx, hello  ; our message
 +
        mov edx, length ; size of message
 +
        int 80h        ; execute the syscall
 +
 +
        xor ebx, ebx    ; send 0 as 'exit code'
 +
        mov eax, 1      ; terminate process
 +
        int 80h        ; execute the syscall
 +
</source>
 +
 +
= Kompileerimine =
 +
 +
Oletame, et soovime kompileerida programmi '''helloworld''', mille assembleri kood on failis '''helloworld.asm'''.
 +
 +
Linuxile saab kompileerimiseks sikutada programmi nimega '''nasm'''.
 +
 +
<source lang="bash">
 +
nasm -f elf helloworld.asm
 +
</source>
 +
 +
Käsu kävivitamisel genereetitakse meile fail nimega '''helloworld.o'''.
 +
 +
<source lang="bash">
 +
ld -o helloworld helloworld.o
 +
</source>
 +
 +
Käsu kävitamisel genereeritakse meile käivitatav programm nimega '''helloworld'''. Programmi käivitatakse nagu teisigi programme:
 +
 +
<source lang="bash">
 +
./helloworld
 +
</source>
  
 
= Lingid =
 
= Lingid =
 
http://www.csn.ul.ie/~darkstar/assembler/
 
http://www.csn.ul.ie/~darkstar/assembler/
 +
 
http://www.csn.ul.ie/~darkstar/assembler/intlist.html
 
http://www.csn.ul.ie/~darkstar/assembler/intlist.html

Viimane redaktsioon: 20. juuni 2011, kell 12:38

TODO

Näited

???

assembler; label l1, l2;

asm
 mov dx,3DAh
 l1:
  in al, dx
  and al,08h
  jnz l1
 l2:
  in al,dx
  and al,08h
  jz l2

Hello World

global _start
  
section .data
        hello   db      "Hello, World!", 10
        length  equ     $-hello
  
section .text
  
_start:
        mov eax, 4      ; write to file
        mov ebx, 1      ; STDOUT handle
        mov ecx, hello  ; our message
        mov edx, length ; size of message
        int 80h         ; execute the syscall
 
        xor ebx, ebx    ; send 0 as 'exit code'
        mov eax, 1      ; terminate process
        int 80h         ; execute the syscall

Kompileerimine

Oletame, et soovime kompileerida programmi helloworld, mille assembleri kood on failis helloworld.asm.

Linuxile saab kompileerimiseks sikutada programmi nimega nasm.

nasm -f elf helloworld.asm

Käsu kävivitamisel genereetitakse meile fail nimega helloworld.o.

ld -o helloworld helloworld.o

Käsu kävitamisel genereeritakse meile käivitatav programm nimega helloworld. Programmi käivitatakse nagu teisigi programme:

./helloworld

Lingid

http://www.csn.ul.ie/~darkstar/assembler/

http://www.csn.ul.ie/~darkstar/assembler/intlist.html