下面是文案网小编分享的微机原理课程设计毕业设计(论文)作文 微机原理毕业设计题目文案,以供大家学习参考。
微机原理课程设计毕业设计(论文)作文 微机原理毕业设计题目文案:
微机原理课程设计毕业设计(论文)
一、设计任务
1、编写一汇编语言程序,要求从键盘接收一个四位的十六进制数,并在终端上显示与它等值的二进制数和十进制数。
2、掌握接受键盘数据的方法,了解将键盘数据显示时须转换为ASCII码的原理。
二、设计方案
(1)实现十六进制数向二进制数的转换
第一步:实现十六进制数的输入和对应二进制数的转换。利用DOS系统功能中的1号输入字符的功能,接收输入的十六进制数,将其转换成对应的二进制数(若是0-9之间的数直接屏蔽高4位,若是A-F之间的数在屏蔽高4位后还要加9)。BX中存放的是二进制数的结果,利用算数左移指令使BX左移4位,然后与下一次转换后的数相加。如此循环4次,得到对应的二进制数。
第二步:实现显示转化后的二进制数。利用ROL和RCL指令,从最高位起循环取出每位二进制数,将其转换成对应的ASSCII码,调用DOS系统功能调用中2号功能显示。
(2)实现十六进制数向十进制数的转换。
第一步:从十六进制向二进制转换,由于十六进制和二进制的特殊关系,它们之间的转换非常简单。
第二步:从二进制转换为十进制,方法是将要转换的二进制预先放到AX寄存器中,判断AX中数的符号,若为负数,则将负号送入输出缓冲区,并求AX的绝对值;若AX中的数为正数,则不做其他处理,此时AX中即为无符号二进制数。然后将无符号二进制数转换为十进制,可采用将AX除以10,得到第一个商和第一个余数,第一个余数就是所求十进制的个位,将第一个余数除以10,得到第二个商和余数,第二个余数就是十进制的十位数,重复以上过程,一直循环到商为零时,得到的余数就是所求十进制的最高位数,这就是数制转换中常用的“除模留余倒排列”法则。
三、流程图
主程序框图
N
N
N
N
GETNUM子程序框图
四、程序运行结果截图
通过设计和编写程序代码,运行程序后,其结果先为显示开始界面几位菜单界面,而后随意输入一个小于4位的十六进制数,打完字敲回车,马上出现所对应的十进制数。当连续输入4位的十六进制数直接输出十进制数,同时,再打回车,可以再输入十六进制数,并且可以循环运行。
五、附录(程序源代码,要求有必要的注释)
(1)十六进制转换为二进制
CRLFMACRO
MOVAH,02H
MOVDL,ODH
INT21H
MOVAH,02H
MOVDL,0AH
INT21H
ENDM
DATASEGMENT
MESSDB‘INPUTHEXNUMBER:$’
ERRORDB‘INPUTERROR!’,0DH,0AH,‘$’
DATAENDS
STACKSEGMENT
STADW32DUP(?)
TOPDW?
STACKENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACK
START:MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVSP,TOP
MOVAH,09H
MOVDX,OFFSETMESS
INT21H;显示提示输入的信息
CALLGETNUM;接收键入数值送DX
MOVCX,0010H;16位
MOVBX,DX
TTT:ROLBX,1;循环左移1位
MOVDL,BL
ANDDL,01H;屏蔽掉高7位
ADDDL,30H
MOVAH,02H
INT21H;显示二进制数位对应的ASCII字符
LOOPTTT
MOVAX,4C00H
INT21H
GETNUMPROCNEAR;子程序,接收键入数值送DX
PUSHCX
XORDX,DX
GGG:MOVAH,01H
INT21H
CMPAL,0DH
JZPPP
CMPAL,30H
JZKKK
SUBAL,30H
CMPAL,0AH
JBGETS
CMPAL,11H
JBKKK
SUBAL,07H
CMPAL,0FH
JBEGETS
CMPAL,2AH
JBKKK
CMPAL,2FH
JAKKK
SUBAL,20H
GETS:MOVCL,04H
SHLDX,CL
XORAH,AH
ADDDX,AX
JMPGGG
KKK:MOVAH,09H
MOVDX,OFFSETERROR
INT21H
PPP:PUSHDX
CRLF
POPDX
POPCX
RET
GETNUMENDP
CODEENDS
ENDSTART
(2)十六进制转换为十进制
DATASEGMENT
CREQU0DH;回车
LFEQU0AH;换行
DAT1DB'Qingshurushiliujinzhishu:',CR,LF,'$';请输入十六进制数
DAT2DB'Shuchushijinzhishu:',CR,LF,'$';输出十进制数
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA
MAINPROCFAR
START:
CALLHEXIBIN;16-2
CALLCRLF;换行
CALLBINIDEC;2-10
CALLCRLF
JMPMAIN;输入下一个四位十六进制数
RET
MAINENDP
HEXIBINPROCNEAR
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETDAT1;DS:DX指向字符串DAT1
MOVAH,09H;DOS9号功能调用
INT21H
MOVBX,0;将BX清零
MOVDX,0;将DX清零
NEWCHAR:
CMPDx,04H;用DX控制输入数的个数为4位
JZEXIT
MOVAH,01H;键盘输入数据
INT21H;DOS1号功能调用
SUBAL,30H;ASCII转为2进制
JLEXIT;如果小于零就跳出,输入不合法
CMPAL,10D;判断是否超出十
JLADD_TO;如果没超出十就是十进制数;如果超出十那么可能是A到F的字母输入
SUBAL,27H;将ASCII变为十进制字母要加九
CMPAL,0AH;将它与字母a转化成的数比较
JLEXIT;如果小就跳转
CMPAL,10H;将它与字母f的转化码比较
JGEEXIT;如果大就跳出
ADD_TO:
MOVCL,4
SHLBX,CL
MOVAH,0
ADDBX,AX
INCDX
JMPNEWCHAR;在BX中存储转化的二进制数为二进制转化为
十进制做准备
EXIT:
RET
HEXIBINENDP
BINIDECPROCNEAR
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETDAT2
MOVAH,09H
INT21H
MOVCX,10000D
CALLDEC_DIV
MOVCX,1000D
CALLDEC_DIV
MOVCX,100D
CALLDEC_DIV
MOVCX,10D
CALLDEC_DIV
MOVCX,1D
CALLDEC_DIV
RET
DEC_DIVPROCNEAR
MOVAX,BX;将BX的数送入AX中
MOVDX,0;将被除数高位清零
DIVCX
MOVBX,DX;余数保存在BX中
MOVDL,AL;商放入DL显示
ADDDL,30H;将数变为ASCII码
MOVAH,02H
INT21H
RET
DEC_DIVENDP
BINIDECENDP
CRLFPROCNEAR
MOVDL,0AH
MOVAH,02H
INT21H
MOVDL,0DH
MOVAH,02H
INT21H
RET
CRLFENDP
CODEENDS
ENDSTART
微机原理课程设计毕业设计(论文)作文 微机原理毕业设计题目文案:
微机原理课程设计毕业设计(论文)作文 微机原理毕业设计题目文案:
微机原理课程设计毕业设计(论文)作文 微机原理毕业设计题目文案:
结语:无论是在学校还是在社会中,大家都不可避免地要接触到作文吧,根据写作命题的特点,作文可以分为命题作文和非命题作文。写起作文来就毫无头绪?以下是小编为大家收集的《微机原理课程设计毕业设计(论文)》作文,希望在写《微机原理课程设计毕业设计(论文)》上能够帮助到大家,让大家都能写好《微机原理课程设计毕业设计(论文)》作文