电子科技大学 汇编 实验报告.docx

上传人:b****0 文档编号:9731283 上传时间:2023-05-20 格式:DOCX 页数:26 大小:604.43KB
下载 相关 举报
电子科技大学 汇编 实验报告.docx_第1页
第1页 / 共26页
电子科技大学 汇编 实验报告.docx_第2页
第2页 / 共26页
电子科技大学 汇编 实验报告.docx_第3页
第3页 / 共26页
电子科技大学 汇编 实验报告.docx_第4页
第4页 / 共26页
电子科技大学 汇编 实验报告.docx_第5页
第5页 / 共26页
电子科技大学 汇编 实验报告.docx_第6页
第6页 / 共26页
电子科技大学 汇编 实验报告.docx_第7页
第7页 / 共26页
电子科技大学 汇编 实验报告.docx_第8页
第8页 / 共26页
电子科技大学 汇编 实验报告.docx_第9页
第9页 / 共26页
电子科技大学 汇编 实验报告.docx_第10页
第10页 / 共26页
电子科技大学 汇编 实验报告.docx_第11页
第11页 / 共26页
电子科技大学 汇编 实验报告.docx_第12页
第12页 / 共26页
电子科技大学 汇编 实验报告.docx_第13页
第13页 / 共26页
电子科技大学 汇编 实验报告.docx_第14页
第14页 / 共26页
电子科技大学 汇编 实验报告.docx_第15页
第15页 / 共26页
电子科技大学 汇编 实验报告.docx_第16页
第16页 / 共26页
电子科技大学 汇编 实验报告.docx_第17页
第17页 / 共26页
电子科技大学 汇编 实验报告.docx_第18页
第18页 / 共26页
电子科技大学 汇编 实验报告.docx_第19页
第19页 / 共26页
电子科技大学 汇编 实验报告.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

电子科技大学 汇编 实验报告.docx

《电子科技大学 汇编 实验报告.docx》由会员分享,可在线阅读,更多相关《电子科技大学 汇编 实验报告.docx(26页珍藏版)》请在冰点文库上搜索。

电子科技大学 汇编 实验报告.docx

电子科技大学汇编实验报告

计算机专业类课程

实验报告

课程名称:

汇编语言程序设计

学  院:

计算机科学与工程

专  业:

计算机科学与技术

学生姓名:

郭小明

学  号:

2011060100010

日  期:

2013年12月24日

电子科技大学

实验报告

实验一

学生姓名:

郭小明学号:

*************

一、实验室名称:

主楼A2-412

二、实验项目名称:

汇编源程序的上机调试操作基础训练

三、实验原理:

DEBUG的基本调试命令;汇编数据传送和算术运算指令

MASM宏汇编开发环境使用调试方法

四、实验目的:

1.掌握DEBUG的基本命令及其功能

2.学习数据传送和算术运算指令的用法

3.熟悉在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程

五、实验内容:

编写程序计算以下表达式:

Z=(5X+2Y-7)/2

设X、Y的值放在字节变量VARX、VARY中,结果存放在字节单元VARZ中。

1.编辑源程序,建立一个以后缀为.ASM的文件.

2.汇编源程序,检查程序有否错误,有错时回到编辑状态,修改程序中错误行。

无错时继续第3步。

3.连接目标程序,产生可执行程序。

4.用DEBUG程序调试可执行程序,记录数据段的内容。

VARX

VARY

VARZ

5

4

10

5

20

20

六、实验器材(设备、元器件):

PC机,MASM软件平台。

七、实验数据及结果分析:

程序说明:

功能:

本程序完成Z=(5X+2Y-7)/2这个等式的计算结果求取。

其中X与Y是已知量,Z是待求量。

结构:

首先定义数据段,两个DB变量VARX与VARY(已经初始化),以及结果存放在VARZ,初始化为?

然后定义堆栈段,然后书写代码段,代码段使用顺序程序设计本程序,重点使用MOV和IMUL以及XOR,IDIV完成程序设计。

