版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、学学 号:号: 课课 程程 设设 计计题题 目目代码转换程序设计代码转换程序设计学学 院院自动化学院自动化学院专专 业业电气工程及其自动化电气工程及其自动化班班 级级姓姓 名名指导教师指导教师年月日课程设计任务书课程设计任务书学生姓名:学生姓名: 专业班级:专业班级: 指导教师指导教师: 工作单位工作单位: 自动化学院自动化学院 题题 目目: : 代码转换程序设计代码转换程序设计 要求完成的主要任务要求完成的主要任务: : (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1用汇编语言编写一个字母和数制之间的转换程序,设计出友好的交互界面;2实现小写字母和大写字母之间的相互转换;实现
2、十进制数和二进制数以及十六进制数和二进制数之间相互转换;实现十进制数和八进制数以及二进制数和八进制数之间相互转换;实现十进制数和十六进制数以及八进制数和十六进制数之间相互转换; 3撰写课程设计说明书。内容包括:摘要、目录、正文、参考文献、附录(程序清单) 。正文部分包括:设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等) 、程序调试说明和结果分析、课程设计收获及心得体会。时间安排:时间安排: 12 月 28 日-12 月 28 日 查阅资料及方案设计12 月 29 日-1 月 2 日 编程1 月 3 日-1 月 7 日 调试程序1 月 8 日-1 月 9 日 撰
3、写课程设计报告指导教师签名:指导教师签名: 年年 月月 日日系主任(或责任教师)签名:系主任(或责任教师)签名: 年年 月月 日日武汉理工大学微机原理与接口技术课程设计目 录摘要.11 代码转换程序设计.21.1 系统总体分析.21.2 系统总体流程图及其说明.22 详细设置.42.1 主模块及子模块说明.42.2 各模块详细设计及流程图.52.2.1 主模块.52.2.2 十进制数转换为二进制数.62.2.3 二进制数转换为十进制数.82.2.4 二进制数转换为十六进制数.112.2.5 十六进制数转换为二进制数.143 程序调试.173.1 运行界面分析.173.2 算法的分析.193.3
4、 调试过程及分析.194 心得体会.20参考文献.21附录:源程序.22本科生课程设计成绩评定表武汉理工大学微机原理与接口技术课程设计0摘 要汇编语言(assemblylanguage)是面向机器的程序设计语言。在汇编语言中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编程序把汇编语言翻译成机器语言的过程称
5、为汇编。汇编语言对机器语言进行改进的第一步是用一些助记符号代替用 0 和 1 描述的某种机器的指令系统,如八进制数、十六进制数以及英语单词的缩写等,称为机器语言的助记符形式。汇编语言就是在此基础上完善起来的。它改善了机器语言的可读性、可记性,汇编语言指令与机器语言指令一一对应。汇编语言是能够利用计算机所有硬件特征且能直接用来控制硬件的一种程序设计语言,是计算机能够提供给用户的最快的且最有效的编程语言。它要求程序设计者必须掌握计算机的硬件知识,它对那些仅对问题感兴趣的用户无疑是一个极大的障碍。本次设计任务是实现十进制数和二进制数以及十六进制数和二进制数之间相互转换,本文通过开始的总体分析,确立了
6、设计程序的主要步骤,对进制转换的算法有了初步的认识,再绘制总流程框图和子模块流程框图,之后通过分析流程图确立具体算法,然后确定存储空间和工作单元,编写程序,最后介绍输出的界面,再回头分析。这样就较全面的解决了代码转换程序设计的分析。关键词关键词:汇编语言 汇编程序 汇编 流程框图武汉理工大学微机原理与接口技术课程设计11 代码转换程序设计1.1 系统总体分析汇编语言的程序设计的一般步骤为:(1)分析问题抽象出数学模型;(2)绘制流程图或写出程序步骤;(3)分配存储空间及工作单位根据流程图编写程序;(4)静态检查及上机调试;根据本次课程设计所给需求,进行分析,本程序主要完成的功能为实现十进制数和
7、二进制数以及十六进制数和二进制数之间相互转换。故由此分析,需要在主菜单中设计5 个选项,即为十进制(Decimal)转二进制(Binary)选项,二进制(Binary)转十进制(Decimal) 选项,十六进制(Hexadecimal)转二进制(Binary)选项,二进制(Binary)转十六进制(Hexadecimal)选项和退出选项。每当选择一个选项,即可通过调用子程序来实现,这个询问过程可以用分支结构来实现。每当一个子程序执行完毕,即要返回选项菜单供用户进一步选择。当用户选择,选项菜单中的退出选项时,要返回到版权界面询问是否退出。有上面分析可知,本程序主要应用了顺序结构、分支机构、循环结
8、构、子程序调用等汇编语言程序设计的基本结构。这样的设计方法,可以使代码简化,软件方便用户使用。同时通过软件测试,可以修正许多 BUG。1.2 系统总体流程图及其说明本程序主要应用了顺序结构、分析机构、循环结构、子程序调用等汇编语言程序设计的基本结构。首先会显示人机交互欢迎界面,然后应用分支结构进行选择,b 代表开始,q 代表退出,区分大小写,只有小写有效。当选择 b 时提示选项信息,当选择 q 时退出。进入选项信息后,有五个选项分别为 1、2、3、4、5。输入进行比较选择,并进行相应的执行,选项 1-4 执行好后循环到选项信息。选项 5(退出子程序)执行好后回到人机交互欢迎界面询问,由客户选择
9、是否退出。主模块的系统总体流程框图如图 1-1 所示。武汉理工大学微机原理与接口技术课程设计2NYYYYYNNNYNNY初始化版权界面B?选项界面1?执行过程 12?执行过程 23?执行过程 34?执行过程 45?错误Q?结束图 1-1 系统总体流程图武汉理工大学微机原理与接口技术课程设计32 详细设置2.1 主模块及子模块说明主模块:在屏幕上显示程序的主要功能并有用户选择,然后根据用户的选择调用相应的功能模块。功能模块主要功能介绍如下:Onechange 子程序功能为: 把十进制转化为二进制数。 Twochange 子程序功能为: 把二进制转化为十进制数。 Threechange 子程序功能
10、为:把二进制转化为十六进制。Fourchange 子程序功能为: 把十六进制转化为二进制。WRONG 子程序功能为: 输出错误提示信息,程序复位。本程序用的最多的就是 DOS 功能调用,DOS 功能调用的一般过程为:(1)如果需要,按要求给定输入参数(有的不需要输入参数) 。(2)DOS 功能调用号送 AH 寄存器。(3)写入中断指令”INT 21H”。常用的功能有:(1)键盘输入并显示(1 号功能调用)格式: mov ah, 01h int 21h 功能:按下任何键,将其对应字符的 ASCII 码送入 AL 中,并在屏幕上显示该字符。如果按下的是 CtrlBreak 组合键,则终止程序执行。
11、1 号功能调用无须入口参数,出口参数在 AL 中。(2)键盘输入但不显示输入字符(8 号功能调用)格式: mov ah, 08h int 21h功能:同 1 号功能调用,但字符不在屏幕上显示。(3)屏幕显示一个字符(2 号功能调用)格式: mov dl, 字符武汉理工大学微机原理与接口技术课程设计4 mov ah, 02h Int 21h功能:将置入 dl 寄存器中的字符在屏幕上显示输出。(4)打印输出(5 号功能调用)格式: mov dl, 字符 mov ah, 05h int 21h功能:将置入 dl 寄存器中的字符送打印机接口,打印输出。(5)屏幕显示字符串(9 号功能调用)格式: mo
12、v dx, 字符串的偏移地址 mov ah, 09h int 21h 功能:在屏幕上显示字符串。 在使用 9 号功能调用时,应当注意以下问题。 待显示的字符串必须先放在内存一数据区(ds 段)中,且以$符号作为结束标志。 应当将字符串首地址的段基址和偏移地址分别存入 DS 和 DX 寄存器中。2.2 各模块详细设计及流程图2.2.1 主模块由前面分析主模块流程图即可以理解为总体流程图,主模块主要用来做功能的选择,子函数的调用,还有控制退出等。主要的思路是利用分支结构和循环结构来进行,功能选择的询问,当用户选择某个功能时,即键入了相应的字符,计算机通过比较相应的字符,就可完成跳转等功能。在主程序
13、中,用寄存器 CS 存储代码,用寄存器 DS 存储数据。现对主模块部分程序进行分析,在主模块采用版权界面的时候用的是宏定义和宏调用。在汇编语言中,有的部分要多次使用,为了在源程序不重复书写这一部分,可以用武汉理工大学微机原理与接口技术课程设计5一条宏指令来代替。这样做的优点是执行时间短,速度快。宏定义的格式为。宏指令名 MACROendm程序中的宏定义如下。disp macro mlea dx,mmov ah,9int 21hendm2.2.2 十进制数转换为二进制数首先将子程序 Onechange 初始化,即输出输入十进制数字提示字符(Please input a decimal numbe
14、r) ,再将 BX 清零,SI 置为 16。程序如下。 mov dl,0ah mov ah,2 int 21h lea dx,shi;显示输入十进制数 mov ah,9 int 21h mov bx,0 mov si,16之后等待键入字符,每键入一个字符就要判断是不是在 0-9 之间。若不是,直接送去显示;若是,要经过存入 BX 后再进行操作显示。这一部分为读取操作部分,即将所输入的字符一个一个的读入 BX 中,并将字符进行相应的处理,直到输入字符无效为止。程序如下。武汉理工大学微机原理与接口技术课程设计6newchar7: mov ah,1 int 21h sub al,30h jl sho
15、w1 cmp al,9d jg show1 cbw xchg ax,bx mov cx ,10d mul cx xchg ax,bx add bx,ax jmp newchar7下面来介绍显示环节,这里的操作主要是通过 ROL 语句将 BX 高位移到低位,通过AND 语句,将此位筛选出来,送去显示,此功能共循环 SI 次。实际操作,先输出提示符,再输出转换后字符。程序如下。show1: mov dl,0ah mov ah,2 int 21h lea dx,res mov ah,9 int 21h show7: rol bx,1 mov al,bl and al,1h 武汉理工大学微机原理与接口
16、技术课程设计7 add al,30h mov dl,al mov ah,2 int 21h dec si jnz show7 绘制十进制转二进制流程框图如图 2-1 所示。YN初始化等待键入字符操作处理读取并存入到 BX显示结束0-9?图 2-1 十进制转二进制流程框图2.2.3 二进制数转换为十进制数首先将子程序 Twochange 初始化,即输出输入二进制数提示字符(Please input a Binary number) ,再将 BX 清零,SI 置为 16。程序如下。 mov dl,0ah武汉理工大学微机原理与接口技术课程设计8 mov ah,2 int 21h lea dx,er;
17、显示输入二进制数 mov ah,9 int 21h mov bx,0 mov si,16之后等待键入字符,每键入一个字符就要判断是不是在 0-1 之间。若不是,直接送去操作显示;若是,要经过存入 BX 后再进行操作显示。这一部分为读取部分,即将所输入的字符一个一个的读入 BX 中,直到输入字符无效为止。程序如下。newchar2: mov ah,1 int 21h sub al,30h jl show3 cmp al,2d jl add_to4 jmp show3 add_to4: mov cl,1 shl bx,cl mov ah,0 add bx,ax jmp newchar2 下面来介绍
18、显示环节,这里的操作主要是调用过程 dec_div4,将 BX 中的数字进行十进制分位,最终分 5 位显示,这就是将二进制数字转换为十进制数字的核心过程。以取高 5 位为例,CX 寄存器被赋值为 10000,将 BX 中的数据放到 AX 寄存器中,DX 清零,AX 中的数据除以 CX 中的数据,余数放到 BX 中,以便再次操作,商放到 DL 中,以便武汉理工大学微机原理与接口技术课程设计9显示。实际操作,先输出提示符,再输出转换后字符。程序如下。show3: mov dl,0ah mov ah,2 int 21h lea dx,res; 显示输出结果 mov ah,9 int 21h mov
19、cx,10000d call dec_div4 mov cx,1000 call dec_div4 mov cx,100 call dec_div4 mov cx,10 call dec_div4 mov cx,1 call dec_div4 ret dec_div4 proc near mov ax,bx mov dx,0 div cx mov bx,dx mov dl,al add dl,30h mov ah,2 int 21h 武汉理工大学微机原理与接口技术课程设计10 ret 绘制二进制转十进制流程框图如图 2-2 所示。YN初始化等待键入字符操作处理读取并存入到 BX显示结束0-1?
20、图 2-2 二进制转十进制流程框图2.2.4 二进制数转换为十六进制数首先将子程序 Threechange 初始化,即输出输入二进制数提示字符(Please input a Binary number) ,再将 AX,BX 清零,SI 置为 4。程序如下。 mov dl,0ah mov ah,2 int 21h lea dx,er;显示输入二进制数 mov ah,9 int 21h武汉理工大学微机原理与接口技术课程设计11 xor ax,ax mov bx,ax mov si,4之后等待键入字符,每键入一个字符就要判断是不是在 0-1 之间。若不是,直接送去操作显示;若是,要经过存入 BX 后
21、再进行操作显示。这一部分为读取部分,即将所输入的字符一个一个的读入 BX 中,直到输入字符无效为止。程序如下。 newchar1: mov ah,1 int 21h sub al,30h jl rotate1 cmp al,2d jl add_to1 jmp rotate1 add_to1: mov cl,1 shl bx,cl mov ah,0 add bx,ax jmp newchar1 下面来介绍显示环节,这里的操作主要是将 CL 赋值为 4,将 BX 的最高的四位移到最后,再赋值给 AL 通过 AND 语句进行过滤,加 30H,如果为 0-9 之间的数字,则直接显示,如果为 a-f 则
22、 ACS2 码值加 7h 显示。实际操作,先输出提示符,再输出转换后字符。程序如下。rotate1: mov dl,0ah mov ah,2武汉理工大学微机原理与接口技术课程设计12 int 21h lea dx,res; 显示输出结果 mov ah,9 int 21h rotate1_1: mov cl,4 rol bx,cl mov al,bl and al,0fh add al,30h cmp al,3ah jl print1 add al,7h print1: mov dl,al mov ah,2 int 21h dec si jnz rotate1_1 ret 绘制二进制转十六进制流
23、程框图如图 2-3 所示。2.2.5 十六进制数转换为二进制数首先将子程序 Fourchange 初始化,即输出输入十六进制数字提示字符(Please input a Hexadecimal number) ,再将 BX 清零,SI 置为 16。程序如下。 mov dl,0ah mov ah,2武汉理工大学微机原理与接口技术课程设计13 int 21h mov bx,0 lea dx,sliu mov ah,9 int 21h mov si,16 之后等待键入字符,每键入一个字符就要判断是不是在 0-f 之间。由于 ASC2 码值中,YN初始化等待键入字符操作处理读取并存入到 BX显示结束0-
24、1?图 2-3 二进制转十六进制流程框图0-f 并不是连续的,所以需要分开讨论。0-9 的 ASC2 码值为 30H 到 39H,a-f 的 ASC2 码值为 61H-66H,读入的 ASC2 码值减去 30H,判断是不是 0-10,再减去 27H,判断是不是 a-f。若均不在所判定区间内,直接送去显示;若是,要经过存入 BX 后再进行操作显示。这一部分为读取操作部分,即将所输入的字符一个一个的读入 BX 中,直到输入字符无效为止。程序如下。newchar8: 武汉理工大学微机原理与接口技术课程设计14 mov ah,1 int 21h sub al,30h jl print3 cmp al,
25、10d jl add_to2 sub al,27h cmp al,0ah jl print3 cmp al,10h jge print3 add_to2: mov cl,4 shl bx,cl mov ah,0 add bx,ax jmp newchar8下面来介绍显示环节,这里的操作主要是通过 ROL 语句将 BX 高位移到低位,通过AND 语句,将此位筛选出来,送去显示,此功能共循环 SI 次。实际操作,先输出提示符,再输出转换后字符。程序如下。print3: mov dl,0ah mov ah,2 int 21h lea dx,res mov ah,9 int 21h print2: 武
26、汉理工大学微机原理与接口技术课程设计15 rol bx,1 mov al,bl and al,1h add al,30h mov dl,al mov ah,2 int 21h dec si jnz print2 ret 绘制十进制转二进制流程框图如图 2-4 所示。YN初始化等待键入字符操作处理读取并存入到 BX显示结束0-9?图 2-4 十六进制转二进制流程框图武汉理工大学微机原理与接口技术课程设计163 程序调试3.1 运行界面分析运行程序得初始主界面如图 3-1 所示。 图 3-1 初始界面选择 b,进入选项界面如图 3-2 所示。图 3-2 选项界面输入错误,即不是 b 也不是 q,输
27、出错误信息如图 3-3 所示。图 3-3 输出错误信息若没有错误,在选项界面下输入 1,并键入十进制数执行,可得如图 3-4 所示。 图 3-4 十进制转二进制在选项界面下输入 2,并键入二进制数执行,可得如图 3-5 所示。武汉理工大学微机原理与接口技术课程设计17 图 3-5 二进制转十进制 在选项界面下输入 3,并键入二进制数执行,可得如图 3-6 所示。 图 3-6 二进制转十六进制在选项界面下输入 4,并键入十六进制数执行,可得如图 3-7 所示。 图 3-7 十六进制转二进制在选项界面下输入 5,回到版权界面图 3-1 所示。不是 1 至 5,错误信息如图 3-8 所示。 图 3-
28、8 选项输入错误界面 3.2 算法的分析武汉理工大学微机原理与接口技术课程设计18数值转换是二进制、十进制、十六进制之间的转换。通过调用不同的函数避免了数值之间的转换。这里我们来从输入输出的角度来分析。首先是三个输入模块,分别为二进制数、十进制数、十六进制数。对于输入的字符如果是 0-10 之间的就减去 30H,得到其代表的数的含义,a-f 之间的就减去 57H,得到其代表的数的含义。然后是三个输出模块,同样为二进制数、十进制数、十六进制数。因为 BX 中存的本就是二进制数,所以直接移位输出就可得到二进制数。十六进制数是每四位二进制数转换成一位十六进制数即可。十进制数相对复杂,将 BX 中的数
29、转换成十进制数输出,就是将 BX 中的数每次分别处以 10000,1000,100,10,1 将其所得到的商输出,而其余数存入 BX 中进入下一轮循环。这样输出就是要得到的十进制数。3.3 调试过程及分析调试过程和编译过程主要是来检查两类错误,即语法错误和逻辑错误。对于语法错误,汇编软件会在汇编的时候进行检查,若出错则不会生成可执行文件。在这次课程设计中我就遇到了很多这样的问题,现总结如下如:Symbol already defined elsewhere 意思为符号已经定义过了,当用伪指令将同一个符号连续定义了两次,就会报错。解决办法,双击错误信息,仔细检查程序,将符号改正或删除。Undef
30、ined Symbol 意思为符号没有定义过。解决办法,双击错误信息,仔细检查程序,在程序头或正确位置进行校正。在完成编译连接后,运行之后同样会出现很多问题,这次遇到的主要问题是前面编译没有被计算机查到的问题,大多是自己粗心造成的,比如说二进制输入时,设置范围2-9 同样为有效数字,这显然是一个错误。但是这种逻辑错误只能通过运行才能检查出来。武汉理工大学微机原理与接口技术课程设计194 心得体会通过这次课程设计,我对自己所学的微机原理与接口技术有了更为深刻的认识,主要有如下:(1)在本次课程设计中,从给定的要求,抽象出数学模型,确定解决问题的合理算法,即相应的输入、输出方法。再绘制总流程图,和
31、子程序流程图,写出程序步骤,从粗到细的将算法逐步具体化,将需要运算的数据给 AX 寄存器,需要存储的给 BX 寄存器,需要控制循环的给 CX 寄存器或者 SI 寄存器,调用 DOS 的时候,要赋值 AH,乘除法的时候,要注意 DX。根据流程图编写程序。最后,编译连接检查。将系统的 Error 和Warning 一一改正。同时要注意到系统只能检查语法错误,逻辑错误要运行后检查。通过这一系列的分析,让我对微机原理与接口技术课上学的知识有了更深入的了解,对今后处理实际问题打下了良好的基础。(2)通过本次课设,让我对 MF 的使用有了更深的了解。让我认识到了,汇编语言虽然繁琐,但是由于汇编语言与机器语
32、指令一一对应,对了解 8086CPU 及其他微处理器的结构有很大的帮助。本次实验是一个进制转换的问题,这更适合用汇编语言来编写,因为这样可以让我们更好的理解进制转换的具体思路步骤,和计算机的运行过程。(3)通过此次课设,我的动手能力和查阅资料、信息检索的能力有了更好的加强。(4)通过此次课设,我的论文撰写的能力又有了加强。对 Microsoft Word 有了更深的了解,绘图排版更熟练了。(5)当然本次课设还有些不足,比如只考虑了小写字母的识别,没有考虑到大写字母的识别,我在课设之后的时间里,想办法将这些问题修正。武汉理工大学微机原理与接口技术课程设计20参考文献1彭虎, 周佩玲, 傅忠谦.
33、微机原理与接口技术(第 2 版). 北京:电子工业出版社, 20102李敬兆. 8086/8088 和 arm 核汇编语言程序设计. 合肥:中国科技大学出版社 3沈美明, 温冬婵. IBMPC 汇编语言程序设计(第 2 版). 北京:清华大学出版社出版4沈美明, 温冬婵, 张赤红. IBMPC 汇编语言程序设计实验教程. 北京:清华大学出版社出版5杨立. 微机原理与接口技术. 天津:天津大学出版社, 2010武汉理工大学微机原理与接口技术课程设计21附录附录 源程序源程序data segment;*主程序中的提示信息*str1 db 0ah,0dh, welcome to use the co
34、de conversion program $str2 db 0ah,0dh, now,please press b to begin exchange $str3 db 0ah,0dh, or press q to exit $str4 db 0ah,0dh,input error,please repess!$alter db 0ah,0dh db 0ah,0dh db please alter your option,0ah,0dh db 1:decimal number change into binary number,0ah,0dh;十进制转化为二进制 db 2:binary nu
35、mber change into decimal number,0ah,0dh;二进制转化为十进制 db 3:binary number change into hexadecimal number,0ah,0dh;二进制转化为十六进制 db 4:hexadecimal number change into binary number,0ah,0dh;十六进制转化为二进制 db 5:exit,0ah,0dh,$ shi db please input a decimal number,0ah,0dh,$;输入十进制数 er db please input a binary number,0ah
36、,0dh,$;输入二进制数 sliu db please input a hexadecimal number,0ah,0dh,$;输入十六进制数 wro db you have input a wrong number,please input again!,0ah,0dh,$武汉理工大学微机原理与接口技术课程设计22 res db the result is:,0ah,0dh,$data endsstack segment db 2000 dup(0) stack ends code segment assume cs:code,ds:data,ss:stackstart: mov ax,
37、data mov ds,ax mov dl,0ah mov ah,2 int 21hdisp macro m lea dx,m mov ah,9 int 21h endm disp str1 disp str2 disp str3lop: mov ah,8;键盘输入但不显示输入字符(8号功能调用) int 21h cmp al,b jz ltol cmp al,q jz exit disp str4 jmp lop武汉理工大学微机原理与接口技术课程设计23ltol: lea dx,alter;显示输入选择 mov ah,9 int 21h mov ah,1;输入选择 int 21h cmp a
38、l,1;如果是第一项跳转到子程序onechange je lab1 cmp al,2;如果是第二项跳转到子程序twochange jz lab2 cmp al,3 jz lab3;如果是第三项跳转到子程序threechange cmp al,4 jz lab4;如果是第四项跳转到子程序fourchange cmp al,5;如果是第五项跳转到子程序exit jz exit lab1 : call onechange;跳转到子程序onechange jmp ltollab2:call twochange;跳转到子程序twochange jmp ltollab3:call threechange;
39、跳转到子程序threechange jmp ltollab4:call fourchange;跳转到子程序fourchange jmp ltolexit:mov ah,4ch;退出dos界面 int 21h; 子程序 onechange;功能:把十进制转化为二进制数 武汉理工大学微机原理与接口技术课程设计24onechange proc near mov dl,0ah mov ah,2 int 21h lea dx,shi;显示输入十进制数 mov ah,9 int 21h mov bx,0 mov si,16 newchar7: mov ah,1 int 21h sub al,30h jl
40、show1 cmp al,9d jg show1 cbw xchg ax,bx mov cx ,10d mul cx xchg ax,bx add bx,ax jmp newchar7 show1: mov dl,0ah mov ah,2 int 21h lea dx,res mov ah,9 武汉理工大学微机原理与接口技术课程设计25 int 21h show7: rol bx,1 mov al,bl and al,1h add al,30h mov dl,al mov ah,2 int 21h dec si jnz show7 ret onechange endp ; 子程序 twocha
41、nge;功能:把二进制转化为十进制数 twochange proc near mov dl,0ah mov ah,2 int 21h lea dx,er;显示输入二进制数 mov ah,9 int 21h mov bx,0 mov si,16 newchar2: mov ah,1 int 21h sub al,30h jl show3 武汉理工大学微机原理与接口技术课程设计26 cmp al,2d jl add_to4 jmp show3 add_to4: mov cl,1 shl bx,cl mov ah,0 add bx,ax jmp newchar2 show3: mov dl,0ah
42、mov ah,2 int 21h lea dx,res; 显示输出结果 mov ah,9 int 21h mov cx,10000d call dec_div4 mov cx,1000 call dec_div4 mov cx,100 call dec_div4 mov cx,10 call dec_div4 mov cx,1 call dec_div4 rettwochange endp dec_div4 proc near 武汉理工大学微机原理与接口技术课程设计27 mov ax,bx mov dx,0 div cx mov bx,dx mov dl,al add dl,30h mov ah,2 int 21h ret dec_div4 endp 子程序名: threechange ;子程序功能:二进制转化为十六进制threechange proc near mov dl,0ah mov ah,2 int 21h lea dx,er;显示输入二进制数 mov ah,9 int 21h xor ax,ax mo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 气动蒸气阀行业深度研究报告
- 2025年全国行政执法试题库含参考答案
- 中国门禁设备项目投资可行性研究报告
- 中国营养荞麦面项目投资可行性研究报告
- 中国摆杆车配件项目投资可行性研究报告
- 不反光玻璃行业深度研究报告
- 铝浮顶行业深度研究报告
- 特级浮水石行业深度研究报告
- 中国餐饮消费管理系统项目投资可行性研究报告
- 钛能粉行业深度研究报告
- 2025至2030机场看台行业发展趋势分析与未来投资战略咨询研究报告
- 2025年电子商务师职业资格考试《电商运营与管理》备考题库及答案解析
- 2025版溃疡病常见症状及护理方法
- GB/T 46210-2025项目成本管理指南
- 预防水痘知识培训课件
- 软件工程职业规划大赛
- 建设项目施工风险防范方案
- 2024人教版七年级全一册体育与健康全册教案
- 《南京大屠杀》课件
- (高清版)T∕CES 243-2023 《构网型储能系统并网技术规范》
- 西安培华学院辅导员考试题库
评论
0/150
提交评论