x86汇编开发餐厅点餐系统 如何存储两位数数值作为变量
你对db类型的存储能力存在误解:db 定义的是单字节变量,可存储0~255范围内的整数,19这类两位数完全可以正常存储,你之前只能存储单数字的核心原因是输入逻辑仅读取了1次单个字符的键盘输入,和变量类型无关。
实现步骤
- 调整输入逻辑,两次读取键盘输入分别获得十位、个位的字符输入
- 将两次输入的字符分别转为数值后计算得到完整的订购数量
- 调整数值校验范围适配你需要的最大值(比如19)
示例修改代码
; 变量定义部分不用修改,db完全足够存储0~255的数值 countChicken db 0 ; 输入逻辑修改 mov ah,09h lea dx,getValueMsg ; 提示用户输入数量 int 21h ; 读取十位数字 mov ah,01h int 21h sub al,30h ; 转成数值 mov bl,10 mul bl ; 十位数值乘10,结果存在ax中 mov bl,al ; 暂存十位乘10的结果 ; 读取个位数字 mov ah,01h int 21h sub al,30h ; 转成数值 add al,bl ; 加上十位的结果,得到完整的数值 mov countChicken,al ; 存入变量 ; 校验逻辑调整,适配1~19的范围 cmp countChicken,1 jb errorGetChickenValue cmp countChicken,19 ja errorGetChickenValue
可选兼容优化
如果需要支持用户只输入一位数(比如输入5后直接回车),可以在读取第二个字符时判断输入是否为回车符(ASCII码0Dh),如果是就直接使用第一次输入的数值作为最终结果,无需执行乘10相加的逻辑。
内容的提问来源于stack exchange,提问作者StillGotAlotToLearn
相关产品推荐
相关产品推荐

