我想知道如何用汇编语言打印用户输入的字符。(假设我已经有了小写的值,并且我想用大写打印它。)
lowercase DB "Input a letter: $"
uppercase DB "The uppercase equivalent of letter <the lowercase letter the user inputted> is: $"
相反,如果它是用c++编写的,它将是:
cout << "The uppercase equivalent of letter" << lowercase << "is: " << endl"
我怎么发动汽车呢?
发布于 2021-10-22 13:14:48
首选的解决方案是在输出字符串中插入“用户输入的小写字母”。我看到您已经用$结束了字符串,所以可以使用DOS.PrintString函数09h一次打印所有内容。
大写db“相当于字母?的大写字母是:$”^占位符
uppercase_ db“相当于字母” db“的大写字母是:$”^占位符
uppercase_,al;AL是小写的
mov dx,偏移大写mov ah,09小时整数21小时
显示大写字母怎么样?
不需要单独输出。最简单的解决方案是也将其包含在输出字符串中。
placeholder2 db“相当于字母”uppercase_ db“的大写字母是:?$”^ placeholder1 uppercase
mov uppercase_,al;AL是小写...mov uppercase_ + 6,al;AL表示大写
mov dx,偏移大写mov ah,09小时整数21小时
有关显示文本的一些背景信息,请阅读此Q/A Displaying characters with DOS or BIOS。它提供了打印每个字符的文本字符字符串的示例。
使其更符合cout
的功能
如果需要覆盖占位符的基准面具有不同的长度,则上述解决方案不再适用。使用5个字符的占位符,请考虑:
db 'Your donation of € is much appreciated.$'
如果捐赠金额为5位数,则可以正常打印出来:
非常感谢你捐赠的20000欧元。
但如果捐款数额很小,就不再那么值得关注了:
非常感谢您捐赠的5欧元。
在这个场景中,我们必须使用不同的方法来输出附带的文本,而不是输出介于两者之间的数字。
ThankYou1 db 'Your donation of $'
ThankYou2 db ' € is much appreciated.$'
...
mov dx, offset ThankYou1
mov ah, 09h
int 21h
mov ax, [amount]
call DisplayNumber
mov dx, offset ThankYou2
mov ah, 09h
int 21h
有关如何编写DisplayNumber例程的想法,请参阅Displaying numbers with DOS。
https://stackoverflow.com/questions/69675429
复制