汇编语言课程设计报告

时间:2024.3.31

汇编语言课程设计报告

( 20## -- 20## 年度第 1 学期)

目    录

1 设计目的. 1

2 概要设计. 1

2.1 系统总体分析. 1

2.2 主模块框图及说明. 1

3 详细设计. 3

3.1 主模块及子模块说明. 3

3.2 各模块详细设计. 5

3.2.1 主界面模块. 5

4 程序调试. 5

4.1 运行界面分析. 5

4.2 调试过程及分析. 7

5 心得体会. 9

5.1 设计体会. 9

5.2 系统改进. 10

参考文献. 11

附    录. 12

附录1 源程序清单. 12

附录1.1 磁盘文件管理系统模块源程序. 12


1 设计目的

本课程设计是在学完教学大纲规定的全部内容、完成所有实践环节的基础上,旨在深化学生学习的汇编语言课程基本知识,进一步掌握汇编语言程序设计方法,提高分析问题、解决问题的综合应用能力。学会查阅和汇编语言相关的规范,手册等技术资料。能正确绘制和使用流程图。掌握汇编语言程序设计和程序调试的基本技能,能进行基本的软件设计。

“汇编语言”课程设计是计算机应用开发人员必须接受的最重要的专业训练之一,是计算机软、硬件的基础,利用汇编语言编写程序可以是我们更清楚地了解计算机是怎样完成复杂工作的,理解计算机对系统中各种设备的调度,从而从根本上认识计算机的工作原理,对课程所学理论知识的深化和提高。因此,课程设计要求同学们熟悉汇编语言的编程,BIOS中断调用、dos系统功能调用、磁盘数据的查询、存取等相关知识。通过课程设计,可以提高运用汇编语言编程解决实际问题的能力,为以后的学习和系统开发奠定良好的基础。

2 概要设计

2.1 系统总体分析

实现对磁盘文件的管理。

创建文件,向磁盘文件中写入信息,从磁盘文件中读出信息并显示,退出程序。如果向磁盘中写入信息或者从磁盘中读取信息失败屏幕会显示打开文件错误的提示。根据提示输入字符,如果输错可以返回并且从新输入。

通过DOS 1功能调用接收用户输入的数据,如果用户输入1,则调用“文件创建模块”,创建文件。如果输入2,则调用“文件写入模块”,对文件写入。如果输入3,则调用“文件读取模块”,读取文件。如果输入4,则退出程序。

如果输入其他字符,则再次调用“主界面模块”,提示符合的操作。

2.2 主模块框图及说明

1、功能菜单主界面。

2、创建文件。

3、写入文件。

4、读取文件

3 详细设计

3.1 主模块及子模块说明

⑴创建文件

⑵写入信息

⑶读出信息

1功能菜单的显示。利用9H功能调用显示menu

    mov ah,9

    lea dx,menu

    int 21h

2创建文件。利用功能调用3CH建立文件。DX=文件路径,CX=属性

3 向磁盘文件中写入信息。先利用功能调用3DH打开文件,再将从键盘输入的字符存入缓冲区,再从缓冲区写入文件,关闭文件。

4 从磁盘文件中读出信息并显示。先打开文件,在将文件内容存入缓冲区,再将缓冲区内容输出,关闭文件。

5 退出程序。

3.2 各模块详细设计

3.2.1 主界面模块

调用Dos 21H功能实现文件操作

3CH:创建文件 DS:DX=文件路径,CX=属性,返回文件号

3DH:打开文件 DS:DX=文件路径,AL=模式

3EH:关闭文件 BX=文件号

3FH:读取文件 BX=文件号 CX=字符数 DS: DX=缓冲区 成功:CF=0,失败:CF=1,AX=错误码

40H:写文件或设备 BX=文件号 DS:DX=代写的数据地址 CX=代写的字节数

在主程序中通过call指令调用子程序,在子程序中通过RET指令返回主函数。

缓冲区定义       

buffer1 db 60,0,60 dup(?)

 buffer2 db 60,0,60 dup(?)

新建文件 ah=3c  ds:dx=asciiz串地址 cx=属性字  返回成功:ax=句柄

打开文件 ah=3d  ds:dx=asciiz串地址            返回成功:ax=句柄

         al=(访问码)(0,读 1,写 2读写)

读文件   ah=3f  ds:dx=asciiz数据缓冲区地址      返回成功:ax=句柄

         bx=句柄  cx=读取字节数

写文件   ah=40  ds:dx=asciiz数据缓冲区地址      返回成功:ax=句柄

         bx=句柄  cx=写入字节数

4 程序调试

4.1 运行界面分析

1)打开windows命令窗口

