Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Assembler] - podstawy, wyświetlanie cyfr

Ostatnio zmodyfikowano 2014-03-26 20:29
Autor Wiadomość
Luk_Jab
Temat założony przez niniejszego użytkownika
[Assembler] - podstawy, wyświetlanie cyfr
» 2014-03-26 20:29:23
Witam, mam parę wątpliwości dotyczących mojego pojmowania assemblera. Dopiero zaczynam zabawę z tym językiem i szukam jakiejś pomocy. Wymóg kursu na uczelni to składnia AT&T której nikt nie używa i bardzo ciężko znaleźć jakiekolwiek przykłady. 

No więc pierwszy problem:

SYSEXIT = 1
SYSREAD =3
SYSWRITE = 4
STDOUT =1
STDIN =0
EXIT_SUCCESS = 0

.align 32
.section .data

liczba1: .long 654,589,75
.section .text
.global _start
_start:
movl $0, %edi
petla:
mov $SYSWRITE, %eax
mov $STDOUT, %ebx
movl liczba1(,%edi,4), %ecx
mov $4, %edx
int $0x80

koniec:
mov $SYSEXIT, %eax
mov $EXIT_SUCCESS, %ebx
int $0x80


Jedynym zadaniem jakie chcę w tym momencie wykonać jest wyświelenie elementów tablicy na ekranie. Chciałem to zrobić w pętli ale utknąłem już przy wyświetleniu dowolnego elementu. Aby wyświetlić wszystkie elementy potrzebuję pętli(indeks umieszczam w rejestrze %edi). W przypadku gdy rezygnuję z pętli jedyne co chcę wyświetlić to element o indeksie 0, czyli 654. Program niestety nie wyświetla nic, odpala się, kończy działanie a na ekranie nic nie ma. Myślę że ma to związek z tym że sysread wyświetla kolejne kody ASCII. I tu pojawia się moje pytanie - jeśli chcę wyświetlić to 654 to muszę wziąć każdą cyfrę z osobna, przekonwertować ją na ASCII i wyświetlać znak po znaku? I skoro tak, to w jaki sposób mogę się odwołać do pojedynczej cyfry? Czy istnieje sposób aby na standardowym strumieniu wejściowym wyświetlić całą liczbę w postaci dziesiętnej?
P-107259
« 1 »
  Strona 1 z 1