


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、汇编实验报告代码(范例)汇编语言程序设计 实验报告 实验名称 上机过程及顺序构造与分支构造程序设计实验 班 级 学 号 姓 名 日 期 成 绩 评 阅 人 软件学院一、 实验目的与意义 1、掌握汇编语言程序设计的根本方法和技能; 2、纯熟掌握使用全屏幕编辑程序 EDIT 编辑汇编语言程序; 3、纯熟掌握宏汇编程序 MASM 的使用; 4、纯熟掌握连接程序 LINK 的使用。5、掌握分支程序的构造 6、掌握分支程序的设计、调试方法 二、 实验环境 上机号:24# 操作系统:dows _p professional sp2 软件环境:Editplus +MASM+LINK+DEBUG 三、 实验的
2、预习内容 汇编程序上机的主要分为编辑,汇编,连接,执行等几个步骤 汇编语言的工作环境 为了运行汇编语言程序磁盘上应该有以下文件:MASM.E_E LINK.E_E CREF.E_E DEBUG. 或 DEBUG.E_E 1、汇编语言程序的汇编过程 汇编语言程序的汇编过程是是利用汇编程序MASM对已编辑好的程序文件.ASM进展汇编,将程序文件中以 ASCII 码表示的助记符指令逐条翻译成机器码指令,并完成程序中的伪指令所指出的各种操作,最后可以建立 3 个文件:扩展名为 .OBJ 的目的文件、扩展名为 .LST 的列表文件和扩展名为 .CRF 的穿插索引文件。目的文件是必须建立的,它包含了程序中
3、所有的机器码指令和伪指令指出的各种有关信息,但该文件中的操作数地址还不是内存的绝对地址,只是一个可浮动的相对地址。列表文件.LST中包含了程序的全部信息(包括注释)和汇编后的目的程序,列表文件可以打印输出,可供调试检查用。穿插索引文件.CRF是用来理解程序中各符号的定义和引用情况的。.LST 和.CRF 两个文件不是必须建立的,可有有无,可以通过汇编时的命令加以选择。在对程序文件(ASM 文件)汇编时,汇编程序将对 ASM 文件进展两遍扫描,假设程序文件中有语法错误,那么完毕汇编,汇编程序将指出程序中存在的错误,这时应返回编辑环境修改程序中的错误,再经过汇编,直到最后得到无错误的目的程序,即
4、OBJ 文件。因此,汇编程序的主要功能可以概括为以下三点:(1) 检查程序中的语法错误,并给出错误信息;(2) 产生目的程序文件(OBJ 文件),并可给出列表文件(.LST文件);(3) 展开宏指令。汇编程序是系统提供的用于汇编的系统软件,目前常用的汇编程序有 公司推出的宏汇编程MASM(MACRO ASSEMBLER)和 BORLAND 公司推出的 TASM(TURBO ASSEMBLER)两种。 公司推出有宏汇编程序 MASM 和小汇编程序 ASM 两种,二者的区别在于:MASM 有宏处理功能,而 ASM 没有宏处理功能,因此,MASM 比 ASM 的功能强大,但 MASM 需要占据较大的
5、内存空间,当内存空间较小时(如 64 KB),只能使用 ASM。2、目的程序的连接过程 汇编后产生的目的程序(OBJ 文件)并不是可执行程序文件(E_E 文件),还不能直接运行,它必须通过连接程序(LINK)连接成一个可执行程序后才能运行。连接程序进展连接时,其输入有两个局部:一是目的文件(.OBJ),目的文件可以是一个也可以是多个,可以是汇编语言经汇编后产生的目的文件,也可以是高级语言(例如 C 语言)经编译后产生的目的文件;另一是库文件(.LIB),库文件是系统中已经建立的,主要是为高级语言提供的。连接后输出两个文件,一是扩展名为 .E_E 的可执行文件,另一个是扩展名为 .MAP 的内存
6、分配文件,它是连接程序的列表文件,又称为连接映像(Link Map),它给出每个段在存储器中的分配情况,该文件可有可无。连接程序给出的“无堆栈段的警告性错误”并不影响程序的运行。所以,到此为止,连接过程已经完毕,可以在操作系统下执行该.E_E 程序了。3、汇编语言和 DOS 操作系统的接口 编写的汇编语言程序是在 DOS 环境下运行时,必须理解汇编语言是如何同 DOS 操作系统接口的。用编辑程序把程序输入到机器中,用汇编程序把它转换为目的程序,用连接程序对其进展连接和定位时,操作系统为每一个用户程序建立了一个程序段前缀区 PSP,其长度为 256 个字节,主要用于存放所要执行程序的有关信息,同
7、时也提供了程序和操作系统的接口。操作系统在程序段前缀的开场处(偏移地址0000H)安排了一条 INT 20H 软中断指令。INT 20H 中断效劳程序由 DOS 提供,执行该效劳程序后,控制就转移到 DOS,即返回到 DOS 管理的状态。因此,用户在组织程序时,必须使程序执行完后能去执行存放于 PSP 开场处的 INT 20H 指令,这样便返回到 DOS,否那么就无法继续键入命令和程序。DOS 在建立了程序段前缀区 PSP 之后,将要执行的程序从磁盘装入内存。在定位程序时,DOS 将代码段置于 PSP 下方,代码段之后是数据段,最后放置堆栈段。内存分配好之后,DOS 就设置段存放器 DS和 E
8、S 的值,以使它们指向 PSP 的开场处,即 INT 20H 的存放地址,同时将 CS 设置为 PSP 后面代码段的段地址,IP 设置为指向代码段中第一条要执行的指令位置,把 SS 设置为指向堆栈的段地址,让 SP 指向堆栈段的栈底,然后系统开场执行用户程序。四、 实验的步骤与调试方法 1、实验步骤图 五、 实验数据与实验结果 1、实验一 ,题目一中 教材 P51 页程序 编辑、连接、单步执行后的输出结果 2、用 E 命令修改结果修改 0B6B:0001 的数据 68 为 32 用 G 命令查看结果查看地址为 0B6B:0010 处的情况 1、 用 A 命令修改程序(修改 ADD 为 SUB)
9、 程序执行 SUB 结果为 实验一,题目二正数、负数、DW、DD 4 个数的存储情况 实验二,顺序构造程序设计实验 十进制输出 十六进制输出 实验三、 分支程序设计实验 1、最后输出结果为 2D 空格,而-1H,-13H,-7H 内存地址为 0000,0001,0002这组数据比拟后的结果就是输出空格 2、程序分配内存连续 可以知道 DATA2 DB 1H,13H,7H DATA3 DB -9H,3H,-8H 这两组数据的地址依次是 0003,0004,0005,0006,0007,0008 所以在 debug 中使用 A 命令进展如下修改 将地址 0003,0004,0005 对应的三个数即
10、是 1H,13H,7H 进展比拟,并输出结果为 2B,如以下图单步执行结果 2B 所对应的即是“+” 继续修改地址为 0006,0007,0008 对应的数为-9H,3H,-8H 可以意料输出结果为空格 下面进入 debug 修改 修改完以后再单步执行输出结果如下 DL,20 就是把空格输出,而题意就是异号的数比拟输出空格 六、 实验用程序清单 实验一,题目 1:;- ;东北大学 20223660 ;- ; 9156571 ;- DSEG SEGMENT ;数据段开场 DATA1 DB 26H,15H ;原始数据 DATA2 DW 0H ;保存结果单元 DSEG ENDS ;数据段完毕 SSE
11、G SEGMENT STACK ;堆栈段开场 SK DB 20 DUP(0) SSEG ENDS ;堆栈段完毕 CSEG SEGMENT ;代码段开场 ASSUME CS:CSEG,DS:DSEG ASSUME SS:SSEG START: MOV A_,DSEG ;初始化数据段基址 MOV DS,A_ MOV A_,SSEG ;初始化堆栈段基址 MOV SS,A_ MOV SP,SIZE SK MOV AL,DATA1 ;取第一个数据 ADD AL,DATA1+1 ;与第二个数相加 MOV BYTE PTR DATA2,AL ;保存完毕 MOV AH,4CH ;返回 DOS INT 21H
12、CSEG ENDS ;代码段完毕 END START ;程序完毕 实验一,题目 2:;- ;东北大学 20223660 ;- ; 9156571 ;- DSEG SEGMENT NUM DB 00H,-8H ASC DW 2022H USR DD 20223660H DSEG ENDS SSEG SEGMENT STACK SK DB 20 DUP(0) SSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG ASSUME SS:SSEG START: MOV A_,DSEG MOV DS,A_ MOV A_,SSEG MOV SS,A_ MOV SP,SI
13、ZE SK MOV AL,NUM MOV AH,NUM+1 MOV C_,ASC MOV AH,4CH INT 21H CSEG ENDS END START 实验二:;- ;东北大学 20223660 ;- ; 9156571 ;- DSEG SEGMENT NUM DB 0,1D,4D,9D,16D,25D,36D,49D,64D,81D DSEG ENDS SSEG SEGMENT STACK SK DB 20 DUP(0) SSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG ASSUME SS:SSEG START: MOV A_,SEG NUM
14、 ;初始化 MOV DS,A_ MOV A_,SSEG MOV SS,A_ MOV SP,SIZE SK MOV B_,OFFSET NUM ;制表 MOV AH,01H ;输入一个数,存在 AL 中 INT 21H SUB AL,"0" ;用 ASCII 减去 _LAT ;获取输出结果存在 AL 中 MOV AH,0 PUSH A_ ;保存 A_ MOV DL,0DH ;输出一个回车换行 MOV AH,02H INT 21H MOV DL,0AH MOV AH,02H INT 21H POP A_ MOV BL,16D ;以 16 进制显示结果 ;MOV BL,10D ;
15、以 10 进制显示结果 DIV BL PUSH A_ MOV DL,AL ;输出高位的数字 ADD DL,30H MOV AH,02H INT 21H POP A_ ;输出低位的数字 MOV DL,AH ADD DL,30H MOV AH,02H INT 21H MOV AH,4CH ;程序退出 INT 21H CSEG ENDS END START 实验三 ;- ;东北大学 20223660 ;- ; 9156571 ;- DSEG SEGMENT DATA1 DB -1H,-13H,-7H DATA2 DB 1H,13H,7H DATA3 DB -9H,3H,-8H DSEG ENDS S
16、SEG SEGMENT STACK SK DB 20 DUP(0) SSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG ASSUME SS:SSEG START: MOV A_,DSEG MOV DS,A_ MOV A_,SSEG MOV SS,A_ MOV SP,SIZE SK MOV AL,DATA1 ;读入所有的数据 MOV AH,DATA1+1 MOV BL,DATA1+2 TEST AL,AL JS NTIVE TEST AH,AH JS NULL TEST BL,BL JS NULL MOV DL,2BH ;输出 “+” +号的 ASCII
17、为 2B JMP MOVE NTIVE: TEST AH,AH JNS NULL TEST BL,BL JNS NULL MOV DL,2DH ;输出“-”-号的 ASCII 为 2D JMP MOVE NULL: MOV DL,20H ;输出空格 “ ”空格的 ASCII 为 20 MOVE: MOV AH,02H ;输出 DL INT 21H MOV AH,4CH INT 21H CSEG ENDS END START 七、 考虑题 1.按照操作顺序写出上机操作的步骤; 2.上机操作的步骤与顺序可以调整吗?为什么? 上机操作的步骤与顺序不可以调整,汇编语言程序设计 只能按照先编辑代码,连接
18、,运行,debug 的顺序,假如调整顺序以后,程序执行会出错。3.写出用 DEBUG 中的 E 命令修改内存单元内容的两种方法; E + address 或者 E address list 4.写出用 DEBUG 中的 A 命令修改指令的方法及应注意的问题; A address Address 指令 需要注意的是 指令后面必须跟操作数 5.总结 DEBUG 中 E、D、U 命令的功能; E 键入 将数据输入到内存中指定的地址。D 转储 显示一定范围内存地址的内容。U 反汇编 反汇编字节并显示相应的原语句,其中包括地址和字节值。反汇编代码看起来象已汇编文件的列表。6.总结 DEBUG 中 P、G
19、、T 命令的功能; P 执行 执行循环、重复的字符串指令、软件中断或子例程;或通过任何其他指令跟踪。G 转向 运行当前在内存中的程序。T 跟踪 从当前段地址开场执行指定的代码数,每执行一次显示所有存放器(包括标志存放器)的值。7.写出数据定义伪指令 DB、DW 和 DD 存储整数的格式; DB 12H DW 1234H DD 12345678H 8.同一个正数分别用 DB、DW 和 DD 定义,存储格式有何变化? 所占用的内存大小不同,DB 为一个字节,DW 为两个字节,DD 为三个字节,高地址存高位,低地址存地位,高位补 0 9.同一个负数分别用 DB、DW 和 DD 定义,存储格式有何变化
20、? 所占用的内存大小不同,DB 为一个字节,DW 为两个字节,DD 为三个字节,高地址存高位,低地址存地位,高位补 F 10.自定义标号分别用 DW 和 DD 定义,存储格式有何变化? DW 存储的是偏移量,占用两个字节;DD 存储的是段存放器与偏移量,占四个字节,高位存段存放器,低位存偏移量。11.DB、DW 和 DD 在定义数据串时有何不同? DB 定义数据串时,每个数据占用一个字节内存单元;DW 定义数据串时,每个数据占用两个字节内存单元;DD 定义数据串时,每个数据占用四个字节内存单元 12.说明十六进制数转换为 ASCII 码的方法; 将 16 进制数除以 16,商与余数分别加上 0 的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030中国白银行业市场发展分析及发展趋势与投资前景报告
- 2025至2030中国男式化妆品行业市场发展现状及发展前景与投资风险报告
- 2025至2030中国甘蔗榨汁机械行业深度研究及发展前景投资评估分析
- 招聘培训课件素材
- 教育心理学在家庭环境中的实践-以培养孩子同理心为例的探索研究
- 教育科技伦理视角下的创新与责任
- 企业教育培训的科技伦理要求及实现途径
- 教育设施与节能环保的完美结合
- 智慧教室中的情绪识别与干预策略研究
- 抖音商户运营经理直播后复盘会议制度
- 抑酸药课件教学课件
- 2024译林版七年级英语上册单词(带音标)
- 期末模拟卷 2024-2025学年人教版数学六年级上册(含答案)
- 脑干神经环路对意识的调控机制解析
- 动火作业应急预案样本(4篇)
- Unit 4 Plants around us(说课稿)-2024-2025学年人教PEP版(2024)英语三年级上册
- 2024集装箱储能系统测试大纲
- 新生儿重症监护室母乳使用专家共识(2024版)解读
- 平安资产管理介绍
- 国开(内蒙古)2024年秋《矿井通风(证书课程)#》形考测试1-3终考答案
- 浙江省教师招聘考初中科学专业知识(试卷)
评论
0/150
提交评论