ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:19.73KB ,
资源ID:11048877      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11048877.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(汇编实验报告代码例文.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

汇编实验报告代码例文.docx

1、汇编实验报告代码例文汇编语言程序设计 实验报告实验名称上机过程及顺序结构与分支结构程序设计实验班级学号姓名日期成绩评阅人软件学院一、 实验目的与意义 1、掌握汇编语言程序设计的基本方法和技能; 2、熟练掌握使用全屏幕编辑程序 EDIT 编辑汇编语言源程序; 3、熟练掌握宏汇编程序 MASM 的使用; 4、熟练掌握连接程序 LINK 的使用。5、掌握分支程序的结构 6、掌握分支程序的设计、调试方法二、 实验环境 上机号24# 操作系统windows xp professional sp2软件环境Editplus +MASM+LINK+DEBUG三、 实验的预习内容 汇编程序上机的主要分为编辑,汇

2、编,连接,执行等几个步骤汇编语言的工作环境为了运行汇编语言程序磁盘上应该有下列文件MASM.EXE LINK.EXE CREF.EXE DEBUG.COM 或 DEBUG.EXE1、汇编语言源程序的汇编过程汇编语言源程序的汇编过程是是利用汇编程序(MASM)对已编辑好的源程序文件(.ASM)进行汇编,将源程序文件中以 ASCII 码表示的助记符指令逐条翻译成机器码指令,并完成源程序中的伪指令所指出的各种操作,最后可以建立 3 个文件扩展名为 .OBJ 的目标文件、扩展名为 .LST 的列表文件和扩展名为 .CRF 的交叉索引文件。目标文件是必须建立的,它包含了程序中所有的机器码指令和伪指令指出

3、的各种有关信息,但该文件中的操作数地址还不是内存的绝对地址,只是一个可浮动的相对地址。列表文件(.LST)中包含了源程序的全部信息(包括注释)和汇编后的目标程序,列表文件可以打印输出,可供调试检查用。交叉索引文件(.CRF)是用来了解源程序中各符号的定义和引用情况的。.LST 和.CRF 两个文件不是必须建立的,可有有无,可以通过汇编时的命令加以选择。在对源程序文件(ASM 文件)汇编时,汇编程序将对 ASM 文件进行两遍扫描,若程序文件中有语法错误,则结束汇编,汇编程序将指出源程序中存在的错误,这时应返回编辑环境修改源程序中的错误,再经过汇编,直到最后得到无错误的目标程序,即 OBJ 文件。

4、因此,汇编程序的主要功能可以概括为以下三点(1) 检查源程序中的语法错误,并给出错误信息;(2) 产生目标程序文件(OBJ 文件),并可给出列表文件(.LST文件);(3) 展开宏指令。汇编程序是系统提供的用于汇编的系统软件,目前常用的汇编程序有 Microsoft 公司推出的宏汇编程MASM(MACRO ASSEMBLER)和 BORLAND 公司推出的 TASM(TURBOASSEMBLER)两种。Microsoft 公司推出有宏汇编程序 MASM 和小汇编程序 ASM 两种,二者的区别在于MASM 有宏处理功能,而 ASM 没有宏处理功能,因此,MASM 比 ASM 的功能强大,但 MA

5、SM 需要占据较大的内存空间,当内存空间较小时(如 64 KB),只能使用 ASM。2、目标程序的连接过程汇编后产生的目标程序(OBJ 文件)并不是可执行程序文件(EXE 文件),还不能直接运行,它必须通过连接程序(LINK)连接成一个可执行程序后才能运行。连接程序进行连接时,其输入有两个部分一是目标文件(.OBJ),目标文件可以是一个也可以是多个,可以是汇编语言经汇编后产生的目标文件,也可以是高级语言(例如 C 语言)经编译后产生的目标文件;另一是库文件(.LIB),库文件是系统中已经建立的,主要是为高级语言提供的。连接后输出两个文件,一是扩展名为 .EXE 的可执行文件,另一个是扩展名为

6、.MAP 的内存分配文件,它是连接程序的列表文件,又称为连接映像(Link Map),它给出每个段在存储器中的分配情况,该文件可有可无。连接程序给出的“无堆栈段的警告性错误”并不影响程序的运行。所以,到此为止,连接过程已经结束,可以在操作系统下执行该.EXE 程序了。3、汇编语言和 DOS 操作系统的接口编写的汇编语言源程序是在 DOS 环境下运行时,必须了解汇编语言是如何同 DOS 操作系统接口的。用编辑程序把源程序输入到机器中,用汇编程序把它转换为目标程序,用连接程序对其进行连接和定位时,操作系统为每一个用户程序建立了一个程序段前缀区 PSP,其长度为 256 个字节,主要用于存放所要执行

7、程序的有关信息,同时也提供了程序和操作系统的接口。操作系统在程序段前缀的开始处(偏移地址H)安排了一条 INT 2H 软中断指令。INT 2H 中断服务程序由 DOS 提供,执行该服务程序后,控制就转移到 DOS,即返回到 DOS 管理的状态。因此,用户在组织程序时,必须使程序执行完后能去执行存放于 PSP 开始处的 INT 2H 指令,这样便返回到 DOS,否则就无法继续键入命令和程序。DOS 在建立了程序段前缀区 PSP 之后,将要执行的程序从磁盘装入内存。在定位程序时,DOS 将代码段置于 PSP 下方,代码段之后是数据段,最后放置堆栈段。内存分配好之后,DOS 就设置段寄存器 DS和

8、ES 的值,以使它们指向 PSP 的开始处,即 INT 2H 的存放地址,同时将 CS 设置为 PSP 后面代码段的段地址,IP 设置为指向代码段中第一条要执行的指令位置,把 SS 设置为指向堆栈的段地址,让 SP 指向堆栈段的栈底,然后系统开始执行用户程序。四、 实验的步骤与调试方法 1、实验步骤图五、 实验数据与实验结果 1、实验一 ,题目一中 教材 P51 页程序 编辑、连接、单步执行后的输出结果2、用 E 命令修改结果(修改 B6B:1 的数据 68 为 32)用 G 命令查看结果(查看地址为 B6B:1 处的情况)1、 用 A 命令修改程序(修改 ADD 为 SUB)程序执行 SUB

9、 结果为实验一,题目二(正数、负数、DW、DD)4 个数的存储情况实验二,顺序结构程序设计实验十进制输出十六进制输出实验三、 分支程序设计实验1、最后输出结果为 2D (空格),而-1H,-13H,-7H (内存地址为 ,1,2)这组数据比较后的结果就是输出空格 2、源程序分配内存连续 可以知道 DATA2 DB1H,13H,7H DATA3 DB-9H,3H,-8H 这两组数据的地址依次是 3,4,5,6,7,8)所以在 debug 中使用 A 命令进行如下修改将地址 3,4,5 对应的三个数即是 1H,13H,7H 进行比较,并输出结果为 2B,如下图单步执行结果2B 所对应的即是“+”

