我的程序应该要求用户输入文本行,然后它会告诉有多少位数,如果没有数字,则表示“无数字”,否则它会给出文本中的位数。问题是,当它打印数字位数时,它会从ASCII打印笑脸
这是我的代码
.MODEL SMALL
.STACK 100H
.DATA
MSG1 DB "Enter a line of text : $"
MSG2 DB 0DH,0AH,"Number of digits : $"
MSG3 DB 0DH,0AH,"No digits !$"
..........
答案 0 :(得分:0)
这是因为值0与字符0('0'
)不同,值1与字符1不同,依此类推。
您必须将打印代码更改为:
MOV AH, 2
MOV DL, COUNT
ADD DL,'0' ; convert from 0..9 to '0'..'9'
INT 21H
请注意,这仅在COUNT
为< = 9时有效。对于较大的值,它会变得更复杂,因为您必须实现一个重复除以10的循环并将余数放置为'0 '然后你可以打印一个缓冲区。