键盘录入数据的转换与显示程序课程设计报告
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.做成一个子程序,供其它程序调用。
3.要求程序运行后显示器显示:“please input the first number from -9999 to 9999!”的提示。
4.在输入数据之后,屏幕显示输入的值。
5.接着显示器显示“please input the second number from -9999 to 9999!”的提示。
MOV SI,OFFSET IN_ASC_BUF1+2;将第二个数的第一个字符放于源
数据区指针中
LP:MOV AX,[DI]地址内容送入AX
MOV [SI],AX
INC SI
INC SI
INC DI
INC DI
LOOP LP循环LP,读取出第一个数
模块二:输入第二个数
MOV B_BUF1,AX
MOV DX,OFFSET INPUT2;取第二个输入数的首地址
IN_ASC_BUFDB 6;十进制数的输入缓冲区,共可接收6个字符
DB ?;保留,用于10号调用时DOS填入实际输入字符个数
DB 6 DUP(?),'$';一个符号位,四位数字ASCII码,加上一个回车符,共计6字符
IN_ASC_BUF1DB 6
DB ?
DB 12 DUP(?),'$'
B_BUF1 DW ?;将第一个数转换为二进制后,放于此处
MOV AX,DATA
MOV DS,AX;设置DS
MOV DX,OFFSET INPUT1;取第一个输入数的首地址
MOV AH,09H
INT 21H;提示输入一个数
MOV DX,OFFSET IN_ASC_BUF
MOV AH,0AH
INT 21H;读取第一个数
MOV CX,3;设置次数
MOV DI,OFFSET IN_ASC_BUF+2;将第一个数的第一个字符放于目的数据区指针中
2.先输入主程序。输入两个数时,键盘接收的十进制数以ASCII码形式存放在内存单元中,将其转换为十进制数字。数值在-9999至+9999范围内。
3.主程序中,两个二进制数数求和,结果也在16位补码的表示范围内。
4.主程序中,和显示前,首先把二进制转换为十进制数,检查和的符号位,若为负数则求补。
5。子程序中,实现十进制数转换为二进制方法是先将累加和赋0,再用累加和乘10加X得出结果。转换后在16位补码的表示范围内,如果为负数,则需求补。
MOV AH,09H
INT 21H;提示输入二个数
MOV DX,OFFSET IN_ASC_BUF
MOV AH,0AH
INT 21H;读取第二个数
MOV CX,3;设置次数
MOV DI,OFFSET IN_ASC_BUF+2;将第二个数的第一个字符放于目的数据区指针中
MOV SI,OFFSET IN_ASC_BUF1+7;将第二个数的第一个字符放于源数据区指针中
INPUT2DB 0DH,0AH,'PLEASE IUPUT THE SECOND NUMBER FROM -9999 TO 9999!$';输入第二个数,在-9999至+9999范围
OUT_ASC_SUMDB 6 DUP(?),'$';将二个数的和转换为ASCII码后,放于此处,以供9号调用显示
DATAENDS
ห้องสมุดไป่ตู้INT 21H
MOV DX,OFFSET IN_ASC_BUF1+2
MOV AH,09H
INT 21H
MOV DX,0AH
MOV AH,02H
INT 21H
MOV DL,'='
MOV AH,02H
INT 21H
通过调用DOS系统的01H号功能——键入字符并回车来实现,其出口参数为键入字符的ASCII码,存在AL中
详细设计方案:
DATASEGMENT
INPUT1DB 0DH,0AH,'PLEASE IUPUT A FIRST NUMBER FROM -9999 TO 9999!$';输入第一个数,在-9999至+9999范围内
将结果存入数据段中定义的缓冲区OUT_ASC_SUM中,再通过调用DOS系统的09H号功能——显示字符串(串尾字符为$,但不显示)来完成。
ADD AX , BIN_BUF1;计算这二个数之和
CALL BIN_TO_ASCII;将和转换为ASCII码,以供显示用
MOV DX,0AH
MOV AH,02H
6.在输入数据之后,屏幕显示第二个数的输入的值。
7.最后显示器显示“****+****=****”,其中3个****分别是第一个加数,第二个加数,和。
三.总体方案:
1.程序分为主程序和子程序,主程序主要是接收从键盘输入的数,两个数的求和,以及和的显示;子程序分别实现十进制数转换为二进制和将二进制数转换为十进制数。
课程设计报告书
课 程 名 称微机原理及应用B
院(系、部、中心)自动化学院
专业自动化(数控技术)
班 级
姓 名
学 号
起 止 日 期
指 导 教 师
一、设计题目………………………………………2
二、设计任务(要求)……………………………2
三、总体方案………………………………………2
四、原理框图………………………………………3
LP1:MOV AX,[DI]地址内容送入AX
MOV [SI],AX
INC SI
INC SI
INC DI
INC DI
LOOP LP1循环LP1,读取出第一个数
模块二:输入第二个数
模块三.两个二进制数求和并显示和:
显示结果:
MOV AH,09H
MOV DX,OFFSETOUT_ASC_SUM
INT 21H
6.子程序中,实现二进制数转换为十进制前先检查符号位,若为负数则求补,转换方法为将二进制数除以1000,再将余数除以1000,依次类推,求出百,十位数,剩下的为个位数,最后将各个数加上30H,即成为对应字符。
四.原理框图:
五.系统模块详细设计与调试:
一).模块设计
模块一.输入第一个数:
MOV AH,09H
五、系统模块详细设计与调试……………………4
六、设计总结………………………………………9
七、参考文献………………………………………10
八、附件材料………………………………………10
一.设计题目:
键盘录入数据的转换与显示程序设计
二.设计任务:
1.编写一个程序,能从键盘读入两个5位十进制数(1位符号位和4位数值位),并将这两个十进制数分别转换为二进制数,然后求其和,再将和以十进制形式在屏幕上显示。
3.要求程序运行后显示器显示:“please input the first number from -9999 to 9999!”的提示。
4.在输入数据之后,屏幕显示输入的值。
5.接着显示器显示“please input the second number from -9999 to 9999!”的提示。
MOV SI,OFFSET IN_ASC_BUF1+2;将第二个数的第一个字符放于源
数据区指针中
LP:MOV AX,[DI]地址内容送入AX
MOV [SI],AX
INC SI
INC SI
INC DI
INC DI
LOOP LP循环LP,读取出第一个数
模块二:输入第二个数
MOV B_BUF1,AX
MOV DX,OFFSET INPUT2;取第二个输入数的首地址
IN_ASC_BUFDB 6;十进制数的输入缓冲区,共可接收6个字符
DB ?;保留,用于10号调用时DOS填入实际输入字符个数
DB 6 DUP(?),'$';一个符号位,四位数字ASCII码,加上一个回车符,共计6字符
IN_ASC_BUF1DB 6
DB ?
DB 12 DUP(?),'$'
B_BUF1 DW ?;将第一个数转换为二进制后,放于此处
MOV AX,DATA
MOV DS,AX;设置DS
MOV DX,OFFSET INPUT1;取第一个输入数的首地址
MOV AH,09H
INT 21H;提示输入一个数
MOV DX,OFFSET IN_ASC_BUF
MOV AH,0AH
INT 21H;读取第一个数
MOV CX,3;设置次数
MOV DI,OFFSET IN_ASC_BUF+2;将第一个数的第一个字符放于目的数据区指针中
2.先输入主程序。输入两个数时,键盘接收的十进制数以ASCII码形式存放在内存单元中,将其转换为十进制数字。数值在-9999至+9999范围内。
3.主程序中,两个二进制数数求和,结果也在16位补码的表示范围内。
4.主程序中,和显示前,首先把二进制转换为十进制数,检查和的符号位,若为负数则求补。
5。子程序中,实现十进制数转换为二进制方法是先将累加和赋0,再用累加和乘10加X得出结果。转换后在16位补码的表示范围内,如果为负数,则需求补。
MOV AH,09H
INT 21H;提示输入二个数
MOV DX,OFFSET IN_ASC_BUF
MOV AH,0AH
INT 21H;读取第二个数
MOV CX,3;设置次数
MOV DI,OFFSET IN_ASC_BUF+2;将第二个数的第一个字符放于目的数据区指针中
MOV SI,OFFSET IN_ASC_BUF1+7;将第二个数的第一个字符放于源数据区指针中
INPUT2DB 0DH,0AH,'PLEASE IUPUT THE SECOND NUMBER FROM -9999 TO 9999!$';输入第二个数,在-9999至+9999范围
OUT_ASC_SUMDB 6 DUP(?),'$';将二个数的和转换为ASCII码后,放于此处,以供9号调用显示
DATAENDS
ห้องสมุดไป่ตู้INT 21H
MOV DX,OFFSET IN_ASC_BUF1+2
MOV AH,09H
INT 21H
MOV DX,0AH
MOV AH,02H
INT 21H
MOV DL,'='
MOV AH,02H
INT 21H
通过调用DOS系统的01H号功能——键入字符并回车来实现,其出口参数为键入字符的ASCII码,存在AL中
详细设计方案:
DATASEGMENT
INPUT1DB 0DH,0AH,'PLEASE IUPUT A FIRST NUMBER FROM -9999 TO 9999!$';输入第一个数,在-9999至+9999范围内
将结果存入数据段中定义的缓冲区OUT_ASC_SUM中,再通过调用DOS系统的09H号功能——显示字符串(串尾字符为$,但不显示)来完成。
ADD AX , BIN_BUF1;计算这二个数之和
CALL BIN_TO_ASCII;将和转换为ASCII码,以供显示用
MOV DX,0AH
MOV AH,02H
6.在输入数据之后,屏幕显示第二个数的输入的值。
7.最后显示器显示“****+****=****”,其中3个****分别是第一个加数,第二个加数,和。
三.总体方案:
1.程序分为主程序和子程序,主程序主要是接收从键盘输入的数,两个数的求和,以及和的显示;子程序分别实现十进制数转换为二进制和将二进制数转换为十进制数。
课程设计报告书
课 程 名 称微机原理及应用B
院(系、部、中心)自动化学院
专业自动化(数控技术)
班 级
姓 名
学 号
起 止 日 期
指 导 教 师
一、设计题目………………………………………2
二、设计任务(要求)……………………………2
三、总体方案………………………………………2
四、原理框图………………………………………3
LP1:MOV AX,[DI]地址内容送入AX
MOV [SI],AX
INC SI
INC SI
INC DI
INC DI
LOOP LP1循环LP1,读取出第一个数
模块二:输入第二个数
模块三.两个二进制数求和并显示和:
显示结果:
MOV AH,09H
MOV DX,OFFSETOUT_ASC_SUM
INT 21H
6.子程序中,实现二进制数转换为十进制前先检查符号位,若为负数则求补,转换方法为将二进制数除以1000,再将余数除以1000,依次类推,求出百,十位数,剩下的为个位数,最后将各个数加上30H,即成为对应字符。
四.原理框图:
五.系统模块详细设计与调试:
一).模块设计
模块一.输入第一个数:
MOV AH,09H
五、系统模块详细设计与调试……………………4
六、设计总结………………………………………9
七、参考文献………………………………………10
八、附件材料………………………………………10
一.设计题目:
键盘录入数据的转换与显示程序设计
二.设计任务:
1.编写一个程序,能从键盘读入两个5位十进制数(1位符号位和4位数值位),并将这两个十进制数分别转换为二进制数,然后求其和,再将和以十进制形式在屏幕上显示。