1
Этот код ниже занимает в два значное число (скажем, 12) в ASCII и должен вернуть этот номер как номер 12 (НЕ ASCII)Ассамблея AT & T синтаксис, возвращает ASCII целое
mov $IBUFF, %eax # IBUFF stores the ASCII number 12
movl $NUMBER, %ecx # NUMBER will i put the number 12 (NO ASCII)
movb (%eax), %bl # Moves the first byte (1) to %bl
subb $48, %bl # Decrease %bl so it is not longer a ASCII sign.
movb %bl, (%ecx) # Moves this byte into the first place in NUMBER
inc %eax # Increase IBUFF so it points to the next integer
inc %ecx # Increase NUMBER so it points to the next empty space
movb (%eax), %bl # Same as above
subb $48, %bl # Same as above
movb %bl, (%ecx) # Same as above
mov NUMBER, %eax # Move the number 12 from NUMBER to %eax (return register)
Когда я запустите этот код, возвращаемое значение равно 513, а не 12. Что я делаю неправильно?
У вас есть пример кода для этого? – Bewn
@Bewn - Нет, но умножая число на 10, а затем добавив еще один номер к нему, не должно быть так сложно ... –
Okey, я попробую его сегодня вечером. Благодаря ! – Bewn