详细内容见程序注释。

程序清单:

调试说明:

将汇编语言(.asm文件)翻译为目标代码程序(.obj文件)(MASM.exe);

没有出现错误或者警告,下一步进行链接,连接目标代码程序和库函数代码生成可执行程序文件(.exe文件),(LINK.exe);

我们成功生成了test1.exe.然后输入Debug命令进入调试环境,-是debug命令提示符。

我们执行-ntest1.exe-l装入我们的test1.exe然后我们-u反汇编程序,得到程序的反汇编。

1485显然是我们的数据段逻辑地址

我们来查看一下1485:

:

0000到1485:

1111这16个字节的内容,理论上应该是05,04,00.……0005正是VARX04正是VARY00正是VARZ

正如我们所料

下面是单步调试逐条执行汇编指令的操作。

现在我们执行程序(-g),然后再次查看数据段里面的内容

VARZ的内容变成了0D

事实上(5*5+4*2-7)/2=13就是0D

程序框图:

 

 

 

VARX

VARY

VARZ

5

4

13

10

5

26

20

20

66

九、实验结论:

通过本次实验,我们学习了解掌握了DEBUG的基本命令及其功能,学习了数据传送和算术运算指令的用法,熟悉了在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程。

完成了Z=(5*X+2*Y-7)/2算术式的编程计算,使用到了以上学习到的知识,并且利用了顺序程序设计的思想。

通过本次实验,大大提升了对汇编程序设计这门课实践意义的理解,提高了编程能力和设计水平。

另外在此感谢指导老师的辛勤工作!

电子科技大学

实验报告

实验二

学生姓名:

郭小明学号:

2011060100010

一、实验室名称:

主楼A2-412

二、实验项目名称:

分支程序与循环程序设计

三、实验原理:

分支程序设计基本规范与调试方法,

循环程序设计与调试方法;分配与使用寄存器的相关方法

四、实验目的:

1、掌握分支程序的结构。

2、掌握分支程序的设计与调试方法。

3、掌握循环程序设计与调试方法

4、掌握正确分配与使用寄存器。

六、实验内容:

编程实现:

分别统计下列20个数中大于5、小于零和大于等于零且小于等于5的数据个数,分别存入字节单元RES1、RES2和RES3中。

BUFFDB-1,20,3,30,-5,15,100,-54,0,4,78,99,-12,32,3,23,-7,24,60,-51

六、实验器材(设备、元器件):

PC机,MASM软件平台。

七、实验步骤:

程序说明:

功能:

本程序完成对一个数组当中大于5,小于0以及大于等于0小于等于5的数的个数的统计。

分别存入字节单元RES1、RES2和RES3中。

结构:

首先定义数据段,BUF数组的初始化,以及数组成员个数的统计以备循环时使用,以及结果存放在RES1,RES2,RES3,初始化为0。

然后定义堆栈段,然后书写代码段,代码段使用分支与循环程序设计本程序,首先通过LEA指令获取BUF首地址,然后首地址每次加一之后就可以根据循环次数遍历整个数组,遍历的时候首先将获得数据与0进行比较,如果小于0跳转到BELOW0

(JLBELOW0)标号处执行,若不是的话再与5进行比较,如果小于等于5的话跳转到BELOW5(JLEBELOW5;如果小于5则跳转),再然后的话数据必然是属于大于5的范围,由此统计三类数据的个数。

详细见程序。

程序清单:

调试说明:

将汇编语言(.asm文件)翻译为目标代码程序(.obj文件)(MASM.exe);

没有出现错误或者警告,下一步进行链接,连接目标代码程序和库函数代码生成可执行程序文件(.exe文件),(LINK.exe);

我们成功生成了test1.exe.然后输入Debug命令进入调试环境,-是debug命令提示符。

我们进入了debug程序调试环境

现在我们反汇编该程序

