21,499
社区成员
发帖
与我相关
我的任务
分享
要解决几个问题首先就是接收键盘输入然后将输入的数据保存起来,这有两种方法第一种就是直接读60h端口获得按键的通码然后一一比对输入的是否为数字是的话就保存下来这个可以将通码和具体的按键字符建立一个具有映射关系的表来做然后直接查表就可以了,另外一个方法不用查表可以调用16h号bios中断的0号功能获取键盘苏入的asc码然后将输入的asc码转化为相应的十进制数保存起来,这个方法不用建立表但是要读键盘缓冲区如果键盘缓冲区不为空有点麻烦,接下来就是将得到的十进制数转化为想要的5位数以内的数字其实也就是你输入的数但是输入后读出来的只是每一位数都占了一个字节的数,所以还得将它们转化为那个输入的数字,然后将得到的数存入一个缓冲区以便五个数输入结束以后进行冒泡法排序,接下来就是冒泡排序了,排序结束后得到了按顺序排列的五个数,还要显示在屏幕上
(太凶残了),那就要将这五个数拆解已得到它的各个数位即不断的除以10只到商为0为止,但要记得每次得到的数位都要保存好最先得到的是各位其次最后才是最高位将各个数位对应的asc字符保存到一段连续的内存空间里面由低字节到高字节顺序存放的话那么这个数就是倒过来的个位放在了最前面那么显示的时候还要费点周折把它倒过来才是正常的如果不想显示的时候费事那就在存放各个数位的asc字符的时候想办法似的由低字节到高字节依次存放的是拆解的那个数的最高位到个位,不管怎样反正得费事。在此可以选择拆解一个数显示一个数也可以全都拆解完了再显示。基本的步骤就是这些了。
不得不吐槽一句汇编真正强大的地方是对硬件的操控,这道题对于硬件只是涉及了显存和键盘而已要体会对这两个硬件的控制也不用弄得如此复杂吧这道题的内涵更在于算法本身至于那些硬件细节很多的汇编里面都会涉及,这题出的实在是有点没有意义,本来复杂的算法就不是汇编所擅长的,正如楼上说的用C写再看看汇编就好
一般谁会DT 的给你答案呀。。。
如果是书上的 题目,一般会在前面给出例子,参考例子 慢慢折腾吧,如果 是老师出的,哼哼。。。。