微型计算机原理与接口技术课程设计说明书-键盘录入转换程序设计内容摘要:

序,当输入字符没有空格时字符全部以反序输出显示在屏幕上,当输入字符有空格时对于空格前的字符以正序输出显示在屏幕上,对于 “ .” 前的字符以反序输出显示在屏幕上。 另外,考虑到若 输入字符存在“ $”, DOS 系统的 INT 21H 下的 09H字功能以“ $”为结束符,自动结束字符串的显示,故当输入 ” .” 后 很可能 并未终止输入字符 ,这将在程序调试时得出结论。 主程序的程序流程图如下。 武汉理工大学《微型计算机 原理 与接口技术 》课程设计说明书 8 图 1 主程序设计流程图 段寄存器、堆栈和界面初始化 开 始 INT 21H的 01H号子功能接收键入字符 调用 JUDGE 子程序 INT 21H的 01H号子功能接收键入字符 CF=1。 SI 加 1 Y N INT 21H 的 02H 号子功能显示回车和换行 INT 21H 的 09 号子功能显示 STR2 和 STRING 字符串 DI 加 1 N Y 结 束 偏移地址指针 SI 清零 INT 21H 的 09 号子功能显示 STR1 字符串 DH 清零 DH=1? ‘ $’传送到 [STRING+SI+1] 调用 CHANGE 子程序 武汉理工大学《微型计算机 原理 与接口技术 》课程设计说明书 9 JUDGE 子程序设计 对输入的字符首先判断其是否为空格键,若为空格键则将 DH 和 CF 置 1,并且将数输入的字符送到 STRING 中,若不为空格键则继续判断其是否为“ .” 键,则将 CF置 0,将其值返回后终止输入字符。 其程序流程图如下。 CHANGE 子程序设计 由于字符串处理在堆栈中进行,首先将断点数据压入堆栈,以便调用子程序后可以正确的返回主程序中,对输入的数据的长度进行处理,计算设置 SI 和 DI 的初值,设置循环,将循环次数赋予 CL从而控制循环,然后将 [STRING+SI]传送到 AL中,用XCHG 将 AL 和 [STRING+DI]数据交换,循环结束后从而使得正序输入的数据以反向输出显示在屏幕上,最后将断点数据出堆栈返回到主程序。 子程序流程图如下。 将 SI 传送给 DI AL=20H? 将 1 传送给 DH AL=2EH? N Y JUDGE 子程序 STC AL 传送到 STRING Y N CF=1 图 2 JUDGE 子程序流程图 返 回 武汉理工大学《微型计算机 原理 与接口技术 》课程设计说明书 10 图 3 CHANGE 子程序流程图 程序编写 根据分析和程序流程图,编写以下程序。 %定义数据段 % DATA SEGMENT STR1 DB‘ PLEASE INPUT THE STRING:’ ,0AH,0DH,’ $’ STR2 DB ‘ THE RESULT IS:’ ,0AH,0DH,’ $’ STRING DB 100 DUP(?) MENU1 DB 39。 WELCOME SUNLIFEI DE DESIGN $39。 CF=0? N Y 断点数据压入堆栈 设置 SI 和 DI 初值 将 [STRING+SI]传送到 AL 将 [STRING+DI]与 AL 数据交换 将 AL 传送到 [STRING+SI] SI 减 1, DI 加 1 断点数据出堆栈 CHANGE 子程序 返 回 武汉理工大学《微型计算机 原理 与接口技术 》课程设计说明书 11 DATA ENDS SHUCHU MACRO OP1,OP2,OP3,OP4,OP5,OP6 %循环输出 ,用于初始化界面周边的笑脸符 % MOV CX,0 MOV DH,OP1 %起始 行 MOV DL,OP2 %起始 列 % OP6: MOV AH,02H MOV BH,01H INT 10H PUSH CX MOV AH,0AH MOV AL,OP3 %要显示的字符 MOV CX,01H MOV BH,00H INT 10H POP CX INC CX INC OP4 %这里指的要循环输出的是行还是列 % CMP CX,OP5 %循环次数 % JNE OP6 ENDM MENU MACRO OP1,OP2,OP3 %用于屏幕上文字的输出 % MOV CX,0 %1,2 为起始输出的行、列, 3为字符串的地址 % MOV AH,02H MOV BH,00H MOV DH,OP1 MOV DL,OP2 INT 10H LEA DX,OP3 武汉理工大学《微型计算机 原理 与接口技术 》课程设计说明书 12 MOV AH,9 INT 21H ENDM CLS MACRO OP1,OP2,OP3,OP4 %用于清屏 ,分别是起止的行和列 MOV AH,6 MOV BH,17H MOV AL,0 MOV CH,OP1 MOV CL,OP2 MOV DH,OP3 MOV DL,OP4 INT 10H MOV AH,2 MOV BH,0 MOV DH,0 MOV DL,0 INT 10H ENDM %定义堆栈段 % STACK SEGMENT DB 100 DUP(?) STACK ENDS %定义代码段 % CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK %主程序设计 %。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。