显然1485是我们数据段的首地址,我们来看看程序运行之前数据段里面的值,我们的数据段里面应该存放至20个数据值还有就是3个存放结果的值(初始都是0)

正如我们所料想的。

下面是单步调试的结果。

下面我们执行程序并查看运行程序之后的数据段里面的数据值。

我们返现后面三个值变化了,确实分别记录了数组当中大于5,小于0以及大于等于0小于等于5的三类数据的个数,与事实相符,验证我们的程序设计是正确的。

得出:

大于5的数据共有:

10个

小于0的数据共有:

6个

大于等于0小于等于5的数据共有4个

程序框图:

 

九、实验结论:

通过本次实验,掌握了分支程序的结构特点,学习了分支程序的设计和调试方法,掌握了循环程序的结构特点并学习了循环程序的设计和调试方法,本程序完成对一个数组当中大于5,小于0以及大于等于0小于等于5的数的个数的统计,运用了循环程序设计的思想,本实验的原理框图较为复杂,但是框图给出了明确的思路和解题方向,是很好的学习方法。

本次程序设计实验运用了数个跳转指令,JL,JLE,跳转指令在循环程序设计过程中具有很重要的特点。

另外在此感谢指导教师的辛勤工作!

第二次实验共计两个程序,要求二选一,现在两个题目都做出解答(实验三实验四)如下,供老师批阅!

电子科技大学

实验报告

实验三

学生姓名:

郭小明学号:

2011060100010

一、实验室名称:

主楼A2-412

二、实验项目名称:

串操作及其应用程序的设计与调试运行

三、实验原理:

串操作程序设计基本规范与调试方法;MASM宏汇编开发环境使用方法

循环程序设计与调试方法;分配与使用寄存器的相关方法

五、实验目的:

1、熟悉串操作指令的基本格式和使用方法。

2、掌握常用的串操作程序的设计方法。

3、熟悉串操作程序的调试运行过程

七、实验内容:

编程实现:

编制一程序,从键盘输入两个长度不同的字符串,设字符串长度小于25个字符。

要求在屏幕上以右边对齐的方式显示出来。

六、实验器材(设备、元器件):

PC机,MASM软件平台。

八、实验步骤:

程序说明:

功能:

本程序完成两个字符串的键盘输入并且右对齐输出字符串。

结构:

1、在数据段中设置两个存放显示信息的字符串,一个是提示用户输入,另一个是提示显示信息位置

2、在数据段中设置两个存放输入字符串的缓冲区

3、输入字符串曹勇0AH号DOS功能调用,字符串存入缓冲区时,第二个字节为实际输入字符串的长度,从第三个字节开始为字符串的ASCII码。

4、为了显示右对齐,由于两个字符串缓冲区的长度相同,只需要将两个字符串向缓冲区后面靠齐,再调用09H号DOS功能调用即可达到显示的右对齐。

程序清单:

调试说明:

将汇编语言(.asm文件)翻译为目标代码程序(.obj文件)(MASM.exe);

没有出现错误或者警告,下一步进行链接,连接目标代码程序和库函数代码生成可执行程序文件(.exe文件),(LINK.exe);

我们成功生成了test3.exe.然后输入Debug命令进入调试环境,-是debug命令提示符。

我们进入了debug程序调试环境

现在我们反汇编该程序

下面是单步调试的过程

下面运行该程序:

正如我们所料想的。

我们输入-g调试命令之后,提示输入字符串,在输入两个字符串之后就右对齐的输出了两个字符串。

程序框图:

 

 

结束

九、实验结论:

本实验完成了串操作指令及其应用程序的设计与调试运行实验,学习了汇编语言程序设计过程中的数据输入方法和字符串存储特点,以及利用串操作命令来将缓冲区大小一致的两个字符串右对齐输出。

本次实验很有难度,提升了我们设计复杂汇编程序的能力。

在此感谢指导教师的辛勤指导!

电子科技大学

实验报告

实验四

学生姓名:

