课程设计报告汇编程序设计进制转换.docx

上传人:b****6 文档编号:8418649 上传时间:2023-01-31 格式:DOCX 页数:37 大小:221.73KB
下载 相关 举报
课程设计报告汇编程序设计进制转换.docx_第1页
第1页 / 共37页
课程设计报告汇编程序设计进制转换.docx_第2页
第2页 / 共37页
课程设计报告汇编程序设计进制转换.docx_第3页
第3页 / 共37页
课程设计报告汇编程序设计进制转换.docx_第4页
第4页 / 共37页
课程设计报告汇编程序设计进制转换.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

课程设计报告汇编程序设计进制转换.docx

《课程设计报告汇编程序设计进制转换.docx》由会员分享,可在线阅读,更多相关《课程设计报告汇编程序设计进制转换.docx(37页珍藏版)》请在冰豆网上搜索。

课程设计报告汇编程序设计进制转换.docx

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

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

汇编语言课程设计报告:

代码与数制之间的转换内容提要:

本课程设计的主要内容是代码与数制之间的转换~程序的主要功能如下:

1.将十六进制数转换成其对应的ASCII码

2.将ASCII码转换成其对应的十六进制数

3.实现二进制数与十六进制数之间相互转换

4.实现十进制数与二进制数之间相互转换

5.实现十六进制数与十进制数之间相互转换

数制转换是计算机科学技术中最为基础的运算~在日常生活中~人们习惯性地使用十进制数进行计算。

而在计算机内部~所有的信息,数、字符、汉字、计算机的指令、状态,都是用二进制数来表示的。

在计算机中~二进制数的运算、处理比十进制数的更容易实现。

有时为了缩短书写~在计算机中还采用十六进制数。

所以~我们需要把数从二进制数形式转换成其他进制的形式~甚至在不同的进位制之间进行转换。

-1-

汇编语言课程设计报告:

代码与数制之间的转换

一、前言〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃31.1程设计的目的〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃31.2代码与数制之间的转换程序的意义〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃31.3数制之间的转换程序的主要功能〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃3

正文〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃3二、

2.1代码与数制之间相互转换程序的设计大纲〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃32.2代码与数制之间相互转换程序的结构图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃42.3友好交互界面结构图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃52.4程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃6

2.4.1主程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃6

2.4.2键盘输入子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃6

2.4.3ASC码转16进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃7

2.4.416进制转ASC进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃8

2.4.52,16进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃8

2.4.62?

16进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃9

2.4.716?

2进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃9

2.4.82~10进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃10

2.4.92?

10进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃10

2.4.1010?

2进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃11

2.4.1110~16进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃11

2.4.1210?

16进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃12

2.4.1316?

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=显示模式号,见表如下,

返回结果:

无返回参数,只是屏幕设置为指定的模式。

模式号分辨率颜色显示方式040列*25行,下略,16级灰色黑白文本140*2516色彩色文本280*2516级灰色黑白文本380*2516色彩色文本780*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.3ASC码转16进制子程序流程图

-7-

汇编语言课程设计报告:

代码与数制之间的转换2.4.416进制转ASC进制子程序流程图

2.4.52,16进制子程序流程图

-8-

汇编语言课程设计报告:

代码与数制之间的转换

2.4.62?

16进制子程序流程图

2.4.716?

2进制子程序流程图

-9-

汇编语言课程设计报告:

代码与数制之间的转换

2.4.82,10进制子程序流程图

2.4.910?

2进制子程序流程图

-10-

汇编语言课程设计报告:

代码与数制之间的转换2.4.102?

10进制子程序流程图

2.4.1110,16进制子程序流程图

-11-

汇编语言课程设计报告:

代码与数制之间的转换

2.4.1210?

16进制子程序流程图

2.4.1316?

10进制子程序流程图

-12-

汇编语言课程设计报告:

代码与数制之间的转换三、源代码及其注释

stacksegmentstack'stack'

stackends

;*****************************数据段定义********************************

datasegment

string1db'$------------计算机05022036-------$';窗口中的提示语st1_lenequ$-string1;显示串的长度st2db'|--1.将十六进制数转换成对应的ASC?

码-----|';窗口中的提示语st2_lenequ$-st2;显示串的长度st3db'|--2.将ASC?

