1、微机原理课程设计一、 课程设计内容: 由键盘输入任意四位十六进制数转换为二进制输出即若输入数字 0 至 9 或字符 A 至 F,则转换为二进制输出;若输入为其它,则程序退出。二、 程序分析将十六位二进制数保留在BX中,对BX中二进制数循环左移,每次移一位,然后把BL中二进制数送给AL,再对AL前7位进行屏蔽,只留一位原本是最高位那位二进制数,它要么为1,要么为0。然后把AL中这位二进制数转化为十进制数,而且输出。因为AL高7位全部为0,所以转换为十进制数,而且输出。因为AL高7位全部为0,所以转换为十进制后,仍然要么为1,要么为0,而且和那位二进制数相对应。做16次循环,显示整个二进制数。三、
2、 步骤图程序步骤图开始屏幕显示字符调用输入函数调用显示函数返回结束输入函数INPUT步骤图 开始BX寄存器清空,DI置循环次键盘输入单字符存入ALAL30AL=39AL41AL=46AL-30BX左移4位AX和BX累加后放入DI=DIDI=0错误处理AL-37结束NNNNYYYYN输出函数DISPLAY步骤图开始结束置初值CX=16BX左移一位输出字符0CF=1CX=0输出字符1YYNN三、程序代码及分析DATA SEGMENTTIP DB 0DH,0AH,INPUTA DATA OF HEX FORM:$ WRONG1 DB 0DH,0AH,INAVAILABLE INPUT!:$,0DH,
3、0AH DATA ENDSCODE SEGMENTMAIN PROC FAR ;调用主函数ASSUME CS:CODE,DS:DATA MOV AX,DATAMOV DS,AX ;装数据段START:MOV AH,9 MOV DX,OFFSET TIPINT 21H ;屏幕显示提醒输入字符CALL INPUT CALL DISPLAY JMP START RETMOV AX,4C00H INT 21HMAIN ENDP ;主函数结束;-键盘输入函数INPUT PROC NEARXOR BX,BXMOV DI,4 ;要求输入四位十六进制数,置数NCHAR: MOV AH,1INT 21H ;从键
4、盘输入一个字符系统功效调用CMP AL,30H JB WRONG CMP AL,39H JBE SOLVE1CMP AL,41H JB WRONG CMP AL,46H JBE SOLVE2JMP WRONG ;判定是否输入有效字符SOLVE1:SUB AL,30H;0-9,将 ASCII 码转为二进制数JMP GOONSOLVE2:SUB AL,37H ; A-F,将 ASCII 码转为二进制GOON:MOV CL,4 ;将转换后二进制数位依次存入寄存器BX SAL BX,CLMOV AH,0ADD BX,AXDEC DI ;输入满四个字符后返回JNZ NCHAR ;正常返回,准备输入下一个
5、数JMP BACK1WRONG: MOV AH,9 ;含有非十六进制数码,报错后退出程序MOV DX,OFFSET WRONG1INT 21HMOV AX,4C00H INT 21HBACK1:RETINPUT ENDP ;输入程序结束;- 显示字符函数DISPLAY PROC NEARMOV CX,16MOV DL,20H ;插入一个空格系统功效调用MOV AH,02H INT 21HNEXT: SHL BX,1JC CASE1MOV DL,30H 输出字符 0MOV AH,02HINT 21HLOOP NEXT JMP BACK2CASE1: MOV DL,31H 输出字符 1MOV AH,02H INT 21HLOOP NEXT BACK2:RET DISPLAY ENDPCODE ENDS END MAIN四、运行结果五、附录程序清单4位16进制转换2进制程序输入程序输出程序屏幕显示程序六、心得体会经过这次微机原理课程设计,使我对汇编语言有了一定了解。充足了解了怎样将4位16进制数用汇编语言转换为2进制数输出,和常见输入输出程序,掌握了步骤图画法,了解了汇编语言结构和基础语法。即使只是一个小程序,但这次课程设计使我体会到了,微机原理课程在实际中应用价值。深刻感到了自己知识有限和微弱,我将倍加珍爱往后课堂时光,努力学习知识并主动实践。 在此,感谢李老师。