10、继续修改地址为 6,7,8 对应的数为-9H,3H,-8H 可以预料输出结果为空格 下面进入 debug 修改修改完以后再单步执行输出结果如下DL,2 就是把空格输出,而题意就是异号的数比较输出空格六、 实验用程序清单 实验一,题目 1;- ;东北大学 29366 ;- ;QQ 9156571 ;- DSEG SEGMENT;数据段开始 DATA1 DB26H,15H;原始数据 DATA2 DWH;保存结果单元 DSEG ENDS;数据段结束 SSEG SEGMENT STACK;堆栈段开始 SKTOP DB2 DUP() SSEG ENDS;堆栈段结束CSEG SEGMENT;代码段开始AS

11、SUMECS:CSEG,DS:DSEGASSUMESS:SSEGSTART:MOVAX,DSEG;初始化数据段基址MOVDS,AXMOVAX,SSEG;初始化堆栈段基址MOVSS,AXMOVSP,SIZE SKTOPMOVAL,DATA1;取第一个数据ADDAL,DATA1+1;与第二个数相加MOVBYTE PTR DATA2,AL ;保存结束MOVAH,4CH;返回 DOSINT21H CSEG ENDS;代码段结束ENDSTART;源程序结束实验一,题目 2;- ;东北大学 29366 ;- ;QQ 9156571 ;- DSEG SEGMENT NUM DB H,-8HASC DW 21