2)进入tasm程序的安装目录,汇编源文件,如图:

3)用tlink将文件生成obj文件格式

图5-1

图5-2

4.2 调试过程及分析

当输入1时,创建文件成功,如图5-3所示:

图5-3

如果创建失败,则显示Creat file error!

当输入2时,屏幕会显示如图5-4所示

图5-4

向磁盘中输入信息qinxia,写入文件成功,如图5-5所示。

图5-5

当写入文件失败会显示Write to file error!

输入3时,读出文件成功,如图5-6所示

图5-6

当读出文件失败会显示Read from file error!

当输入4时,退出程序。如图5-6所示。

图5-6

5 心得体会

5.1 设计体会

汇编语言是面向机器的程序设计语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址,如此就增强了程序的可读性并且降低了编写难度,想这样符号化的程序设计语言就是汇编语言,因此也称为符号语言。使用汇编语言编写的程序,机器不能直接识别,还要由汇编程序或者叫汇编语言编译器转换成机器指令。汇编程序将符号化的操作代码组装成处理器可以识别的机器指令,这个组装的过程称为作何或汇编。因此,有时候人们也把汇编语言称为组合语言。

这学期学习汇编语言这门课时,对它有了基本的了解和认识。汇编语言其实仍然是机器语言,虽然看起来是英文,但实际上汇编语言中差不多每一句指令都单独对应一句机器语言指令,这就好比汉字一对应阿拉伯数字1一样,只有一少部分是经过变化的,就是因为绝大多数汇编语言指令都与机器语言指令一一映射,所以通常说汇编语言能直接对电脑硬件操作。除了机器语言之外的任何一种语言都需要编译程序,汇编语言的编译器非常小。本次课程设计使我充分了解到汇编语言在实际中的应用并不是那么容易。仅把课堂上的知识充分运用还是不够的。程序设计不能仅仅停留在课本上,想要把程序做好,必须不断通过各种途径掌握更多更好的知识,要善于查找资料提高自己的资料查询能力,要善于利用网络、图书馆来获得知识,不清楚的地方多向老师咨询,获得帮助。最重要的是,要将获得的知识运用的实际编程中,要学以致用。开始着手程序设计时,有些功能感觉无从下手,都不知道要干什么。这些问题只要找到相关的资料就会得到提示从而理解所要解决问题的大致方向。有了明确的目的,就可以发挥自己的智慧来完成它。只有认真的去思考机器是如何进行逻辑思考才能更好的掌握理解它。正所谓“纸上得来终觉浅,觉知此事要躬行。”所以在本学期课程设计是很及时、很必要的。这样不仅能加深我们对程序设计的掌握,而且还及时、真正的做到了学以致用。

5.2 系统改进

这次的课程设计中为了避免寄存器冲突的问题,在设计子程序时,应把所有用到的寄存器都入栈保存,但用来传递参数和结果的寄存器则要注意,不必入栈的就不入栈了,以免得不到预期的结果。可以把寄存器当作变量来看待,有时候它存储的是数据变量(如把BP当作字符个数的记录器),而有时候它存储的是地址变量(如DI、SI);通过这次课程设计的编程和对编程过程中遇到的问题的思考,有效的提高了我对汇编的认识和理解,提高了我的编程能力。

参考文献

[1]姚燕南,薛钧义主编.微型计算机原理与接口技术.高等教育出版社,2004.11

[2]温冬蝉,沈美明.IBM PC汇编语言程序设计.第2版.北京:清华大学出版社,2002.3

[3]齐志儒,高福祥主编.汇编语言程序设计.第2版.东北大学出版社,2001.1

[4]张弥左,王兆月,邢立军编著.微型计算机接口技术. 机械工业出版社

[5]吴秀清.微型计算机原理与接口技术.合肥:中国科技大学出版社,2003

