资源描述:
《微机原理课程设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、《微机原理与接口技术》课程设计院系:班级:姓名:指导教师:日期:一设计任务:编写一汇编语言程序,要求从键盘接收一个四位的十六进制数,并在终端上显示与它等值的二进制数和十进制数。(课例027、017、024)二设计方案将接收到的数转成16进制数,将这个数保存在一个通用寄存器中(如AX),然后对AX循环做16次SHL,由carry标志寄存器的状态来判断显示0/1。十六位二进制数保存在BX中,对BX中的二进制数循环左移,每次移一位,然后把BL中的二进制数送给AL,再对AL的前7位进行屏蔽,只留一位原本是最高位的
2、那位二进制数,它要么为1,要么为0。然而把AL中的这位二进制数转换为十进制数,并且输出,由于AL高7位都为0,所以转换位十进制后,然后要么为1,要么为0,并且与那位二进制数相对应。这样循环做16次,就把整个BX中的二进制数都显示出来。软件VisulASMSetup汇编程序的上机过程是:1)打开软件建立新文件并把程序粘贴在文件上点击汇编源程序2)下一步然后再点链接目标码3)然后点调试程序4)最后点运行程序开始三流程图初始化循环计数值BX循环逻辑左移一个数位N输入一个四位的十六进制数>9吗?N转换为十进制显示
3、二进制数循环计数器=0?结束1.程序运行结果截图附录STACKSEGMENTPARASTACK'STACK'DW200DUP(0);初始化堆栈大小为STACKENDSDATESEGMENTTRANBDB0DH,0AH,'Thetransformedbinaryis:',0DH,0AH,'$'TRANDDB0DH,0AH,'Thetransformeddemicalis:',0DH,0AH,'$'RESULTDB5DUP(?),'$'DATEENDSCODESEGMENTASSUMECS:CODE,DS:D
4、ATE,SS:STACKMAINPROCFAR;主程序入口MOVAX,DATEMOVDS,AXMOVBX,0MOVCH,4MOVCL,4INPUT:SHLBX,CLMOVAH,01HINT21HCMPAL,39H;大于则转移JAAFANDAL,0FHJMPBINARYAF:ANDAL,0FHADDAL,09HBINARY:ORBL,ALDECCHJNZINPUT;转换完成二进制数在BX中PUSHBXLEADX,TRANBMOVAH,9INT21H;显示字符串DISPB:MOVCX,10H;显示二进制数DI
5、SP:MOVDL,0ROLBX,1RCLDL,1ADDDL,30HMOVAH,2INT21HLOOPDISPPOPBXMOVCX,5MOVAX,BXMOVBX,10MOVDI,OFFSETRESULT+4JBY:XORDX,DXDIVBXORDL,30HMOVBYTEPTR[DI],DLDECDILOOPJBYLEADX,TRANDMOVAH,9INT21H;显示字符串MOVDX,OFFSETRESULTMOVAH,9INT21HMOVAH,1INT21HMOVAH,4CH;程序结束,返回到操作系统系统I
6、NT21HRETMAINENDPCODEENDSENDMAIN