12、1H USR DD 29366H DSEG ENDSSSEG SEGMENT STACK SKTOP DB 2 DUP() SSEG ENDSCSEG SEGMENTASSUMECS:CSEG,DS:DSEGASSUMESS:SSEGSTART: MOVAX,DSEGMOVDS,AXMOVAX,SSEGMOVSS,AXMOVSP,SIZE SKTOPMOVAL,NUMMOVAH,NUM+1MOVCX,ASCMOVAH,4CHINT21H CSEG ENDSENDSTART实验二;- ;东北大学 29366 ;- ;QQ 9156571 ;- DSEG SEGMENT NUM DB,1D,4D,

13、9D,16D,25D,36D,49D,64D,81D DSEG ENDSSSEG SEGMENT STACK SKTOP DB2 DUP() SSEG ENDSCSEG SEGMENTASSUMECS:CSEG,DS:DSEGASSUMESS:SSEG START:MOVAX,SEG NUM;初始化MOVDS,AXMOVAX,SSEGMOVSS,AXMOVSP,SIZE SKTOPMOVBX,OFFSET NUM;制表MOVAH,1H;输入一个数,存在 AL 中INT21HSUBAL,;用 ASCII 减去XLAT;获取输出结果存在 AL 中MOVAH,PUSHAX;保存 AXMOVDL,DH

14、;输出一个回车换行MOVAH,2HINT21HMOVDL,AHMOVAH,2HINT21HPOPAXMOVBL,16D;以 16 进制显示结果;MOVBL,1D;以 1 进制显示结果DIVBLPUSHAXMOVDL,AL;输出高位的数字ADDDL,3HMOVAH,2HINT21HPOPAX;输出低位的数字MOVDL,AHADDDL,3HMOVAH,2HINT21HMOVAH,4CH;程序退出INT21H CSEG ENDSENDSTART 实验三;-;东北大学 29366 ;- ;QQ 9156571 ;- DSEG SEGMENT DATA1 DB-1H,-13H,-7H DATA2 DB1

15、H,13H,7H DATA3 DB-9H,3H,-8H DSEG ENDS SSEG SEGMENT STACK SKTOP DB2 DUP() SSEG ENDS CSEG SEGMENTASSUMECS:CSEG,DS:DSEGASSUMESS:SSEG START:MOVAX,DSEGMOVDS,AXMOVAX,SSEGMOVSS,AXMOVSP,SIZE SKTOPMOVAL,DATA1;读入所有的数据MOVAH,DATA1+1MOVBL,DATA1+2TESTAL,ALJSNTIVETESTAH,AHJSNULLTESTBL,BLJSNULLMOVDL,2BH;输出 + (+号的 A

16、SCII 为 2B)JMPMOVE NTIVE:TESTAH,AHJNSNULLTESTBL,BLJNSNULLMOVDL,2DH;输出-(-号的 ASCII 为 2D)JMPMOVE NULL:MOVDL,2H;输出空格 (空格的 ASCII 为 2)MOVE:MOVAH,2H;输出 DLINT21HMOVAH,4CHINT21H CSEG ENDSENDSTART七、 思考题 按照操作顺序写出上机操作的步骤; 上机操作的步骤与顺序可以调整吗?为什么? 上机操作的步骤与顺序不可以调整,汇编语言程序设计 只能按照先编辑源代码,连接,运行,debug 的顺序,如果调整顺序以后,程序执行会出错。

