Wpis z mikrobloga

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

msg
pocz: .ascii "Podaj imie: "

msgpoczlen = . - msgpocz

msg
hello: .ascii "Witaj "

msghellolen = . - msghello

msg: .space 128,0

msg
len = . - msg

.text

.global start

start:

# Wyswietlenie napisu 'Podaj imie'

mov $SYSWRITE, %eax

mov $STDOUT, %ebx

mov $msgpocz, %ecx

mov $msg
poczlen, %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
  • 2