Prosze o sprawdzenie kodu...

rufi85

Użytkownik
Dołączył
Styczeń 9, 2012
Posty
1
Witajcie! Dostaliśmy na laborkach za zadanie wyświetlić zawartość akumulatora:
Wspólnymi siłami spłodziliśmy cuś takiego:

SECTION .data
wynik: db "Wynik:"
rejestr: db 0
db 10
dlugosc: equ $-wynik


SECTION
global main
main:
move rejestr,eax ; eax(acc) do rejestr
mov edx,dlugosc ; parametry funkcji
mov ecx,wynik
mov ebx,1
mov eax,4
int 0x80 ; wyswietlenie na ekran

mov ebx,0
mov eax,1
int 0x80 ; wyjscie

Program nie kompiluje się i dostaję błąd 11: error: parser: instruction required. No i ani ja ani ziomki z grupy już pomysłów nie mamy...
Proszę o pomoc, jestem początkującym programistą, assembler to dla mnie jeszcze coś nowego...
Mam czas do soboty... :confused:
 

shoorick

Użytkownik
Dołączył
Lipiec 17, 2008
Posty
66
nigdy nie pisałem w asemblerze do linuxa, ale co widzę:
1.SECTION .data - dobrze, wtedy musi być SECTION .code ?
2.move rejestr,eax - 2a: "mov", 2b: rejestr jest jeden bajt (db), eax jest cztery bajty
3.jesli chcesz wyświetlić liczbę z eax, musisz z początku ję konwertować do wiersza, wtedy to może być aż 9 symbolów. do konwertowania są różne procedury dodatkowe.
4.db 10 - miałeś na myśli znak nowej linii? w każdym razie to nie oznacza "bufer 10 bajtów"

musisz dla początku wyświetlić jakeś słowo ("Witaj, Piotryku!" albo inne), potem uznać, jak działa konwerter i konwertować liczbę z eax w symboły na miejście tego "Witaj...", wyświetlić znów i zobaczyć co otrzymasz. dobrze używać debuggera dla uczenia.

zobacz tu więcej: http://rudy.mif.pg.gda.pl/~bogdro/linux/index.php

pozdrawiam
 
Do góry Bottom