完整word版汇编第一次实验武汉理工推荐文档.docx

上传人:b****3 文档编号:12638884 上传时间:2023-04-21 格式:DOCX 页数:12 大小:336.02KB
下载 相关 举报
完整word版汇编第一次实验武汉理工推荐文档.docx_第1页
第1页 / 共12页
完整word版汇编第一次实验武汉理工推荐文档.docx_第2页
第2页 / 共12页
完整word版汇编第一次实验武汉理工推荐文档.docx_第3页
第3页 / 共12页
完整word版汇编第一次实验武汉理工推荐文档.docx_第4页
第4页 / 共12页
完整word版汇编第一次实验武汉理工推荐文档.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

完整word版汇编第一次实验武汉理工推荐文档.docx

《完整word版汇编第一次实验武汉理工推荐文档.docx》由会员分享,可在线阅读,更多相关《完整word版汇编第一次实验武汉理工推荐文档.docx(12页珍藏版)》请在冰豆网上搜索。

完整word版汇编第一次实验武汉理工推荐文档.docx

完整word版汇编第一次实验武汉理工推荐文档

汇编语言实验报告

学院计算机科学与技术学院专业计算机科学与技术专业  班级 

学号姓名实验时间:

2011年11月 

 

一、实验名称:

熟悉汇编语言程序调试环境及顺序程序设计

二、实验内容及要求:

实验目的及要求:

1.学习及掌握汇编语言源程序的书写格式和要求,明确程序中各段的功能和相互之间的关系。

2.学会使用EDIT、MASM、LINK、DEBUG等软件工具。

3.熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。

实验内容:

编写习题5.1和习题5.5的程序并调试通过。

三、实验使用的关键技术和方法:

1.汇编语言源程序的建立

本例中给出的程序是要求从内存中存放的10个无符号字节整数数组中找出最小数,将其值保存在AL寄存器中。

设定源程序的文件名为ABC。

DATASEGMENT

BUFDB23H,16H,08H,20H,64H,8AH,91H,35H,2BH,7FH

CNEQU$-BUF

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

PUSHDS

XORAX,AX

PUSHAX

MOVAX,DATA

MOVDS,AX

MOVBX,OFFSETBUF

MOVCX,CN

DECCX

MOVAL,[BX]

INCBX

LP:

CMPAL,[BX]

JBENEXT

MOVAL,[BX]

NEXT:

INCBX

DECCX

JNZLP

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

键入以下命令:

C:

\>EDITABC.ASM

此时屏幕的显示状态如图1所示。

图1用EDIT编辑ABC.ASM程序窗口

程序输入完毕后一定要将源程序文件存入盘中,以便进行汇编及连接,也可以再次调出源程序进行修改。

2.将源程序文件汇编成目标程序文件

一般情况下,MASM汇编程序的主要功能有以下3点:

(1)检查源程序中存在的语法错误,并给出错误信息。

(2)源程序经汇编后没有错误,则产生目标程序文件,扩展名为.OBJ。

(3)若程序中使用了宏指令,则汇编程序将展开宏指令。

源程序建立以后,在DOS状态下,采用宏汇编程序MASM对源程序文件进行汇编,其操作过程如图2所示。

图2MASM宏汇编程序工作窗口

汇编过程的错误分警告错误(WarningErrors)和严重错误(SevereErrors)两种。

其中警告错误是指汇编程序认为的一般性错误;严重错误是指汇编程序认为无法进行正确汇编的错误,并给出错误的个数、错误的性质。

这时,就要对错误进行分析,找出原因和问题,然后再调用屏幕编辑程序加以修改,修改以后再重新汇编,一直到汇编无错误为止。

3.用连接程序生成可执行程序文件

经汇编以后产生的目标程序文件(.OBJ文件)并不是可执行程序文件,必须经过连接以后,才能成为可执行文件(即扩展名为.EXE)。

连接过程如图3所示。

图3LINK连接程序工作窗口

上述提示行回答以后,连接程序开始连接,如果连接过程中出现错误,则显示出错误信息,根据提示的错误原因,要重新调入编辑程序加以修改,然后重新汇编,再经过连接,直到没有错误为止。

连接以后,便可以产生可执行程序文件(.EXE文件)。

4.程序的执行

