




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
专业课程设计(微处理器与微控制器原理)代码转换第一章 设计要求及思路1.1设计要求按屏幕提示要求输入,并进行相关进制之间的相互转换,从屏幕上获得正确结果。1.2 设计思路整个程序的实现可由若干个模块组成,其中有一个主模块,可以调用其他各6个模块,模块功能划分为:模块2实现小写字母向大写字母的转换,主要利用小写字母比大写字母大20H的关系;模块3实现大写字母向小写字母的转换,与2类似;模块4实现二进制数向十六进制数的转换,可以利用移位指令来实现;模块5实现十六进制数向二进制数的转换,也可采用移位指令实现;模块6实现十六进制数向十进制数的转换,首先将十六进制数转换成二进制,然后再实现二进制向十进制数的转换。第二章 软件设计2.1 程序设计流程图程序流程图如图2-1所示:NYB.十六进制转换十进制A.十六进制转换二进制开始选择转换方式1.大小写转换3.二进制转换2.十六进制转换123提示语句,选择转换方向选择跳至程序段HEHE1跳至程序段HEHE2调用程序段lop1调用程序段lop3结果结果结果结果执行返回程序段R 结束图2-12.2 各模块功能的实现2.2.1 转换方式的选择显示提示语句:“请你选择需要的方式:1.大小写转换2.十六进制转换3.二进制转换”该语句的实现通过比较指令CMP和条件转移指令JXX来实现,用在键盘上输入的字符所对应的ASCII码和1,2,3所对应的ASCII码依次比较再通过JXX来判断是否该跳转,从而实现选择,另也可以通过IFXX语句实现选择功能。转换方式选择程序的主要语句如下所示:MOV AH,01H INT 21H; DOS系统功能调用功能号01H为键入字符并回显 CMP AL,31H;1的ASCII码为31HJE LOP1CMP AL,32H ; 2的ASCII码为32H JE LOP2CMP AL,33H ;3的ASCII码为33HJE LOP3; 2.2.2 大小写转换通过查ASCII码我们可以知道大写字母和小写字母之间的ASCII码相差20H,因此我们可以通过向输入的字母转换成其对应的ASCII码,再通过加减20H实现大小写字母之间的相互转换。如果输入的为大写字母则在其ASCII码的基础上加上20H即可以实现转换成小写字母,其程序段的主要语句如下所示:MOV AH,01HINT 21HMOV BL,ALADD BL,20HMOV DL,BLMOV AH,02H;系统功能调用功能号02H为显示DL中ASCII码对应的字符INT 21H如果输入的是小写字母,则在原ASCII码的基础上减去20H即可转换出所对应的大写字母,主要程序段如下所示:MOV AH,01HINT 21HMOV BL,ALSUB BL,20HMOV DL,BLMOV AH,02H;系统功能调用功能号02H为显示DL中ASCII码对应的字符INT 21H2.2.3 十六进制的转换根据要求我们需要实现十六进制像二进制和十进制的转换,程序要有明确的提示是向二进制转换还是向十进制转换并进行相应的选择,所以必须有选择语句的出现,然后根据所选的内容实现相应功能的调用。选择语句和主模块中的语句一样通过比较指令CMP和条件转移指令JXX的搭配使用实现,此处用大写字母A和B做选择标题,选择A为十六进制转为二进制,选择B为十六进制转换为十进制,主要程序段HEHE1如下所示:HEHE1:QUIT1: CALL ASC2BIN ;调用CALLASC2BIN实现将AL中的ASCII码转换为对应的二进制数 MOV BL,AL MOV CL,04H SHL BL,CL;逻辑左移四位将BL的低四位移至高四位 MOV AH,01H INT 21H QUIT2: CALL ASC2BIN OR BL,AL ;将新输入转换出的二进制和上一步逻辑左移出的高四位组合形成八位的BX MOV CX,8 LOOPG: SHL BL,1;逻辑左移一位 JC LOOP1 ; 判断CF的值从而实现二进制的显示 MOV DL,0 JMP LOOP2 LOOP1: MOV DL,1LOOP2: MOV AH,02H INT 21H loop loopg MOV AH,4CH INT 21H十六进制向十进制的转换主要程序段如HEHE2所示: mov AX,BX mov cx,bx MOV DH,64H DIV DH mov bh,al; 我们知道FFH转换为十进制是255,是三位数的一个数,所以转换为十进制时得求出百位十位个位依次显示出来,用AX中的二进制除于64H将除得得商放于AL中,AL中的商就是十进制中百位数上的数 mov bl,64h mul bl sub cx,ax mov ax,cx MOV DH,0AH DIV DH MOV CH,AH MOV CL,AL;用AX中的数减去64H,理论上得到一个两位数,除于0AH则可以求出商存于AL中,余数存于AH中,AL中的商就是所求的三位数百位数上的数,AH中的余数则为个位上的数。2.2.4 二进制的转换首先设置实验操作提示语1:(你输入的二进制数是:)2(对应的十六进制数是:),根据要求设置最大受限长度。其次完成数据的输入和保存,其中数据以回车为结束标志。在二进制转化十六进制的过程中,我们采用倒序的方法,从后往前每四位完成一次转换,设置两个指针SI和DI,DI先指向数据的最后一位,SI指向数据的最高一位,把把DI指向的每一位上的二进制数和0比较,如果第一位是1则结果+1,第二位是1则+2,第三位是1则+4,第四位是一则+8,这样就完成了对应十六进制数的转化,然后入栈保存,直到DI指向SI,完成所有数据的转化与保存!最后出栈完成显示,根据题目的要求,我们要实现二进制向十六进制的转换,因为输入的是二进制,一般二进制是由几位0和1数字构成,所以输入的时候需要以字符串的形式输入,在汇编语言中提供了DOS系统功能调用中的功能号0AH的字符串输入功能,因此我们采用下面的语句进行二进制的输入:MOV AH,0AHINT 21H2.3 各模块的链接当每一个模块执行完成后为了和主模块再次连接起来,在执行完成模块显示结果后用一个条件转移指令实现程序返回主模块的选择语句部分等待键盘输入选择指令,该程序段主要部分如下所示:LEA DX,RMOV AH,09HINT 21H LEA DX,CR MOV AH,09H INT 21H MOV AH,08H INT 21h CMP AL,52H JE STARTMOV AH,4CHINT 21H第三章 结论与心得 第四章 参考文献1 余春暄,等.微机原理及接口技术. 北京:机械工业出版社,20082 杨素行,等.微型计算机系统原理及应用M. 北京:清华大学出版社,20033 喻宗泉.80x86微机原理与接口技术M.西安:西安电子科技大学出版社,2005第五章 思考题1.如果采用模块化编程的方式,在使用汇编器的时候与其他程序的汇编有什么不同?1一个复杂程序可以分成若干个模块,可由不同人员分头完成;2每个模块的任务明确,便于理解;3单个模块易于编写和调试;4便于程序的维护和修改;5可以直接利用已有的模块。2.改进程序,增加二、十进制之间的相互转换。答:为了增加二进制和十进制之间的互相转换的功能,首先得在主模块的选择部分加上一个选择项并编写一个新模块LOP3,通过增加一组比较指令CMP和条件转移指令JXX实现当按下“4”时跳转至LOP3,执行程序段并显示从而实现新转换功能的实现。 附录1 调试报告在调试过程中,当实行了大小写字母转换后要返回主模块时,从键盘输入R准备返回主模块时程序出错,不能返回主模块直接跳出程序。经过检查发现了问题,是在小写字母转换大写字母的时候因为需要输入小写字母,取消了大写锁定,而在最初的设计程序中R需要是大写输入,当要返回主模块时只要按下大写锁定再输入R就能实现程序的正常运行。十六进制转换为二进制和十进制的过程中,出现不能正确输出结果的问题,经过调试发现并解决了问题,问题是输入了三位十六进制,在最初的程序中设计的程序只支持两位十六进制的输入。2 测试结果程序能正常运行,有较好的界面,主模块中的选择也能很好的实现。如图6-1所示: 图6-1大小写的结果如图6-2所示: 图6-2注意输入字母时应该按照提示语句的要求输入大小写字母,否则结果将出现乱码。十六进制转换为二进制和十进制的程序如图6-3所示,在输入的过程中也得按提示语句的要求进行输入,否则将会出现中断程序等问题。图6-3二进制转换为十六进制的结果如图6-4所示:图6-43 关键代码DATAS SEGMENT XUANZE21 DB xuan ze SHI LIU JIN ZHI zhuan huan de fang xiang: A.ER JIN ZHI(16-2) B.SHI JIN ZHI(16-10)$ AA DB qing ni xuanze yao shuru de leixing:1.ZIMU 2.SHILIUJINZHI 3.ERJINZHI $ BB DB ni xuan zhe de shi ZIMU$ gdd DB ni xuan zhe de shi SHIJINZHI$ D DB ni xuan zhe de shi ERJINZHI$ ha16 DB shu ru liangwei shiliu jin zhi shu:$ JIEGUO10 DB SHIJINZHI JIEGUO WEI:$ JIEGUO DB de dao de SHI JIN ZHI jie guo shi :$ A DB 30 DUP(?) STR1 DB shuru ER JINZHI shu:$ STR2 DB zhuan huan de SHILIU JIN ZHI shi: $ COUNT DB 0 FLAG DB 0 CR DB 13,10,$ daxie DB shu ru DA XUE zimu:$ XIAOXIE DB shu ru XIAO XIE zimu:$ HEHE DB XIAO XIE zi mu shi:$ HEHE1 DB DA XIE zi mu shi:$ GAGA DB SHU RU liangwei LIU JIN ZHI SHU:$ HAHAHA DB zhuan huan cheng de ERJINZHI wei:$ R DB an R fan hui kai shi$ DATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AXLEA DX,AA MOV AH,09H INT 21H mov dx,offset CR mov ah,9 int 21h;换行 MOV AH,01H INT 21H;调用DOS系统功能号01H实现单字符的输入 CMP AL,31H JE LOP1;当al和31h相等时zf=1并实现跳转 CMP AL,32H JE LOP2 CMP AL,33H JE LOP3;通过CMP指令和JEXX实现主模块到各模块的跳转LOP1: LEA DX,BB MOV AH,09H INT 21H;调用系统功能号09H实现字符串的显示 MOV AX,DATAS MOV DS,AX MOV DX,OFFSET daxie mov AH,09H INT 21H MOV AH,08H INT 21H;调用系统功能号08H实现键盘输入不回显 MOV DL,AL MOV AH,02H INT 21H MOV BL,AL mov ah,2 mov dl,0DH int 21h mov dl,0AH INT 21H;换行ADD BL,20H MOV DX,OFFSET HEHE mov AH,09H INT 21H MOV DL,BL MOV AH,02H INT 21H;02H功能号可显示任意字符,将存放于DL中的字符显示出来 mov ah,02H mov dl,0DH int 21h mov dl,0AH INT 21H MOV DX,OFFSET XIAOXIE mov AH,09H INT 21H MOV AH,08H INT 21H MOV DL,AL MOV AH,02H INT 21H MOV BL,AL mov ah,2 mov dl,0DH int 21h mov dl,0AH INT 21H SUB BL,20H MOV DX,OFFSET HEHE1 mov AH,09H INT 21H MOV DL,BL MOV AH,02H int 21h LEA DX,R MOV AH,09H INT 21H LEA DX,CR MOV AH,09H INT 21H MOV AH,08H INT 21h CMP AL,52H JE START;返回主程序的开头从头开始执行程序 MOV AH,4CH INT 21HLOP2: MOV AX,DATAS MOV DS,AX LEA DX,XUANZE21 MOV AH,09H INT 21H MOV AH,01H INT 21H CMP AL,41H JE HEHE11 CMP AL,42H JE HEHE22 HEHE11: LEA DX,d MOV AH,09H INT 21H LEA DX,CR MOV AH,09H INT 21H LEA DX,CR MOV AH,09H INT 21H;换行 MOV AX,0 PUSH AX MOV AX,DATAs MOV DS,AX LEA DX,GAGA MOV AH,09H INT 21H MOV AH,01H INT 21H QUIT1: CALL ASC2BIN ;调用子程序ASC2BIN实现ASCII码 MOV BL,AL MOV CL,04H SHL BL,CL;逻辑左移四位将BL的低四位移动到高四位 MOV AH,01H INT 21H QUIT2: CALL ASC2BIN OR BL,AL LEA DX,CR MOV AH,09H INT 21H;换行 MOV CX,8 LOOPG: SHL BL,1 JC LOOP1 ; MOV DL,0 JMP LOOP2 LOOP1: MOV DL,1LOOP2: MOV AH,02H INT 21H loop loopg LEA DX,CR MOV AH,09HINT 21H LEA DX,R MOV AH,09H INT 21H LEA DX,CR MOV AH,09H INT 21H MOV AH,08H INT 21h CMP AL,52H JE START MOV AH,4CH INT 21HASC2BIN PROC NEAR SUB AL,30H CMP AL,9 JNA NEXT SUB AL,7 AND AL,0FH NEXT: RET MOV AH,4CH INT 21H;ASC2BIN ENDP MOV AH,4CH INT 21H HEHE22: lea dx,gdd mov ah,09h int 21h LEA DX,CR MOV AH,09H INT 21H ;换行 LEA DX,HA16 MOV AH,09H INT 21H MOV AH,01H INT 21H CALL ASC2BIN2 MOV BL,AL MOV CL,04H SHL BL,CL MOV AH,01H INT 21HCALL ASC2BIN2 OR BL,AL mov AX,BX mov cx,bx MOV DH,64H DIV DH mov bh,al mov bl,64h mul bl sub cx,ax mov ax,cx MOV DH,0AH DIV DH MOV CH,AH MOV CL,AL LEA DX,JIEGUO MOV AH,09H INT 21H add bh,30h mov dl,bh mov ah,02h int 21h add Cl,30h mov dl,Cl mov ah,02h int 21h ADD CH,30H MOV DL,CH MOV AH,02H int 21h LEA DX,CR MOV AH,09H INT 21H LEA DX,CR MOV AH,09H INT 21H LEA DX,R MOV AH,09H INT 21H LEA DX,CR MOV AH,09H INT 21H MOV AH,08H INT 21h CMP AL,52H JE START;通过CMP指令和JXX指令实现向主模块的跳转 MOV AH,4CH INT 21H MOV AH,4CH INT 21HASC2BIN2 PROC NEAR SUB AL,30H CMP AL,9 JNA NEXT SUB AL,7 AND AL,0FH NEXT: RET MOV AH,4CH INT 21HASC2BIN2 ENDP MOV AH,4CH INT 21HLOP3: LEA DX,CR MOV AH,09H INT 21H LEA DX,D MOV AH,09H INT 21H LEA DX,CR MOV AH,09H INT 21H LEA DX,CR MOV AH,09H INT 21H LEA SI, STR1 MOV DX,SI MOV AH, 9 INT 21H;设置输入二进制数的位数LEA DI,A;设置DI刚开始指向A的首地址 INPUT: INC COUNT CMP COUNT,1DH JZ END1 MOV AH,1 INT 21H CMP AL,13 JZ END1 STORE: MOV ADI,AL INC DI JMP INPUT END1: MOV ADI,24H MOV DL,0DH ;回车换行 MOV AH,2 INT 21H MOV DL,0AH MOV AH,2 INT 21H;输入结束 LEA SI,STR2 MOV DX,SI MOV AH,9;输出结果的提示语句 INT 21H MOV DL,0DH ;回车换行 MOV AH,2 INT 21H MOV DL,0AH MOV AH,2 INT 21H ;1号功能调用的时候,输入的单个字符指的是键盘上的一个键, ;同时这个字符的ASCII字符的形式存在内存中 ;将指针移到最后一个存有数据的字节 LEA SI,A MOV CX,0AGAIN: MOV DL,0;从最后一位开始,倒序四位2进制对应一位16进制 FIRST: DEC DI CMP SI,DI JNZ FLAGSF MOV FLAG,1 ;当DI和SI相等的时候,设置标志Flag等于1 FLAGSF: CMP ADI,30H JZ SKIP1 ADD DL,1 SKIP1: CMP FLAG,1 JZ INSTACK SECOND: DEC DI CMP SI,DI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司月度奖惩活动方案
- 公司消防比赛活动方案
- 公司盆栽种植活动方案
- 公司相亲对象活动方案
- 公司规模科普活动方案
- 公司现场招聘会策划方案
- 公司组织温泉玩活动方案
- 公司活动方案奖励方案
- 公司行政生日会策划方案
- 公司教育活动策划方案
- 2025年广东省广州市南沙区中考二模道德与法治试题
- 2025届重庆市普通高中学业水平选择性考试预测历史试题(含答案)
- 2025-2030中国眼底照相机行业市场发展趋势与前景展望战略研究报告
- 2024年深圳市大鹏新区区属公办中小学招聘教师真题
- 人教版小学语文四年级下册作文范文2
- 大学语文试题及答案琴
- 红十字会资产管理制度
- T/CSPSTC 112-2023氢气管道工程施工技术规范
- 2025届四川成都锦江区数学七下期末质量检测试题含解析
- 无人机飞行器结构与性能试题及答案
- 《蔚来汽车》课件
评论
0/150
提交评论