1
我想打印字符串'Hello World'的長度,即時獲取值(0Bh是11,但中斷正在打印ascii字符是♂而不是11 )emu8086 - 如何從ASCII碼獲得CHAR
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
所以你的問題是如何將整數'11'轉換爲字符串'「11」'? –
@Someprogrammerdude事情是,我沒有得到INTEGER 11,但ASCII 0Bh。它打印出ASCII表中第11個符號「♂」符號 – concretejungle
字符串「Hello world」的長度爲* 11個字符(字節)。十進制中的'11'是十六進制的'0b',它是一樣的。你需要做的是將整數值「11」轉換爲*字符串*(即字符「1」兩次),然後打印字符串。或者如果你堅持不懈,它必須以十六進制打印(爲什麼?),然後將數字「11」轉換爲字符串「0b」,然後打印該字符串。重要的部分是轉換爲字符串,現在您必須決定是否希望字符串包含十進制或十六進制數字。無論哪種方式,如果你只是搜索一下,兩者都有很多例子。 –