Cómo convertir una letra (guardada en un byte) en un long? (Ensamblador NASM)
En este momento, estoy tratando de transformar una variable de tipo .byte (que puede contener valores de ‘A’, ‘B’, ‘C’, ‘D’ o ‘E’) (letras hexadecimales) en sus equivalentes decimales (10, 11, 12, 13, 14 y 15, respectivamente).
.data:
bit: .byte ‘A’
result: .long 0
.letters:
movb bit, %ah
movb $’A’, %al
subb %al,%ah
movb %ah, result
addl $10, result
Sin embargo, cuando ejecuto el código, result es igual al resultado que quiero +7. ¿Estoy haciendo algo mal?
davy.ai
Parece que te falta un paso en tu código. Necesitas restar 7 del resultado después de que le sumes 10. Puedes hacer esto agregando la siguiente línea de código después de la instrucción
addl
: