首页 课程设计报告--汇编程序设计(进制转换)

课程设计报告--汇编程序设计(进制转换)

举报
开通vip

课程设计报告--汇编程序设计(进制转换)课程设计报告--汇编程序设计(进制转换) 汇编语言课程设计报告:代码与数制之间的转换 内容提要: 本课程设计的主要内容是代码与数制之间的转换~程序的主要功能如下: 1. 将十六进制数转换成其对应的ASCII码 2. 将ASCII码转换成其对应的十六进制数 3. 实现二进制数与十六进制数之间相互转换 4. 实现十进制数与二进制数之间相互转换 5. 实现十六进制数与十进制数之间相互转换 数制转换是计算机科学技术中最为基础的运算~在日常生活中~人们习惯性地使用十进制数进行计算。而在计算机内部~所有的信息,...

课程设计报告--汇编程序设计(进制转换)
课程设计 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 --汇编程序设计(进制转换) 汇编语言课程设计报告:代码与数制之间的转换 内容提要: 本课程设计的主要内容是代码与数制之间的转换~程序的主要功能如下: 1. 将十六进制数转换成其对应的ASCII码 2. 将ASCII码转换成其对应的十六进制数 3. 实现二进制数与十六进制数之间相互转换 4. 实现十进制数与二进制数之间相互转换 5. 实现十六进制数与十进制数之间相互转换 数制转换是计算机科学技术中最为基础的运算~在日常生活中~人们习惯性地使用十进制数进行计算。而在计算机内部~所有的信息,数、字符、汉字、计算机的指令、状态,都是用二进制数来表示的。在计算机中~二进制数的运算、处理比十进制数的更容易实现。有时为了缩短书写~在计算机中还采用十六进制数。所以~我们需要把数从二进制数形式转换成其他进制的形式~甚至在不同的进位制之间进行转换。 - 1 - 汇编语言课程设计报告:代码与数制之间的转换 目录 一、 前言〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃3 1.1 程设计的目的〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃3 1.2 代码与数制之间的转换程序的意义〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃3 1.3 数制之间的转换程序的主要功能〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃3 正文〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃3 二、 2.1 代码与数制之间相互转换程序的设计大纲〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃3 2.2 代码与数制之间相互转换程序的结构图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃4 2.3 友好交互界面结构图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃5 2.4 程序 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃6 2.4.1 主程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃6 2.4.2 键盘输入子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃6 2.4.3 ASC码转16进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃7 2.4.4 16进制转ASC进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃8 2.4.5 2,16进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃8 2.4.6 2?16进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃9 2.4.7 16?2进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃9 2.4.8 2~10进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃10 2.4.9 2?10进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃10 2.4.10 10?2进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃11 2.4.11 10~16进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃11 2.4.12 10?16进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃12 2.4.13 16?10进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃12 三、 源程序及其注释〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃13 四、 课程设计体会〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃29 五、 参考文献〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃29 - 2 - 汇编语言课程设计报告:代码与数制之间的转换 课程设计题目:代码与数制之间的转换 一、前言 1.1 课程设计的目的 , 加深对汇编语言课程理论方面的理解 , 通过编写一定规模和难度的程序,进行一次较全面的汇编编程训练,提高分 析问题和解决问题的能力 , 提高调试程序的能力 1.2 代码与数制之间的转换程序的意义 数制转换是计算机科学技术中最为基础的运算,在日常生活中,人们习惯性地使用十进制数进行计算。而在计算机内部,所有的信息,数、字符、汉字、计算机的指令、状态,都是用二进制数来表示的。在计算机中,二进制数的运算、处理比十进制数的更容易实现。有时为了缩短书写,在计算机中还采用十六进制数。所以,我们需要把数从二进制数形式转换成其他进制的形式,甚至在不同的进位制之间进行转换。 1.3 代码与数制之间的转换程序的主要功能 , 将十六进制数转换成其对应的ASCII码 , 将ASCII码转换成其对应的十六进制数 , 实现二进制数与十六进制数之间相互转换 , 实现十进制数与二进制数之间相互转换 , 实现十六进制数与十进制数之间相互转换 二、正文 2.1 代码与数制之间相互转换程序的设计大纲 本程序主要要完成5大功能: , ASCII码与十六进制数之间的转换 , 二进制数与十六进制数之间的转换 , 十进制数与二进制数之间的转换 , 十进制数与十六进制数之间的转换 , 友好的交互界面 因此,本程序共需设计一个主程序以及若干个子程序 1.主程序:主要实现友好的交互界面的设计,以及代码与数制之间相互转换的子程序 调用。 2.子程序:完成各数制之间转换的具体功能实现 , 键盘输入子程序:捕捉键盘输入并在屏幕上显示。 - 3 - 汇编语言课程设计报告:代码与数制之间的转换 , 换行子程序:控制输出时光标的位置,换行输出。 , ASCII码转成十六进制数子程序:实现ASCII码转成十六进制数。 , 十六进制数转成ASCII码子程序:实现十六进制数转成ASCII码 , 二进制数与十六进制数相互转换子程序:实现对二进制数转成十六进制数子程序和十六进制数转成二进制数子程序的调用。 , 二进制数转成十六进制数子程序:实现二进制数转成十六进制数 , 十六进制数转成二进制数子程序:实现十六进制数转成二进制数 , 二进制数与十进制数相互转换子程序:实现对二进制数转成十进制数子程序和十进制数转成二进制数子程序的调用。 , 二进制数转成十进制数子程序:实现二进制数转成十进制数 , 十进制数转成二进制数子程序:实现十进制数转成二进制数 , 十进制数与十六进制数相互转换子程序:实现对十进制数转成十六进制数子程序和十六进制数转成十进制数子程序的调用。 , 十进制数转成十六进制数子程序:实现十进制数转成十六进制数 , 十六进制数转成十进制数子程序:实现十六进制数转成十进制数 2.2 代码与数制之间相互转换程序的结构图 - 4 - 汇编语言课程设计报告:代码与数制之间的转换 2.3 友好交互界面结构图 界面设计用到的是BIOS功能的调用。其中本程序所使用的功能调用如下: AH=0:设置显示模式。 输入参数:AL=显示模式号,见表如下, 返回结果:无返回参数,只是屏幕设置为指定的模式。 模式号 分辨率 颜色 显示方式 0 40列*25行,下略, 16级灰色 黑白文本 1 40*25 16色 彩色文本 2 80*25 16级灰色 黑白文本 3 80*25 16色 彩色文本 7 80*25 单色 黑白文本 AH=6:屏幕初始化或向上滚动。 输入参数:AL=要滚动的行数,AL=0,全屏滚动,清屏,。 CH=滚动窗口左上角行号,CL,滚动窗口左上角列号 DH=滚动窗口右下角行号,DL,滚动窗口右下角列号 BH=滚入行属性。 返回结果:无。 AH=13H:显示字符串。 输入参数:ES:BP=字符串首地址。 CX=串长度。 DH,DL=起始行列号。 BH=显示页号。 AL=0,BL=属性,光标保持在原处,串由字符组成,仅显示字符。 AL=1,BL=属性,光标到串尾,串由字符组成,仅显示字符。 AL=2,光标保持在原处,串由字符及属性组成。 AL=3, 光标到串尾,串由字符及属性组成。 返回结果:无。 界面如下: - 5 - 汇编语言课程设计报告:代码与数制之间的转换 2.4 程序流程图 2.4.1 主程序流程图 2.4.2 键盘输入子程序流程图 - 6 - 汇编语言课程设计报告:代码与数制之间的转换 2.4.3 ASC码转16进制子程序流程图 - 7 - 汇编语言课程设计报告:代码与数制之间的转换 2.4.4 16进制转ASC进制子程序流程图 2.4.5 2,16进制子程序流程图 - 8 - 汇编语言课程设计报告:代码与数制之间的转换 2.4.6 2?16进制子程序流程图 2.4.7 16?2进制子程序流程图 - 9 - 汇编语言课程设计报告:代码与数制之间的转换 2.4.8 2,10进制子程序流程图 2.4.9 10?2进制子程序流程图 - 10 - 汇编语言课程设计报告:代码与数制之间的转换 2.4.10 2?10进制子程序流程图 2.4.11 10,16进制子程序流程图 - 11 - 汇编语言课程设计报告:代码与数制之间的转换 2.4.12 10?16进制子程序流程图 2.4.13 16?10进制子程序流程图 - 12 - 汇编语言课程设计报告:代码与数制之间的转换 三、源代码及其注释 stack segment stack'stack' stack ends ;*****************************数据段定义******************************** data segment string1 db'$------------ 计算机0502 20 36 -------$' ;窗口中的提示语 st1_len equ $-string1 ; 显示串的长度 st2 db'|--1.将十六进制数转换成对应的ASC?码-----|' ;窗口中的提示语 st2_len equ $-st2 ; 显示串的长度 st3 db'|--2.将ASC?码转换成对应的十六进制数-----|' ;窗口中的提示语 st3_len equ $-st3 ; 显示串的长度 st4 db'|--3.实现二进制数与十六进制数之间的转换--|' ;窗口中的提示语 st4_len equ $-st4 ; 显示串的长度 st5 db'|--4.实现二进制数与十进制数之间的转换----|' ;窗口中的提示语 st5_len equ $-st5 ; 显示串的长度 st6 db'|--5.实现十进制数与十六进制数之间的转换--|' ;窗口中的提示语 st6_len equ $-st6 ; 显示串的长度 ST61 DB'请选择你所要进行的操作(输入0-5):' ; ST61_LEN EQU $-ST61 ST7 DB 20 DUP(?) st0 db'|--0.退出本系统--------------------------|' ST0_LEN EQU $-ST0 ST8 DB'输入错误请重新输入:',13,10,'$' buffer db 80 dup(?) leap db 0ah,0dh,'$' mesg1 db '1.实现2进制转成16进制',13,10 db '2.实现16进制转成2进制',13,10,'$' mesg3 db '1.实现2进制转成10进制',13,10 db '2.实现10进制转成2进制',13,10,'$' mesg5 db '1.实现10进制转成16进制',13,10 db '2.实现16进制转成10进制',13,10,'$' mesg6 db '请输入ASC?码:',13,10,'$' mesg7 db '请输入二进制数:',13,10,'$' mesg8 db '请输入十进制数:',13,10,'$' mesg9 db '请输入十六进制数:',13,10,'$' mesg10 db '它的二进制数是:',13,10,'$' mesg11 db '它的十进制数是:',13,10,'$' mesg12 db '它的十六进制数是:',13,10,'$' mesg13 db '它的ASC?码是:',13,10,'$' data ends code segment - 13 - 汇编语言课程设计报告:代码与数制之间的转换 assume cs:code,ds:data,ss:stack ;******************主程序********************************* begin proc far mov ax,data ; 设置DS=ES mov ds,ax mov es,ax PRINT: mov ah,0 ;设置显示模式3(彩色文本16色) mov al,3 int 10h mov ah,6 ;清屏 mov al,0 mov ch,0 ;屏幕左上角坐标 mov cl,0 mov dh,24 ;屏幕右下角坐标 mov dl,79 mov bh,07 ;属性 int 10h ;建立小窗口 mov ah,6 mov al,0 mov ch,0 ;左上角坐标 mov cl,0 mov dh,100 ;右下角坐标 mov dl,100 mov bh,20h ;绿底黑字,反向显示 int 10h ;在窗口第一行显示欢迎信息 mov ah,13h ;显示字符串 lea bp,string1 ;ES:BP=字符串首地址 mov cx,st1_len ;CX=串长度 mov dh,1 ;显示信息的起始行位置 mov dl,20 ;显示信息的起始列位置 mov bh,0 mov al,1 mov bl,64h ;显示的属性为棕底红字 int 10h ;显示提示信息0 ;注释同显示第一行信息 mov ah,13h lea bp,st0 mov cx,st0_len mov dh,2 mov dl,20 - 14 - 汇编语言课程设计报告:代码与数制之间的转换 mov bh,0 mov al,1 mov bl,12h ;显示的属性为蓝底绿字 int 10h ;显示提示信息1 ;注释同显示第一行信息 mov ah,13h lea bp,st2 mov cx,st2_len mov dh,3 mov dl,20 mov bh,0 mov al,1 mov bl,12h ;显示的属性为蓝底绿字 int 10h ;显示提示信息2 ;注释同显示第一行信息 mov ah,13h lea bp,st3 mov cx,st3_len mov dh,4 mov dl,20 mov bh,0 mov al,1 mov bl,12h ;显示的属性为蓝底绿字 int 10h ;显示提示信息3 ;注释同显示第一行信息 mov ah,13h lea bp,st4 mov cx,st4_len mov dh,5 mov dl,20 mov bh,0 mov al,1 mov bl,12h ;显示的属性为蓝底绿字 int 10h ;显示提示信息4 ;注释同显示第一行信息 mov ah,13h lea bp,st5 mov cx,st5_len mov dh,6 mov dl,20 - 15 - 汇编语言课程设计报告:代码与数制之间的转换 mov bh,0 mov al,1 mov bl,12h ;显示的属性为蓝底绿字 int 10h ;显示提示信息5 ;注释同显示第一行信息 mov ah,13h lea bp,st6 mov cx,st6_len mov dh,7 mov dl,20 mov bh,0 mov al,1 mov bl,12h ;显示的属性为蓝底绿字 int 10h ;显示所选操作提示信息 ;注释同显示第一行信息 mov ah,13h lea bp,st61 mov cx,st61_len mov dh,8 mov dl,1 mov bh,0 mov al,1 mov bl,24h ;显示的属性为绿底红字 int 10h CALL CRLF ;调用换行子程序,控制输出光标下移一行 CALL INPUT ;调用键盘输入子程序 ;判断键盘输入 repeat:mov dx,0 mov ah,1 int 21h cmp al,30h ;为0跳至a0 JE a0 cmp al,31h ;为1跳至a1 JE a1 cmp al,32h ;为2跳至a2 JE a2 cmp al,33h ;为3跳至a3 JE a3 cmp al,34h ;为4跳至a4 JE a4 cmp al,35h ;为5跳至a5 - 16 - 汇编语言课程设计报告:代码与数制之间的转换 JE a5 lea dx,ST8 ;非0,1,2,3,4,5输出提示信息 mov ah,9 ;重新输入 int 21h jmp repeat ;返回判断键盘输入 A0: JMP EXIT ;跳至exit A1: CALL SIXASC ;调用SIXASC子程序,即十六进制转ASC码 CALL CRLF ;调用换行子程序,控制输出光标下移一行 JMP PRINT ;跳回清屏,显示小窗口 A2: CALL ASCIITO16;调用ASCIITO16子程序,即ASC码转十六进制 CALL CRLF ;调用换行子程序,控制输出光标下移一行 JMP PRINT ;跳回清屏,显示小窗口 A3: CALL TWOAND16; 调用TWOAND16子程序,即十六进制与二进制互转 CALL CRLF ;调用换行子程序,控制输出光标下移一行 JMP PRINT ;跳回清屏,显示小窗口 A4: CALL TWOAND10;调用TWOAND10子程序,即十进制与二进制互转 CALL CRLF ;调用换行子程序,控制输出光标下移一行 JMP PRINT ;跳回清屏,显示小窗口 A5: CALL TENAND16;调用TENAND16子程序,即十六进制与十进制互转 CALL CRLF ;调用换行子程序,控制输出光标下移一行 JMP PRINT ;跳回清屏,显示小窗口 ;返回DOS EXIT: mov ah,4ch int 21h RET BEGIN ENDP ;********************键盘调用子程序*********************** INPUT PROC NEAR L1: MOV AH,1 ;利用INT 16H的功能1探测读键盘 INT 16H JZ L1 ;无键按下则循环 LEA SI,ST7 MOV CX,1 L2: MOV AH,0 ;利用INT 16H的功能0读键盘 INT 16H ;显示所输入的信息 - 17 - 汇编语言课程设计报告:代码与数制之间的转换 OUTPUT: mov ah,1 int 21h RET INPUT ENDP ;*******************ASC转16进制子程序****************************** ASCIITO16 PROC NEAR xor ax,ax mov bx,ax lea dx,mesg6 mov ah,9 int 21h ascii0: lea si,buffer mov cx,2 ascii20: mov ah,01h int 21h cmp al,'p' ; 输入‘p’则返回主菜单 je quit0 cmp al,30h jb error0 ; <0跳回重新输入 cmp al,39h ja error0 ; >9跳回重新输入 and al,0fh mov [si],al ; 取高位 inc si ; 取低位 loop ascii20 lea dx,leap ; 显示回车空行 mov ah,09h int 21h lea si,buffer mov al,[si] ; 将高位的数存到al中 mov cl,4 shl al,cl ; 将高位的数移到高四位 inc si add al,[si] ; 将高四位的数加低位 cmp al,30h jb error0 ; <0跳回重新输入 cmp al,40h jb logo ; <0跳回重新输入 cmp al,61h jb error0 cmp al,66h ja error0 logo: mov dl,al mov ah,02h - 18 - 汇编语言课程设计报告:代码与数制之间的转换 int 21h lea dx, leap mov ah,09h int 21h lea dx,mesg12 mov ah,9 int 21h jmp ascii0 error0: lea dx,mesg6 mov ah,9 int 21h jmp ascii0 quit0: ret ASCIITO16 ENDP ;******************16进制转ASC子程序******************************* SIXASC PROC NEAR xor ax,ax lea dx,mesg9 mov ah,09h int 21h lea si,leap ascii: mov ah,1 int 21h cmp al,'p' ;输入 je quit cmp al,30h ; <0跳回重新输入 jb error cmp al,66h ja error ; >f的跳回重新输入 cmp al,60h ja print0 ; >a显示 cmp al,39h ja error ; >9跳回重新输入 print0: push dx push ax mov buffer,al mov dl,buffer mov cl ,4 shr dl,cl add dl,30h mov ah,02h - 19 - 汇编语言课程设计报告:代码与数制之间的转换 int 21h ;显示高位 mov dl,buffer and dl,0fh add dl,30h mov ah,02h int 21h pop ax pop dx ;显示低位 lea dx,leap mov ah,09h int 21h jmp ascii error: lea dx,st8 mov ah,09h int 21h jmp ascii ;跳回重新输入 quit: ret SIXASC ENDP ;******************2,16进制子程序******************************* TWOAND16 PROC NEAR call crlf ;显示提示信息 lea dx,mesg1 mov ah,09h int 21h CALL INPUT ;调用键盘输入 repeat1: mov ah,1 int 21h cmp al,31h ;比较输入,为1跳至B1 JE B1 cmp al,32h ;比较输入,为2跳至B2 JE B2 lea dx,ST8 mov ah,0 int 16h jmp repeat1 ;调用2转16 B1: CALL CHANGE2TO16 RET ;调用16转2 B2: CALL CHANGE16TO2 RET TWOAND16 ENDP ;******************2进制转16进制子程序******************************* CHANGE2TO16 PROC NEAR - 20 - 汇编语言课程设计报告:代码与数制之间的转换 xor ax,ax mov bx,ax lea dx,mesg7 ;显示提示信息 mov ah,9 int 21h mov si,4 newchar1: ;输入二进制数 mov ah,1 int 21h sub al,30h ;将ACII变成十进制数值 jl rotate1 cmp al,10d ;和10进行比较 jl add_to1 jmp rotate1 add_to1: ;将二进制数存入bx中 mov cl,1 shl bx,cl mov ah,0 add bx,ax jmp newchar1 rotate1: ;控制光标并显示提示信息 CALL CRLF lea dx,mesg12 mov ah,9 int 21h rotate1_1: mov cl,4 rol bx,cl ;高位和低位对换 mov al,bl and al,0fh ;转换成ASCII 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 mov ah,1 ;中断 int 21h ret - 21 - 汇编语言课程设计报告:代码与数制之间的转换 CHANGE2TO16 ENDP ;******************16进制转2进制子程序******************************* CHANGE16TO2 PROC NEAR mov bx,0 lea dx,mesg9 ;显示提示信息 mov ah,9 int 21h mov si,16 newchar2: ;输入十六进制数 mov ah,1 int 21h sub al,30h jl rotate2 cmp al,10d jl add_to2 sub al,27h cmp al,0ah jl rotate2 cmp al,10h jge rotate2 add_to2: ; 将十六进制数存入bx中 mov cl,4 shl bx,cl mov ah,0 add bx,ax jmp newchar2 rotate2: call crlf ;控制光标,并显示提示信息 lea dx,mesg10 mov ah,9 int 21h print2: ;输出二进制数 rol bx,1 mov al,bl and al,1h add al,30h mov dl,al mov ah,2 int 21h dec si jnz print2 mov ah,1 ;中断 int 21h - 22 - 汇编语言课程设计报告:代码与数制之间的转换 ret CHANGE16TO2 ENDP ;******************2,10进制子程序******************************* ;本部分说明类似2,16进制子程序,不重复说明 TWOAND10 PROC NEAR call crlf lea dx,mesg3 mov ah,09h int 21h CALL INPUT repeat2: mov ah,1 int 21h cmp al,31h JE c1 cmp al,32h JE c2 lea dx,ST8 mov ah,0 int 16h jmp repeat2 ;2转10 C1: CALL CHANGE2TO10 RET ;10转2 C2: CALL CHANGE10TO2 RET TWOAND10 ENDP ;******************2进制转10进制子程序******************************* CHANGE2TO10 PROC NEAR lea dx,mesg7 ;显示提示信息 mov ah,9 int 21h mov bx,0 newchar4: mov ah,1 ;输入二进制数 int 21h sub al,30h jl rotate4 cmp al,10d jl add_to4 jmp rotate4 add_to4: mov cl,1 ;将十进制数存入bx中 shl bx,cl mov ah,0 - 23 - 汇编语言课程设计报告:代码与数制之间的转换 add bx,ax jmp newchar4 rotate4: call crlf ;控制光标,并提示信息 lea dx,mesg11 mov ah,9 int 21h ;输出十进制数 print4: 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 mov ah,1 int 21h ret CHANGE2TO10 ENDP 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 ret dec_div4 endp ;******************10进制转2进制子程序******************************* CHANGE10TO2 PROC NEAR lea dx,mesg8 ;显示提示信息 mov ah,9 int 21h mov bx,0 mov si,16 newchar3: ;输入十进制数 mov ah,1 int 21h sub al,30h - 24 - 汇编语言课程设计报告:代码与数制之间的转换 jl rotate3 cmp al,9d jg rotate3 cbw xchg ax,bx mov cx ,10d mul cx xchg ax,bx add bx,ax jmp newchar3 rotate3: call crlf ;控制光标,并显示信息 lea dx,mesg10 mov ah,9 int 21h ;输出2进制数 print3: rol bx,1 ;循环左移一位 mov al,bl and al,1h add al,30h mov dl,al mov ah,2 int 21h dec si jnz print3 mov ah,1 int 21h ret CHANGE10TO2 ENDP ;******************10,16进制子程序******************************* ;本部分说明类似2,16进制子程序,不重复说明 TENAND16 PROC NEAR call crlf lea dx,mesg5 mov ah,09h int 21h CALL INPUT repeat3: mov ah,1 int 21h cmp al,31h JE D1 cmp al,32h JE D2 - 25 - 汇编语言课程设计报告:代码与数制之间的转换 lea dx,ST8 mov ah,0 int 16h jmp repeat3 ;10转16 D1: CALL CHANGE10TO16 RET ;16转10 D2: CALL CHANGE16TO10 RET TENAND16 ENDP ;******************10进制转16进制子程序******************************* CHANGE10TO16 PROC NEAR lea dx,mesg8 mov ah,9 int 21h mov bx,0 mov si,0 newchar6: mov ah,1 ;输入十进制数 int 21h cmp al,'*' ;用'*'来判断输入数据是否结束 je next6 sub al,30h jl next6 cmp al,9d ;和10进制9比较 jg next8 cbw xchg ax,bx ; 将AX与BX内容交换 mov cx,10d mul cx xchg ax,bx add bx,ax jmp newchar6 next6: mov si,1 next7: call crlf lea dx,mesg12 mov ah,9 int 21h mov ch,4 rotate6: mov cl,4 rol bx,cl mov al,bl and al,0fh add al,30h - 26 - 汇编语言课程设计报告:代码与数制之间的转换 cmp al,3ah jl print6 add al,7h print6: mov dl,al ;输入十六进制数 mov ah,2 int 21h dec ch jnz rotate6 mov ah,1 int 21h next8: ret CHANGE10TO16 ENDP ;******************16进制转10进制子程序******************************* CHANGE16TO10 PROC NEAR lea dx,mesg9 mov ah,9 int 21h mov bx,0 newchar5: mov ah,1 int 21h sub al,30h jl next5 cmp al,10d jl add_to5 sub al,27h cmp al,0ah jl next5 cmp al,10h jge next5 add_to5: mov cl,4 shl bx,cl ;将BX左移四位,低位移到高位 mov ah,0 add bx,ax jmp newchar5 next5: call crlf lea dx,mesg11 mov ah,9 int 21h mov cx,10000d ;显示万位 call dec_div5 mov cx,1000d ;显示千位 call dec_div5 - 27 - 汇编语言课程设计报告:代码与数制之间的转换 mov cx,100d ;显示百位 call dec_div5 mov cx,10d ;显示十位 call dec_div5 mov cx,1d;显示个位 call dec_div5 mov ah,1 int 21h ret CHANGE16TO10 ENDP dec_div5 proc near ;除法子程序 mov ax,bx mov dx,0 div cx mov bx,dx mov dl,al add dl,30h mov ah,2 int 21h ret dec_div5 endp ;******************换行子程序******************************* crlf proc near mov dl,13 mov ah,2 int 21h mov dl,10 mov ah,2 int 21h ret crlf endp CODE ENDS END BEGIN - 28 - 汇编语言课程设计报告:代码与数制之间的转换 四、课程设计体会 经过一周的课程设计~无论从学习上还是自身角度~我都自认得到了很大的提高。在课程设计过程中~发现许多在理论学习过程中所未发现的问题~同时~通过自己的努力~顺利地解决了这些问题。这是一种磨砺。 这次的汇编课程设计为我们提供了与众不同的学习方法和学习机会~通过自学BIOS中断等内容来完成课程设计~让我们从传统的被动授学转变为主动求学~从死记硬背的模式中脱离出来~形成了在实践中学习~增强了领悟能力和解决问题的能力。不仅可以巩固了以前所学过的知识~而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的~只有理论知识是远远不够的~只有把所学的理论知识与实践相结合起来~从理论中得出结论~才能真正为社会服务~从而提高自己的实际动手能力和独立思考的能力。 最后要感谢在此次课程设计中给与我帮助的所有人~同时感谢合作伙伴一起完成此次设计。 五、参考文献 80x86汇编语言程序设计 马力妮主编 机械工业出版社 微机原理、汇编与接口技术 朱定华主编 清华大学出版社 部分网络 资料 新概念英语资料下载李居明饿命改运学pdf成本会计期末资料社会工作导论资料工程结算所需资料清单 - 29 -
本文档为【课程设计报告--汇编程序设计(进制转换)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_321575
暂无简介~
格式:doc
大小:312KB
软件:Word
页数:46
分类:互联网
上传时间:2017-10-06
浏览量:86