Je veux imprimer la longueur de la chaîne 'Hello World', en obtenant la valeur (0Bh qui est 11, mais l'interruption imprime le caractère ascii qui est ♂ et non 11)emu8086 - Comment obtenir CHAR à partir du code ASCII
org 100h
LEA SI, msg
MOV CL, 0
CALL printo
printo PROC
next_char:
CMP b.[SI],0
JE stop
MOV AL,[SI]
MOV AH, 0Eh
INT 10h
INC SI
INC CL
JMP next_char
printo ENDP
stop:
MOV AL,CL ; CL is 0B (11 characters from 'Hello World')
MOV AH, 0Eh
INT 10h ; but it's printing a symbol which has a ascii code of 0B
ret
msg db 'Hello World',0
END
Donc votre question est de savoir comment convertir l'entier '11' à la chaîne' "11" '? –
@Someprogrammerdude La chose est que je ne reçois pas INTEGER 11 mais ASCII 0Bh. Il est en train d'imprimer le symbole '♂' qui est le 11ème symbole dans la table ASCII – concretejungle
La longueur de la chaîne '" Hello world "' est * onze * caractères (octets). "11" en décimal est "0b" en hexadécimal, c'est pareil. Ce que vous devez faire est de convertir la valeur entière '11' en une * chaîne * (c'est-à-dire le caractère' '1'' deux fois) puis imprimer la chaîne. Ou si vous êtes catégorique, il doit être imprimé en hexadécimal (pourquoi?), Puis convertir le nombre '11' à la chaîne' "0b" ', puis imprimer cette chaîne. La partie importante est la conversion en chaîne, maintenant vous devez décider si vous voulez que la chaîne contienne le nombre décimal ou hexadécimal. De toute façon, les deux ont beaucoup d'exemples si vous cherchez juste un peu. –