当我们建立了正确的可执行文件以后,就可以直接在DOS状态下执行该程序。

如:

C:

\>ABC

本程序当中没有用到DOS中断调用指令,所以在屏幕上看不到程序执行的结果。

四、实验设计方案说明

对于习题5.1:

流程图如图所示:

对于这题,我原来的想的代码是下边所示的代码:

由于考虑到从键盘上多次输入小写字母与输出相应的大写字母,所以为了简化程序,避免多次书写相同代码,使用了宏定义,input,output

INPUTMACROK

MOVAH,1

INT21H

MOVK,AL

ENDM

OUTPUTMACROK

MOVDL,K

MOVAH,2

INT21H

ENDM

然后是对输入的字符进行检错操作,判断输入的字符的ASCII是否在A~Z之间,是就进行转化并输出,不是直接跳出循环,操作结束。

CMPM,'A'

JBSTOP

CMPM,'Z'

JASTOP

最后是在进行一次正确操作结束后跳到编码的开始时,进行多次操作,如果想结束操作,可输入任何不在a~z之间的任意字符,结束实验。

对于习题5.5:

编写程序,要求能从键盘接受一个个位数N,然后响铃N次(响铃的ASCII码为07)

流程图如图所示:

首先是对输入字符的检错操作,判断输入的字符是否在0~9之间的个位数,如果是,进行下面的操作,否则直接结束。

CMPAL,'0';检查输入的数是否在0-9之间

JBSTOP

CMPAL,'9'

JASTOP

CBW

MOVCX,AX

然后将正确的数字放入CX中,作为循环的次数,其中循环使用LOOP,每循环一次就执行一次响铃操作,直至CX的内容为0。

BELL:

MOVDL,07;循环响铃

MOVAH,2

INT21H

LOOPBELL

JMPBEGIN

STOP:

MOVAX,4C00H

INT21H

习题5.1的完整代码:

INPUTMACROK

MOVAH,1

INT21H

MOVK,AL

ENDM

OUTPUTMACROK

MOVDL,K

MOVAH,2

INT21H

ENDM

ASSUMECS:

CODE,DS:

DATA

DATASEGMENT

MDW0

DATAENDS

CODESSEGMENT

BEGIN:

MOVAX,DATA

MOVDS,AX

INPUTM

CMPM,'A'

JBSTOP

CMPM,'Z'

JASTOP

SUBM,20H

MOVAH,2

MOVDL,0AH

INT21H

OUTPUTM

MOVAH,2

MOVDL,0AH

INT21H

JMPBEGIN

STOP:

MOVAX,4C00H

INT21H

CODEENDS

END

习题5.5:

ASSUMECS:

CODE

CODESEGMENT

BEGIN:

MOVAH,1;输入数字

INT21H

CMPAL,'0';检查输入的数是否在0-9之间

JBSTOP

CMPAL,'9'

JASTOP

CBW

MOVCX,AX

JCXZSTOP;如果cx中是的数为0则结束

BELL:

MOVDL,07;循环响铃

MOVAL,2

INT21H

LOOPBELL

JMPBEGIN

STOP:

MOVAX,4C00H

INT21H

CODEENDS

END

四、测试及评估

习题5.1测试结果如下

生成可执行文件后,对实验进行验证:

最终结果

习题5.5测试结果如下

执行后,进行试验验证

最终结果如下图所示:

五、设计心得

这次试验过程中出现的问题很多,最开始是对错做过程的不熟悉导致编译运行是老出错,最后是代码上的错误。

所以通过这次试验不仅让我懂得对汇编操作的基本过程熟悉了,更多的是对整个编写代码的流程熟悉了。

中间总是出现错误时曾经不想做了,但是觉得这种代码也并不是很难,应该可以实现,所以在不断地改动之后最终让正确的实验结果出现。

所以这次试验还让我对做实验增加了耐心,因而这次收获很多。

 

学号:

0120910340625

武汉理工大学

汇编语言实验报告

题目

熟悉汇编语言程序调试环境及顺序程序设计

学院

计算机科学与技术学院

专业

计算机科学与技术

班级

计算机科学与技术sy0901

姓名

王悦

指导教师

杨青

 

2011

11

24

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

当前位置:首页 > 医药卫生 > 基础医学

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

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