8086汇编语言:输入十个数字(可多位),以十进制和十六进制形式输出其最大值及最小值

一、问题描述:

输入十个数字(默认十进制);找到其中的最大值及最小值;以十进制和十六进制的形式在屏幕上输出;可适当添加提示语句!

 

二、思路讲解:

①获取每一次的输入数据,并将其转换成为具体的数值存储在声明的数据区中。

  • 因为我们要多次输入数据,因此我将这个接收数据的代码分离成为了一个函数,便于重复使用;这个函数的核心思想就是——通过ASCII码值判断每一次接收过来的字符是否为数字字符;是的话就通过减48获得其原始的值,再通过乘法使其可以接收多位数并存储在其值;该过程持续到接收的字符非数字时结束。
  • 通过上面的函数获得输入值之后,再通过偏移量和循环操作,依次将该数值放入我们事先声明好的数据区中。

②将存储在数据区中数据依次取出,找到其中的最大值及最小值。

  • 利用偏移量和循环依次取出之前存储在数据区中的值,遍历一遍之后找到其中的最大值及最小值,并将其分别存储在两个寄存器中。

③将找到的最大值及最小值分别以十进制和十六进制形式输出。

  • 十进制形式的输出,通过除法运算较为便利,通过除10依次将待输出的多位数从低位至高位将其剥离,再压入栈中;处理完后再依次出栈将其输出。
  • 十六进制形式的输出,因为放置数据的寄存器是16位的,我们可以通过移位操作(四位一移)就可以比除法更加简便的将其输出,稍微麻烦一点的地方就是需要判断是输出数字还是字母。

小心得:

在我们输出相关的提示语句或者换行时,会用到AX和DX寄存器,保留的数据不多时,寄存器够用所以没什么感觉。

在下面的代码中,我将最大值在寄存器ax中;最小值在寄存器bx中;而且我还要调用函数,对于输入参数进行赋值;这个时候寄存器就不太够用了,为了实现提示语句的输出,需要将寄存器中的值倒腾来倒腾去,麻烦不说还容易出错;这个时候你就需要一个好帮手——堆栈,帮你临时保存一下重要的数据了。

我刚开始写的时候,傻不拉几的将寄存器中的值倒腾来倒腾去,麻烦不说,最后好不容易整完了还出错了!/(ㄒoㄒ)/~

  • 5
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值