17、写出用 DEBUG 中的 E 命令修改内存单元内容的两种方法; E + address或者 E address list 写出用 DEBUG 中的 A 命令修改指令的方法及应注意的问题; A address Address 指令需要注意的是 指令后面必须跟操作数 总结 DEBUG 中 E、D、U 命令的功能; E (键入)将数据输入到内存中指定的地址。D (转储)显示一定范围内存地址的内容。U (反汇编)反汇编字节并显示相应的原语句,其中包括地址和字节值。反汇编代码看起来象已汇编文件的列表。 总结 DEBUG 中 P、G、T 命令的功能; P (执行)执行循环、重复的字符串指令、软件中断或子例

18、程;或通过任何其他指令跟踪。G (转向)运行当前在内存中的程序。T (跟踪)从当前段地址开始执行指定的代码数,每执行一次显示所有寄存器(包括标志寄存器)的值。 写出数据定义伪指令 DB、DW 和 DD 存储整数的格式; DB 12H DW 1234H DD 12345678H 同一个正数分别用 DB、DW 和 DD 定义,存储格式有何变化? 所占用的内存大小不同,DB 为一个字节,DW 为两个字节,DD 为三个字节,高地址存高位,低地址存地位,高位补 同一个负数分别用 DB、DW 和 DD 定义,存储格式有何变化? 所占用的内存大小不同,DB 为一个字节,DW 为两个字节,DD 为三个字节,高

19、地址存高位,低地址存地位,高位补 F 1. 自定义标号分别用 DW 和 DD 定义,存储格式有何变化? DW 存储的是偏移量,占用两个字节;DD 存储的是段寄存器与偏移量,占四个字节,高位存段寄存器,低位存偏移量。1 DB、DW 和 DD 在定义数据串时有何不同? DB 定义数据串时,每个数据占用一个字节内存单元;DW 定义数据串时,每个数据占用两个字节内存单元;DD 定义数据串时,每个数据占用四个字节内存单元 1 说明十六进制数转换为 ASCII 码的方法; 将 16 进制数除以 16,商与余数分别加上 的 ASCII 码,分别输出。1 字符串(例如“Microsoft”)使用什么数据定义伪

20、指令?为什么? 用 DB 定义数据项为 ASCII 常数时,DB 伪指令中可用引号括起任意多个(不超过一个逻辑行)字符,而在其他数据定义伪指令中,只能用引号括起最多 2 个字符。1 顺序结构的程序能有多个出口吗?为什么? 不能。一个顺序程序只能有一个出口。八、 结束语 通过这两次的程序设计实践,学习了汇编程序设计的基本方法和技能,基本操作和设计流程,熟悉掌握使用全屏幕编辑程序EDIT编辑汇编语言源程序,掌握宏汇编程序MASM的使用,掌握连接程序 LINK 的使用,掌握分支程序的结构,掌握分支程序的设计、调试方法。熟悉了汇编语言程序设计中用到的常用命令,如 A,E,U,T 等。实验过程中发现了一

21、些粗心的问题,比如有时候汇编时输入法为中文,结果导致编译不通过,老是有错误。最后在同学的帮助下才发现那个微小的错误。以后的编程过程中一定要注意输入的符号的半角全角状态。九、 参考文献 1、 XX一下你就知道 2、 汇编语言程序设计齐志儒 主编 东北大学出版社出版 3、 XX百科 4、 汇编语言程序设计实验指导书实验成绩考 查内容 分数 得分 做好实验内容的预习,写出预习报告 1了解实验题目的调试方法 1按实验要求预先设计好程序 1认真记录实验数据并分析实验结果 1实验后按要求书写实验报告,记录实验用数据及运行结果 3创新能力强,在实验中设计的程序有一定的通用性,算法优化 2实验过程中,具有严谨的学习态度,认真、踏实、一丝不苟的科学作风 1

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

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