码转换成对应的十六进制数-----|';窗口中的提示语st3_lenequ$-st3;显示串的长度st4db'|--3.实现二进制数与十六进制数之间的转换--|';窗口中的提示语st4_lenequ$-st4;显示串的长度st5db'|--4.实现二进制数与十进制数之间的转换----|';窗口中的提示语st5_lenequ$-st5;显示串的长度st6db'|--5.实现十进制数与十六进制数之间的转换--|';窗口中的提示语st6_lenequ$-st6;显示串的长度ST61DB'请选择你所要进行的操作(输入0-5):

';

ST61_LENEQU$-ST61

ST7DB20DUP(?

st0db'|--0.退出本系统--------------------------|'ST0_LENEQU$-ST0

ST8DB'输入错误请重新输入:

',13,10,'$'

bufferdb80dup(?

leapdb0ah,0dh,'$'

mesg1db'1.实现2进制转成16进制',13,10

db'2.实现16进制转成2进制',13,10,'$'

mesg3db'1.实现2进制转成10进制',13,10

db'2.实现10进制转成2进制',13,10,'$'

mesg5db'1.实现10进制转成16进制',13,10

db'2.实现16进制转成10进制',13,10,'$'mesg6db'请输入ASC?

码:

',13,10,'$'

mesg7db'请输入二进制数:

',13,10,'$'

mesg8db'请输入十进制数:

',13,10,'$'

mesg9db'请输入十六进制数:

',13,10,'$'

mesg10db'它的二进制数是:

',13,10,'$'

mesg11db'它的十进制数是:

',13,10,'$'

mesg12db'它的十六进制数是:

',13,10,'$'

mesg13db'它的ASC?

码是:

',13,10,'$'

dataends

codesegment

-13-

汇编语言课程设计报告:

代码与数制之间的转换

assumecs:

code,ds:

data,ss:

stack

;******************主程序*********************************

beginprocfar

movax,data;设置DS=ES

movds,ax

moves,ax

PRINT:

movah,0;设置显示模式3(彩色文本16色)

moval,3

int10h

movah,6;清屏

moval,0

movch,0;屏幕左上角坐标

movcl,0

movdh,24;屏幕右下角坐标

movdl,79

movbh,07;属性

int10h

;建立小窗口

movah,6

moval,0

movch,0;左上角坐标

movcl,0

movdh,100;右下角坐标

movdl,100

movbh,20h;绿底黑字,反向显示

int10h

;在窗口第一行显示欢迎信息

movah,13h;显示字符串

leabp,string1;ES:

BP=字符串首地址

movcx,st1_len;CX=串长度

movdh,1;显示信息的起始行位置

movdl,20;显示信息的起始列位置

movbh,0

moval,1

movbl,64h;显示的属性为棕底红字

int10h

;显示提示信息0

;注释同显示第一行信息

movah,13h

leabp,st0

movcx,st0_len

movdh,2

movdl,20

-14-

汇编语言课程设计报告:

代码与数制之间的转换

movbh,0

moval,1

movbl,12h;显示的属性为蓝底绿字

int10h

;显示提示信息1

;注释同显示第一行信息

movah,13h

leabp,st2

movcx,st2_len

movdh,3

movdl,20

movbh,0

moval,1

movbl,12h;显示的属性为蓝底绿字

int10h

;显示提示信息2

;注释同显示第一行信息

movah,13h

leabp,st3

movcx,st3_len

movdh,4

movdl,20

movbh,0

moval,1

movbl,12h;显示的属性为蓝底绿字

int10h

;显示提示信息3

;注释同显示第一行信息

movah,13h

leabp,st4

movcx,st4_len

movdh,5

movdl,20

movbh,0

moval,1

movbl,12h;显示的属性为蓝底绿字

int10h

;显示提示信息4

;注释同显示第一行信息

movah,13h

leabp,st5

movcx,st5_len

movdh,6

movdl,20

-15-

汇编语言课程设计报告:

代码与数制之间的转换

movbh,0

moval,1

movbl,12h;显示的属性为蓝底绿字

int10h

;显示提示信息5

;注释同显示第一行信息

movah,13h

leabp,st6

movcx,st6_len

movdh,7

movdl,20

movbh,0

moval,1

movbl,12h;显示的属性为蓝底绿字

int10h

;显示所选操作提示信息

;注释同显示第一行信息

movah,13h

leabp,st61

movcx,st61_len

movdh,8

movdl,1

movbh,0

moval,1

movbl,24h;显示的属性为绿底红字

int10h

CALLCRLF;调用换行子程序,控制输出光标下移一行

CALLINPUT;调用键盘输入子程序;判断键盘输入

repeat:

movdx,0

movah,1

int21h

cmpal,30h;为0跳至a0

JEa0

cmpal,31h;为1跳至a1

JEa1

cmpal,32h;为2跳至a2

JEa2

cmpal,33h;为3跳至a3

JEa3

cmpal,34h;为4跳至a4

JEa4

cmpal,35h;为5跳至a5

-16-

汇编语言课程设计报告:

代码与数制之间的转换

JEa5

leadx,ST8;非0,1,2,3,4,5输出提示信息

movah,9;重新输入

int21h

jmprepeat;返回判断键盘输入

A0:

JMPEXIT;跳至exit

A1:

CALLSIXASC;调用SIXASC子程序,即十六进制转ASC码

CALLCRLF;调用换行子程序,控制输出光标下移一行

JMPPRINT;跳回清屏,显示小窗口

A2:

CALLASCIITO16;调用ASCIITO16子程序,即ASC码转十六进制

CALLCRLF;调用换行子程序,控制输出光标下移一行

JMPPRINT;跳回清屏,显示小窗口

A3:

CALLTWOAND16;调用TWOAND16子程序,即十六进制与二进制互转

CALLCRLF;调用换行子程序,控制输出光标下移一行

JMPPRINT;跳回清屏,显示小窗口

A4:

CALLTWOAND10;调用TWOAND10子程序,即十进制与二进制互转

CALLCRLF;调用换行子程序,控制输出光标下移一行

JMPPRINT;跳回清屏,显示小窗口

A5:

CALLTENAND16;调用TENAND16子程序,即十六进制与十进制互转

CALLCRLF;调用换行子程序,控制输出光标下移一行

JMPPRINT;跳回清屏,显示小窗口

;返回DOS

EXIT:

movah,4ch

int21h

RET

BEGINENDP

;********************键盘调用子程序***********************

INPUTPROCNEAR

L1:

MOVAH,1;利用INT16H的功能1探测读键盘

INT16H

JZL1;无键按下则循环

LEASI,ST7

MOVCX,1

L2:

MOVAH,0;利用INT16H的功能0读键盘

INT16H

;显示所输入的信息

-17-

汇编语言课程设计报告:

代码与数制之间的转换

OUTPUT:

movah,1

int21h

RET

INPUTENDP

;*******************ASC转16进制子程序******************************

ASCIITO16PROCNEAR

xorax,ax

movbx,ax

leadx,mesg6

movah,9

int21h

ascii0:

leasi,buffer

movcx,2

ascii20:

movah,01h

int21h

cmpal,'p';输入‘p’则返回主菜单

jequit0

cmpal,30h

jberror0;<0跳回重新输入

cmpal,39h

jaerror0;>9跳回重新输入

andal,0fh

mov[si],al;取高位

incsi;取低位

loopascii20

leadx,leap;显示回车空行

movah,09h

int21h

leasi,buffer

moval,[si];将高位的数存到al中

movcl,4

shlal,cl;将高位的数移到高四位

incsi

addal,[si];将高四位的数加低位

cmpal,30h

jberror0;<0跳回重新输入

cmpal,40h

jblogo;<0跳回重新输入

cmpal,61h

jberror0

cmpal,66h

jaerror0

logo:

movdl,al

movah,02h

-18-

汇编语言课程设计报告:

代码与数制之间的转换

int21h

leadx,leap

movah,09h

int21h

leadx,mesg12

movah,9

int21h

jmpascii0

error0:

leadx,mesg6

movah,9

int21h

jmpascii0

quit0:

ret

ASCIITO16ENDP

;******************16进制转ASC子程序*******************************

SIXASCPROCNEAR

xorax,ax

leadx,mesg9

movah,09h

int21h

leasi,leap

ascii:

movah,1

int21h

cmpal,'p';输入

jequit

cmpal,30h;<0跳回重新输入

jberror

cmpal,66h

jaerror;>f的跳回重新输入

cmpal,60h

japrint0;>a显示

cmpal,39h

jaerror;>9跳回重新输入print0:

pushdx

pushax

movbuffer,al

movdl,buffer

movcl,4

shrdl,cl

adddl,30h

movah,02h

-19-

汇编语言课程设计报告:

代码与数制之间的转换

int21h;显示高位

movdl,buffer

anddl,0fh

adddl,30h

movah,02h

int21h

popax

popdx;显示低位

leadx,leap

movah,09h

int21h

jmpas

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1