汇编程序给了我不需要的字符作为输出?? asm

时间:2013-12-14 18:48:40

标签: assembly

我的程序应该要求用户输入文本行,然后它会告诉有多少位数,如果没有数字,则表示“无数字”,否则它会给出文本中的位数。问题是,当它打印数字位数时,它会从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 !$"

..........

1 个答案:

答案 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 '然后你可以打印一个缓冲区。

相关问题