[6]易先清.微型计算机原理与应用.北京:电子工业出版社,2001

 [7]李敬兆.8086/8088和基于ARM核汇编语言程序设计.第二版.合肥:中国科学技术大学出版社,2008.9

[8]王爽.汇编语言.北京:清华大学出版

附    录

附录1 源程序清单

附录1.1 磁盘文件管理系统模块源程序

@@@@@@@@@@@@@@@@@@@@@@@

data segment

  menu db 0dh,0ah, '********************************************',0dh,0ah

              db '*             menu                         *',0dh,0ah

              db '*------------------------------------------*',0dh,0ah

              db '*             1.Create file                *',0dh,0ah

              db '*             2.Write to file              *',0dh,0ah

              db '*             3.Read file                  *',0dh,0ah

              db '*             4.Quit                       *',0dh,0ah

              db '*------------------------------------------*',0dh,0ah

              db '*             Choice(1--4)                 *',0dh,0ah

              db '********************************************',0dh,0ah,'$'

        pathname db 'D:\IBM PC.TXT',00

       handle dw ?

     buffer1 db 60,0,60 dup(?)

     buffer2 db 60,0,60 dup(?)

       huanhang db '',0dh,0ah,'$'

       chose db 0dh,0ah,'Please enter the digital from 1-4!',0dh,0ah,'$'

     entery  db 0dh,0ah,'Enter what you want to write to the file!(The length of the strings is under 60)',0dh,0ah,'$'

     str_ok1 db 0dh,0ah,'Create file successfully!',0dh,0ah,'$'

     str_ok2 db 0dh,0ah,'Wtite to file successfully!',0dh,0ah,'$'

     str_ok3 db 0dh,0ah,'Read from file successfully!',0dh,0ah,'$'

       str_error1 db 'Create file error!$'

       str_error2 db 'Open file error!$'

       str_error3 db 'Write to file error!$'

       str_error4 db 'Read file error!$'

       str_error5 db 'Exit from file error!$'

data ends

code segment

       assume cs:code,ds:data

main proc far

start:

       mov ax,data

       mov ds,ax

       mov ax,0600h

       call me

       call choice

       ret

main endp

me proc near

       mov ah,9

       lea dx,menu

       int 21h

me endp

choice proc near

       mov ah,1

       int 21h

       cmp al,31h

       je next1

       cmp al,32h

       je next2

       cmp al,33h

       je next3

       cmp al,34h

       je next4

       jmp back

next1:

       call creath

next2:

       call entry

next3:

       mov ah,9

       lea dx,huanhang

       int 21h

       call read

next4:

       mov ax,4c00h

       int 21h

back:

       mov ah,9

       lea dx,chose

       int 21h

       call me

       ret  

choice endp

creath proc near

       mov ah,3ch

       lea dx,pathname

       mov cx,0

       int 21h

       jc error1

       mov handle,ax

     jmp exit

error1:

       mov ah,9

       lea dx,str_error1

       int 21h

     jmp exit1

exit:

       mov ah,9

       lea dx,str_ok1

       int 21h

exit1:

       call choice

creath endp

entry proc near

       mov ah,9

     lea dx,entery

       int 21h

      

       lea dx,buffer1

       mov ah,0ah

       int 21h

       sub ch,ch

       mov cl,buffer1+1

       add dx,2

       call writh

        ret

entry endp

writh proc near

       mov ah,3dh

        lea dx,pathname

       mov al,1

       int 21h

       jc error2

       mov handle,ax

       mov ah,40h

     lea dx,buffer1+2

       mov bx,handle

     mov cx,60

       int 21h

       jc error3

       mov ah,3eh

       mov bx,handle

       int 21h

       jc error4

     jmp back1

error2:

       mov ah,9

       lea dx,str_error2

       int 21h

     jmp exit2

error3:

       mov ah,9

       lea dx,str_error4

       int 21h

     jmp exit2

error4:

       mov ah,9

       lea dx,str_error5

       int 21h

     jmp exit2

back1:

       mov ah,9

       lea dx,str_ok2

       int 21h

exit2:

       call choice

writh endp

