[Assembler] - podstawy, wyświetlanie cyfr
Ostatnio zmodyfikowano 2014-03-26 20:29
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? |
|
« 1 » |