Mirki, mam pytanie z assemblera x86. Napisałem prosty program, który pyta o imię, a potem je wyświetla. Program działa, niby wszystko ok. Ale chciałbym go debugować w trybie krokowym przy pomocy gdb i tu jest problem. Nie działa mi wczytywanie imienia, niby po wykonaniu przerwania (int $0x80 w bloku "Wczytywanie imienia) program czeka na podanie tekstu, ja wpisuję, daję enter i program idzie dalej, ale jednak wczytany tekst nie zostaje zapisany. Wiecie może jak rozwiązać ten problem? Poniżej kod mojego programu. #programowanie #assembler #gdb
SYSEXIT=1
SYSREAD=3
SYSWRITE=4
STDIN=1
STDOUT=1
EXITSUCCESS=0
.data
msgpocz: .ascii "Podaj imie: "
msgpoczlen = . - msgpocz
msghello: .ascii "Witaj "
msghellolen = . - msghello
msg: .space 128,0
msglen = . - msg
.text
.global start
start:
# Wyswietlenie napisu 'Podaj imie'
mov $SYSWRITE, %eax
mov $STDOUT, %ebx
mov $msgpocz, %ecx
mov $msgpoczlen, %edx
int $0x80
# Wczytanie imienia
mov $SYSREAD, %eax
mov $STDIN, %ebx
mov $msg, %ecx
mov $msg_len,%edx
int $0x80
# Wyswietlenie napisu 'Witaj'
mov $SYSWRITE, %eax
mov $STDOUT, %ebx
mov $msg_hello, %ecx
mov $msg_hello_len, %edx
int $0x80
# Wyswietlenie imienia
mov $SYSWRITE,%eax
mov $STDOUT,%ebx
mov $msg,%ecx
mov $msg_len,%edx
int $0x80
mov $SYSEXIT, %eax
mov $EXIT_SUCCESS, %ebx
int $0x80
mov eax, 3
mov ebx, 0
mov ecx, imie
mov edx, imie_dl
int 80h