实验目的
- 掌握程序设计中的3种基本结构(顺序结构、选择程序、循环程序)。
熟练使用汇编语言的指令:数据传送类指令、数据运算类指令、逻辑判断类指令与转移指令、循环指令等。
初步了解系统功能调用的使用方法,尝试使用01H号功能调用进行字符输入的方法及使用02H号功能调用进行字符输出(显示)的方法。
程序说明
编写十进制到十六进制转换程序。要求从键盘取得一个十进制数,然后把该数以十六进制形式在屏幕上显示出来
已知从BUF开始存放了10个16进制字数据,编程求出这10个数中的最大数,(将最大数存入MAX字节单元),并将其以10进制数的形式在屏幕上显示出来。(提示:以上两题都要求采用子程序的方法)
从键盘上输入一行字符,如果这行字符比前一次输入的一行字符长度长,则保存该行字符,然后继续输入另一行字符;如果它比前一次输入的行短,则不保存这行字符。按下‘$’输入结束,最后将最长的一行字符显示出来。(选作)
设计思想
题目一
如下图所示,首先调用子程序getinput获取用户输入的十进制数字,然后调用子程序htoa以十六进制显示用户输入的数据。
题目二
如下图所示,首先调用子程序getmax获取buf中的最大值,同时存储进max和(ax),最后调用子程序display显示(ax)。
题目三
首先子程序getstr获取用户输入的字符串,每收到一个字符串之后,根据长度判断是否更新string,然后用户输入一个字符判断输入是否结束;
然后子程序display显示字符串string。
程序代码
题目一
1 | stack segment ; 数据段 |
题目二
1 | data segment |
题目三
1 | data segment |
结果分析
前两题略
题目三
遇到的问题及解决方法如下:
- 获取用户输入的字符串时,按下Enter之后,光标回车,由于题目是多个输入(用户只输入一个字符串时,也要用
$
作为一次输入,所以也算多个输入),所以要增加换行操作。 输出结果时string后边的。
出现吞字问题:除了第一次输入,之后的输入第一个字符都会被当做判断输入结束的字符而不是字符串的内容…所以会吞字。
作者:@臭咸鱼
转载请注明出处:https://chouxianyu.github.io
欢迎讨论和交流!