键盘录入数据的转换与显示程序课程设计报告.docx
- 文档编号:29871870
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:17
- 大小:118.64KB
键盘录入数据的转换与显示程序课程设计报告.docx
《键盘录入数据的转换与显示程序课程设计报告.docx》由会员分享,可在线阅读,更多相关《键盘录入数据的转换与显示程序课程设计报告.docx(17页珍藏版)》请在冰豆网上搜索。
键盘录入数据的转换与显示程序课程设计报告
课程设计报告书
课程名称微机原理及应用B
院(系、部、中心)自动化学院
专班姓学起指
一、设计题目2
二、设计任务(要求)2
三、总体方案2
四、原理框图3
五、系统模块详细设计与调试4
六、设计总结9
七、参考文献10
八、附件材料10
-i-
1.设计题目:
键盘录入数据的转换与显示程序设计
2.设计任务:
1.编写一个程序,能从键盘读入两个5位十进制数(1位符号位和4位数值位),并将这两个十进制数分别转换为二进制数撚后求其和,再将和以十进制形式在屏幕上显示。
2•做成一个子程序,供其它程序调用。
3.要求程序运行后显示器显示:
“pleaseinputthefirstnumberfrom
-9999to9999!
”的提示。
4.在输入数据之后,屏幕显示输入的值。
5.接着显示器显示“pleaseinputthesecondnumberfrom-9999to9999!
”的提示。
6.在输入数据之后,屏幕显示第二个数的输入的值。
7.最后显示器显示“****+****=****”,其中3个****分别是第一
个加数,第二个加数,和。
三•总体方案:
1.程序分为主程序和子程序,主程序主要是接收从键盘输入的数,两个数的求和,以及和的显示;子程序分别实现十进制数转换为二进制和将二进制数转换为十进制数。
2.先输入主程序。
输入两个数时,键盘接收的十进制数以ASCII码形式存放在内存单元中,将其转换为十进制数字。
数值在-9999至+9999范围内。
3.主程序中,两个二进制数数求和,结果也在16位补码的表示范围内。
4.主程序中,和显示前,首先把二进制转换为十进制数,检查和的符号位,若为负数则求补。
5.子程序中,实现十进制数转换为二进制方法是先将累加和赋0,再用累加和乘10加X得出结果。
转换后在16位补码的表示范围内,如果为负数,则需求补。
6.子程序中,实现二进制数转换为十进制前先检查符号位,若为负数则求补,转换方法为将二进制数除以1000,再将余数除以1000,依次类推,求出百,十位数,剩下的为个位数,最后将各个数加上30H,即成为对应字符。
四.原理框图:
五.系统模块详细设计与调试:
一).模块设计
模块一•输入第一个数:
MOVAH,09H
INT21H
通过调用DOS系统的01H号功能——键入字符并回车来实现,
其出口参数为键入字符的ASCII码,存在AL中详细设计方案:
DB0DH,0AH,'PLEASEIUPUTAFIRSTNUMBERFROM
;输入第一个数,在-9999至范围内
;十进制数的输入缓冲区,共可接收6个字符
;保留,用于10号调用时DOS填入实际输入字符个数
;一个符号位,四位数字ASCII码,加上一个回车符,共计6字符
DB?
DB12DUP⑺,'$'
;将第一个数转换为二进制后,放于此处
DB0DH,0AH,'PLEASEIUPUTTHESECONDNUMBERFROM-9999TO9999!
$';输入第二个数,在-9999
;将二个数的和转换为
ASCII码后,放于此处,以供9号调用显示
DATA
;设置DS
;取第一个输入数的
首地址
ENDS
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETINPUT1
LP:
MOVAH,09H
INT21H
MOVDX,OFFSETIN_ASC_BUF
MOVAH,0AH
INT21H
MOVCX,3
MOVDI,OFFSETIN_ASC_BUF+2
MOVSI,OFFSETIN_ASC_BUF1+2
MOVAX,[DI]MOV[SI],AXINCSI
INCSI
INCDI
INCDILOOPLP
模块二:
输入第二个数
MOVB_BUF1,AX
MOVDX,OFFSETINPUT2
MOVAH,09H
INT21H
MOVDX,OFFSETIN_ASC_BUF
MOVAH,0AH
INT21H
MOVCX,3
MOVDI,OFFSETIN_ASC_BUF+2
;提示输入一个数
;读取第一个数
;设置次数
;将第一个数的第一个字符放于目的数据区指针中
;将第二个数的第一个字符放于源数据区指针中地址内容送入AX
循环LP读取出第一个数
;取第二个输入数的首地址
;提示输入二个数
;读取第二个数
;设置次数
;将第二个数的第一个字符放于目的数据区指针
中
MOVSI,OFFSETIN_ASC_BUF1+7;将第二个数的
第一个字符放于源数据区指针中
LP1:
MOVAX,[DI]地址内容送入AX
MOV[SI],AX
INCSI
INCSI
INCDI
INCDI
LOOPLP1循环LP1,读取
出第一个数
模块二:
输入第二个数
模块三•两个二进制数求和并显示和:
显示结果:
MOVAH,09H
MOVDX,OFFSETOUT_ASC_SUM
INT21H
将结果存入数据段中定义的缓冲区OUT_ASC_SUM中,再通过调用DOS系统的09H号功能——显示字符串(串尾字符为$,但不显示)来完成。
ADDAX,BIN_BUF1;计算这二个数
之和
CALLBIN_TO_ASCII;将和转换为
ASCII码,以供显示用
MOVDX,0AH
MOVAH,02H
INT21H
MOVDX,OFFSETIN_ASC_BUF1+2
MOVAH,09H
INT21H
MOVDX,0AH
MOVAH,02H
INT21H
MOVDL,'='
MOVAH,02H
INT21H
MOVDX,OFFSETOUT_ASC_SUM
MOVAH,09H
INT21H
MOVAH,4CH
INT21H
模块四.十进制数转换成二进制数:
入口:
十进制数的ASCII码在IN_ASC_BUF内出口:
转换后的二进制数在AX内
算法:
先将其转换成十进制数字,再用累加和乘10加X的方法变成二进制数,如将358转换为二进制数,可先将累加和赋0,再计算(((0*10+3)*10+5)*10+8),结果为二进制数,再由符号位决定是否需
要求补。
ASC_TO_BPROCNEAR
;取字符个数
;符号位
■.
调整BX指向十进制数的最高位
MOVCL,IN_ASC_BUF+1
MOVCH,0
DECCL
MOVBX,OFFSETIN_ASC_BUF+3
PUSHBXPUSHCX
L1:
MOVAL,[BX]
ANDAL,0FHMOV[BX],ALINCBX
LOOL1
将所有数字字符的高四位清
0,使之变为数字值
ASC_TO_BENDP
模块五.二进制数转换为十进制数:
入口:
二进制数在AX内
出口:
转换后的ASCII码在OUT_ASC_SUM变量内
算法:
AX中的数范围在+32767到-32768之间,先检查AX中的符号位,以决定输出“+”还是“-”,若是负数,应先求补,得到原码后即可与正数作统一处理。
转换方法为将被转换的二进制数先除以10000,商;即为万位数,再将余数除以1000,商为千位数,以此类推,求出百、十位数,剩下的为个位数。
最后,将各个数加上30H,即成为对应字符。
;保存千位数字
;将余数置入AX内,以便当作被除数
;保存百位数字
CWD
MOVBX,1000
DIVBX
ADDAL,30H
MOVOUT_ASC_SUM+2,AL
MOVAX,DX
MOVBL,100
DIVBL
ADDAL,30H
MOVOUT_ASC_SUM+3,AL
MOVAL,AHCBW
MOVBL,10
DIVBL
ADDAL,30H
MOVOUT_ASC_SUM+4,AL;保存十位数字
ADDAH,30H
MOVOUT_ASC_SUM+5,AH;保存个位数字
RET
B_TO_ASCENDP
二).程序调试
在DOS环境下,键入EDIT。
启动全屏幕编辑软件EDIT,输入源程序。
输入完毕,按alt+F选择SAVE保存程序(规定扩展名为*.ASM),按alt+X退出EDIT状态。
退出EDIT环境后,输入ASM或MASM文件名/(省略扩展名,系统默认为.ASM),对源程序进行汇编。
源程序经汇编后产生三个输出文件:
第一个是OBJ文件,即二进制目标文件,这是汇编的主要目的;第二个是LST文件,即列表文件;第三个是CRF文件,对于一般的程序可以不建立后两个文件。
汇编时,计算机会询问汇编后生成的OBJ文件名、LST文件名和CRF文件名,问句的右侧是示范回答,如果不想生成LST文件和CRF文件,则按回车键回答。
汇编过程中,如果源程序中有语法错误,则汇编过程结束后,汇编程序会指出源程序中的错误,这时,可以再用编辑程序来修改源程序中的错误,最后,得到没有语法错误的OBJ文件。
汇编程序产生的二进制目标文件不是可执行文件,还必须用连接程序(LINK)把OBJ文件转换成可执行的EXE文件。
LINK程序有两个输入文件OBJ和LIB,两个输出文件EXE和MAP连接时,输入LINK文件名/,对汇编生成的*.OBJ文件进行连接,计算时会询问生成的EXE文件名、MAP文件名以及参与连接的库文件名,如果不想生成MAP文件,没有库文件参与连接,则按回车键作答。
最后,生成相应的*.EXE文件。
从LINK过程的提示信息中,可看到最后给出了一个“无堆栈段”的警告性错误,这并不影响程序的执行。
至此,产生了一个EXE文件,在DOS环境下可以直接运行该文件。
在程序得到正确的结果之前,会产生一些错误,只有经过调试阶段才能纠正程序中的错误,从而的到正确的结果。
在程序编译过程中会提示语法错误,可再用编辑程序来修改源程序中的错误。
当没有语法错误而得不到正确结果时,可用调试程序DEBUG来调试。
它通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段。
六.设计总结:
七.参考文献:
<微机原理实验与课程设计知指导书>,陆红伟编,中国电力出版
社,2006年
<8086微型计算机组成,原理及接口>,顾滨,机械工业出版社,2001
<微型计算机原理及应用
>,吕淑萍等,哈尔滨工程大学出版社,2004
年
<微型计算机技术及应用
>,戴梅萼,清华大学出版社,2005年
八.附件材料:
程序清单:
DATA
SEGMENT
INPUT1
DB0DH,0AH,'PLEASEIUPUTAFIRST
NUMBERFROM-9999TO9999!
$'
IN_ASC_BUF
DB6
DB?
DB6DUP(?
),'$'
IN_ASC_BUF1
DB6
DB?
DB12DUP(?
),'$'
B_BUF1DW?
INPUT2
DB0DH,0AH,'PLEASEIUPUTTHE
SECONDNUMBERFROM-9999
9999!
$'
TO
OUT_ASC_SUM
DB6DUP(?
),'$'
DATA
ENDS
CODE
SEGMENT
ASSUMECS:
CODE,
DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETINPUT1
MOVAH,09H
INT21H
MOVDX,OFFSETIN_ASC_BUF
MOVAH,0AH
INT21H
MOVCX,3
MOVDI,OFFSETIN_ASC_BUF+2
MOVSI,OFFSETIN_ASC_BUF1+2
LP:
MOVAX,[DI]MOV[SI],AXINCSI
INCSI
INCDI
INCDI
-10-
LOOPLP
CALLASC_TO_B
MOVB_BUF1,AX
MOVDX,OFFSETINPUT2
MOVAH,09H
INT21H
MOVDX,OFFSETIN_ASC_BUF
MOVAH,0AH
INT21H
MOVCX,3
MOVDI,OFFSETIN_ASC_BUF+2
MOVSI,OFFSETIN_ASC_BUF1+7LP1:
MOVAX,[DI]
MOV[SI],AX
INCSI
INCSI
INCDI
INCDI
LOOPLP1
CALLASC_TO_B
ADDAX,B_BUF1
CALLB_TO_ASC
MOVDX,0AH
MOVAH,02H
INT21H
MOVDX,OFFSETIN_ASC_BUF1+2
MOVAH,09H
INT21H
MOVDX,0AH
MOVAH,02H
INT21H
MOVDL,'='
MOVAH,02H
INT21H
MOVDX,OFFSETOUT_ASC_SUM
MOVAH,09H
INT21H
MOVAH,4CH
INT21H
ASC_TO_BPROCNEAR
MOVCL,IN_ASC_BUF+1
MOVCH,0DECCL
MOVBX,OFFSETIN_ASC_BUF+3
PUSHBX
PUSHCX
L1:
MOVAL,[BX]ANDAL,0FHMOV[BX],ALINCBXLOOPL1POPCXPOPBXMOVAX,0MOVSI,10
L2:
MULSI
ADDAL,[BX]
ADCAH,0
INCBX
LOOPL2
CMPIN_ASC_BUF+2,'+'JZL3
NEGAX
L3:
RET
ASC_TO_B
ENDP
B_TO_ASCPROCNEAR
MOVOUT_ASC_SUM,'+'
CMPAX,0
JGEL4
NEGAX
MOVOUT_ASC_SUM,'-'
L4:
CWD
MOVBX,10000
DIVBX
ADDAL,30H
MOVOUT_ASC_SUM+1,AL
MOVAX,DX
CWD
MOVBX,1000
DIVBX
ADDAL,30H
MOVOUT_ASC_SUM+2,AL
MOVAX,DX
MOVBL,100
DIVBL
ADDAL,30H
MOVOUT_ASC_SUM+3,AL
MOVAL,AH
-12-
CBW
MOVBL,1O
DIVBL
ADDAL,30H
MOVOUT_ASC_SUM+4,ALADDAH,30H
MOVOUT_ASC_SUM+5,AHRET
B_TO_ASCCODE
ENDP
ENDS
ENDSTART
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 键盘 录入 数据 转换 显示 程序 课程设计 报告