2015-05-04 3 views
0

На данный момент я немного играю с ассемблером, но у меня есть один вопрос к указателям. В моей программе ассемблера у меня есть String, который я ввел в регистры EAX, и я хочу получить третий символ из строки. Это прекрасно работает с этим кодом:Ассемблер получить значение указателя

movl $3, %esi 

movl $.STR1, %eax 
movl (%esi, %eax), %ecx 

Моя проблема заключается в том, что я получаю адрес в chacrter с этой командой и не значение ASCII символа. Как я могу получить доступ к значению указателя ссылки?

ответ

1

Это выглядит правильно, кроме символов 1 байт каждый, поэтому вы должны либо movb (%esi, %eax), %cl, либо movzbl (%esi, %eax), %ecx. Заметьте, что вы не получили адрес, у вас есть первые 4 символа из вашей строки, упакованные в %ecx. Конечно, для констант вы можете напрямую делать movb .STR1+3, %cl.

+0

Конечно, вы так правы. Спасибо за это отлично работает :) – Cilenco

Смежные вопросы