郭小明学号:

2011060100010

一、实验室名称:

主楼A2-412

二、实验项目名称:

数制、码制和子程序的编制与调试

三、实验原理:

数制、码制和子程序设计基本规范与调试方法;

MASM宏汇编开发环境使用方法;

循环程序设计与调试方法;

分配与使用寄存器的相关方法

四、实验目的:

1、熟悉子程序设计的基本格式和使用方法。

2、掌握常用的数制码制转换程序的设计方法。

3、熟悉子程序程序的调试运行过程

五、实验内容:

从键盘输入两个2位十进制正数,对这两个正数进行加法运算,结果以十六进制数的形式显示在屏幕上。

六、实验器材(设备、元器件):

PC机,MASM软件平台。

七、实验步骤:

程序说明:

本实验用到了两个子程序,一个是将十进制数转换成二进制数的子程序DTOB,还有就是讲二进制数转换为十六进制数的BTOH。

在程序运行的时候我们首先输入两个十进制数,然后分别转换为二进制数(利用子程序DTOB)之后加法计算出二进制结果然后我们再利用子程序BTOH转出16进制最终结果。

程序清单:

DATASEGMENT

STR1DB3,0,3DUP(?

STR2DB3,0,3DUP(?

TEMPSTRDB?

RESSTRDB0,0,'$'

DATAENDS

STACK1SEGMENTPARASTACK

DW20HDUP(0)

STACK1ENDS

CODESEGMENT

ASSUMECS:

CODE,SS:

STACK1,DS:

DATA

BEGIN:

MOVAX,DATA

MOVDS,AX

LEADX,STR1

MOVAH,0AH

INT21H

LEADX,STR2

MOVAH,0AH

INT21H

CALLDTOB

CALLBTOH

LEADX,RESSTR

MOVAH,9

INT21H

MOVAH,4CH

INT21H

DTOBPROC

PUSHAX

PUSHCX

PUSHDX

MOVAL,STR1+2

SUBAL,30H

MOVDL,10

MULDL

ADDAL,STR1+3

SUBAL,30H

MOVTEMPSTR,AL

MOVAL,STR2+2

SUBAL,30H

MOVDL,10

MULDL

ADDAL,STR2+3

SUBAL,30H

ADDAL,TEMPSTR

MOVTEMPSTR,AL

POPDX

POPCX

POPAX

RET

DTOBENDP

BTOHPROC

PUSHAX

PUSHBX

PUSHCX

PUSHDX

MOVCH,2

MOVDL,TEMPSTR

LEABX,RESSTR

CONV:

MOVCL,4

ROLDL,CL

MOVAL,DL

ANDAL,0FH

CMPAL,09H

JLEASCI

ADDAL,07H

ASCI:

ADDAL,30H

MOV[BX],AL

INCBX

DECCH

JNECONV

POPDX

POPCX

POPBX

POPAX

RET

BTOHENDP

CODEENDS

ENDBEGIN

调试说明:

将汇编语言(.asm文件)翻译为目标代码程序(.obj文件)(MASM.exe);

没有出现错误或者警告,下一步进行链接,连接目标代码程序和库函数代码生成可执行程序文件(.exe文件),(LINK.exe);

我们成功生成了test4.exe.然后输入Debug命令进入调试环境,-是debug命令提示符。

我们进入了debug程序调试环境

现在我们反汇编该程序

下面是单步调试的过程

下面运行该程序:

正如我们所料想的。

我们输入-g调试命令之后,提示输入数据,在输入两个数据10和18之后我们得出了10+18的十六进制结果1E,然后程序结束。

八、实验结论:

本实验完成了数制,码制子程序调试设计及其应用程序的设计与调试运行实验,学习了汇编语言程序设计过程中的数据输入方法和字符串存储特点,以及利用码制转换将两个十进制数相加并以十六进制形式输出。

在此感谢指导教师的辛勤指导!

 

 

 

 

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

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2