read proc near

       mov ah,3dh

     lea dx,pathname

       mov al,0

       int 21h

       jc error5

       mov handle,ax

       mov ah,3fh

       lea dx,buffer2

       mov bx,handle

     mov cx,60

       int 21h

       jc error6

       mov ah,9

     lea dx,buffer2

       int 21h

       jc error6

       mov ah,3eh

       mov bx,handle

       int 21h

       jc error7

       jmp back2

error5:

       mov ah,9

       lea dx,str_error2

       int 21h

     jmp exit3

error6:

       mov ah,9

       lea dx,str_error4

       int 21h

     jmp exit3

error7:

       mov ah,9

       lea dx,str_error5

       int 21h

     jmp exit3

back2:

       mov ah,9

       lea dx,str_ok3

       int 21h

exit3:

       call choice

read endp

code ends

       end start

              end main

更多相关推荐:
汇编语言课程设计报告报告

湖南农业大学课程设计报告学院:班级:姓名:学号:课程设计题目:编密码课程名称:汇编语言与微机原理评阅成绩:评阅意见:成绩评定教师签名:日期:年月日目录概述3一设计内容与要求3二设计思想3三程序流程图4四程序源代…

汇编语言程序设计实验报告

实验报告实验名称专业班级信息安全学号姓名实验一汇编语言上机过程和Debug常用调试命令一实验目的学习程序设计的基本方法和技能熟练掌握用汇编语言设计编写调试和运行程序的方法二实验题目熟悉与实验有关的系统软件如编辑...

汇编语言课程设计报告

课程设计报告课程名称课题名称1显示彩色菱形2显示系统当前时间专业班级学号姓名指导教师年月日课程设计任务书课程名称课题专业班级学生姓名学号指导老师审批任务书下达日期年月日任务完成日期年月日一设计内容与设计要求1设...

汇编课程设计报告

课程设计课程设计任务书学生姓名:专业班级:指导教师:工作单位:计算机科学与技术学院题目:打印水仙花数初始条件:理论:完成了《汇编语言程序设计》课程,对微机系统结构和80系列指令系统有了较深入的理解,已掌握了汇编…

汇编语言程序设计报告

课程设计报告20xx020xx年度第1学期名称汇编语言程序设计报告题目院系电气与电子工程学院班级电子0902学号学生姓名指导教师廖斌设计周数成绩日期年月日课程课程设计综合实验报告一课程设计综合实验的目的与要求1...

汇编语言课程设计报告

汇编语言课程实习报告实习题目计算比赛成绩学生姓名班级学号计科1123班20xx11621301院系信息学院计算机系指导老师提交时间成绩目录1课程实习任务22基本知识221汇编语言程序结构322关键指令分析423...

汇编语言程序设计综合实验报告

西安财经学院信息学院《汇编语言程序设计》实验报告实验名综合实验程序设计实验室实验日期20##-12-15一、实验目的及要求1.悉debug命令,学习汇编语言的调试环境;2.熟练撑握一些简单程序的调试,理解基本的…

汇编语言程序设计实验报告-实验六

实验六汇编语言程序上机过程实验目的1掌握常用工具软件PEMASM和LINK的使用2伪指令SEGMENTENDSASSUMEENDOFFSETDUP3利用的1号功能实现键盘输入的方法4了解EXE文件和COM文件的...

汇编语言程序设计实验报告

学生实验报告册20xx20xx学年第1学期实验名称汇编语言程序设计学院信息与电气工程学院班级09级计算机科学与技术2班学号13514031姓名于志佳指导教师徐静实验一DEBUG的使用实验目的1熟悉在计算机上建立...

北京理工大学汇编语言实验报告3字符串操作实验(设计性实验)

实验三字符串操作实验设计性实验蔡航1120xx0312一实验要求和目的1了解汇编语言字符串处理基本流程2熟悉汇编语言字符串处理基本指令的使用方法3掌握利用汇编语言实现字符串处理的程序设计方法二软硬件环境1硬件环...

汇编语言第7次实验报告:非数值运算程序设计

四川大学计算机学院软件学院实验报告123456789

汇编语言_完全数_课程设计报告书

汇编语言课程设计题目打印完全数一个数若约数不含它本身的和恰好等于它本身就称为完全数初始条件理论学完汇编课程掌握汇编语言的使用实践计算机实验室提供计算机及软件环境如果自己有计算机可以在其上进行设计要求完成的主要任...

汇编语言课程设计报告(22篇)