C语言上机实验一.doc_第1页
C语言上机实验一.doc_第2页
C语言上机实验一.doc_第3页
C语言上机实验一.doc_第4页
C语言上机实验一.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

仲恺农业工程学院实验报告纸计算机科学与工程(院、系)计算机专业计机093班 微机原理与接口技术课学号 2009102143 姓名 实验日期 2012-5-16 教师评定 实验一 汇编语言设计内容一 使用 MASM.EXE 和 LINK.EXE一、实验目的1熟悉 MASM.EXE 和 LINK.EXE 的使用方法。2了解 debug 调试工具,观察程序的执行过程和对寄存器和内存单元的影响。二、实验预习要求1按照题目要求在实验前编写好实验中的程序段。三、实验内容1、首先在硬盘上建立一个文件夹,例如:D:MASM,如下图所示。2、下载 MASM.EXE 和 LINK.EXE 到 D:MASM 文件夹里,下图。3、经过以上两步,我们已经做好了准备工作,接下来书写程序。我们的程序要求为,计算 y = a b + c - 18,a、b、c均为带符号的 8 位二进制数据,为了实验观看实验结果,我们假设 a = 34H、b = 56H、c = E7H。程序源代码如下(分号后面内容为注释内容,可以不输入):CC EQU 18 ;伪指令定义 CCSTACK SEGMENT ;堆栈段起始 DW 256 DUP(?) ;在堆栈段中预留了 256 个字的内容 TOP LABEL WORD ;TOP 为栈顶偏移地址STACK ENDS ;堆栈段结束DATA SEGMENT ;数据段起始 DAT1 DB 34H ;DAT1为题中操作属数a,为字节,存于数据段中DAT2 DB 56H ;DAT2 为题中操作书 b,为字节,存于数据段中 DAT3 DB 0E7H ;DAT3 为题中操作书 c,为字节,存于数据段中 DATY DW ? ;DATY为题中计算结果预留空间,为字,存于数据段中DATA ENDS ;数据段结束CODE SEGMENT ;代码段起始 ASSUME CS:CODE,DS:DATA,SS:STACK ;分配段地址对应关系START: MOV AX,DATA ;START为标号,MOV语句将DATA数据段地址送AX MOV DS,AX ;将AX内容送入DS,赋予DS数据段DATA段地址 MOV AX,STACK ;将STACK堆栈段地址送入AX MOV SS,AX ;将AX内容送入SS,赋予SS堆栈段STACK的段地址 MOV SP,OFFSET TOP ;SP设初值 MOV AL,DAT1 ;取 a,直接寻址方式 MOV BL,DAT2 ;取 b,直接寻址方式 IMUL BL ;AX - AL * BL,即将 a * b 的值存入 AX MOV BX,AX ;将 AX 内容保存至 BX MOV AL,DAT3 ;取 c,直接寻址方式 CBW ;由于 c 是8位有符号数,所以做符号扩展至 AH ADD AX,BX ;AX - AX + BX,完成将a*b+c结果存入AX操作 SUB AX,CC ;AX - AX - 18 MOV DATY,AX ;将a*b+c-18的值,存放至数据段中偏移地址DATY的内存中 MOV AH,4CH ;将4CH存入AH,为了下句调用DOS 21号中断 INT 21H ;调用DOS 21中断,由AH=4CH决定返回DOS操作系统CODE ENDS ;代码段结束 END START ;程序结束将以上代码保存为扩展名为.ASM 的文件的方法如下:点击“开始”菜单 “运行”notepad,打开记事本程序,在记事本中输入如上代码,如下图。然后,选择“文件”下拉菜单,选择“令存为”选项打开“另存为”对话框,选择保存位置为“D:MASM”,文件名为“Sample.asm”(一定要注意扩展名必须为.asm或.ASM,大小写无所谓),保存类型为“所有文件”,如下图。4、这时候 D:MASM 文件夹下就有 3 个文件了,分别为“MASM.EXE”、“LINK.EXE”和“SAMPLE.ASM”。将 sample.asm 文件汇编为扩展名为 .obj 的文件,如下图,首先进入 DOS 环境下的 D:MASM 目录,然后使用 MASM SAMPLE.ASM命令。使用 DOS 的 DIR 命令查看当前目录下的文件,已经变为 4 个,多了一个sample.obj 文件,见下图。然后,使用 LINK.EXE,将 SAMPLE.OBJ 文件链接生成可执行文件SAMPLE.EXE,下图。使用 DOS 的 DIR 命令,可以查看到,又多了一个名为 sample.exe 文件,请自行查看。5、这时候,我们可以执行 sample.exe,可以看到执行正常,但是没有任何输出,这是因为,我们只是改变了内存单元和寄存器的数据,并没有输出,所以,我们需要使用 debug 来调试程序,观察程序的执行过程,和对寄存器和内存单元的影响,如下系列图示。第 20 页 共 20 页至此为止,我们的任务已经圆满完成,计算出了 a*b+c-18 的内容(114DH),并存入了相应的内存单元中,请自己结合上例,独自完成。四、实验步骤1、编译源程序生产OBJ文件2、链接OBJ文件生产执行文件3、调试执行文件思考题:在 Debug 过程中,自己可以通过 e 指令修改内存单元内容,使得程序完成a、b、c 不是我们预定内容(34H、56H、E7H)的求解过程。五、实验报告要求1小结 MASM 和 LINK 的使用方法答:首先使用命令行进入存放MASM.EXE和LINK.EXE的文件夹,然后使用MASM编译源程序,格式为MASM 源程序文件名.asm,成功编译完源程序后会生成一个OBJ文件,然后使用LINK链接OBJ文件,格式为LINK 源文件名称.obj,成功链接后会生成一个执行文件。2完成思考题,并写出过程。思考题:在 Debug 过程中,自己可以通过 e 指令修改内存单元内容,使得程序完成a、b、c 不是我们预定内容(34H、56H、E7H)的求解过程。反汇编程序可以看到第一条指令:MOV AX,13DA和第六条指令:MOV AL,0000,由此可知数据段的首地址是13DA:0000;查看内存中13DA:0000地址的内容可以发现a、b、c的值存放的地方。修改a的值为03,b的值为08,c的值为0C,再次查看内存内容,确认修改成功。运行程序,查看内存内容,a*b+c-18=3*8+12-18=18,18的十六进制为12,所以程序运行成功。内容二 Debug 的常用调试命令和方法一、实验目的1熟悉掌握 Debug 的常用调试命令和使用方法。二、实验预习要求1复习实验内容一的内容,按照题目要求在实验前编写好实验中的程序段。三、实验任务1、在 Dos 界面输入命令“debug”(引号不用输入),然后回车(如下图所示),进入 Debug 调试系统。2、如果要查看各寄存器的内容,使用“R”指令(如下图所示)。3、如要修改某寄存器的内容,可以使用指令“r XX”的方法(XX 为某寄存器的名字)。如要将寄存器 AX 的内容修改为 1234。如下图所示。4、接下来,可以尝试更改其他寄存器的内容,比如将 DS 修改为 5A7B。5、反汇编指令“U”,例如下图所示,反汇编自段地址 CS(0B06),IP 为 200开始的连续的 12 条语句。可以自己随便的试一下。6、如果想查看某个内存单元中的内容的话,就需要用到“D”命令了。如下图所示,查看 DS 为段寄存器,偏移地址(有效地址 EA)为 0800 开始的内存单元的内容。(请注意当前 DS 的值)请思考,如何查看以 ES 为段地址,500 位偏移地址的内存单元中的内容呢?答案当然是输入:D ES:0500 了,自己试一下吧。你还可以尝试查看一下其他内存单元的内容。7、我们看到了某个内存单元的值,但是不是我们想要的,例如,看到了 DS:8000的字节内容是 02(上图,0B06:0800 02),而我们需要它为 4A。如何把它改为 4A呢?需要使用一个新的指令-“E”。如下图的修改过程。修改内存单元值就这么简单。那么,接下来尝试查看 ES:0500 的内存单元内容,然后将其修改为 5B,然后修改 ES:0501 的内容为 7C,并检查结果。8、现在到了要写指令的时候了,比如,你想看一下这条语句究竟是如何执行的:MOV AL,05。那么,请看下图所示。9、接下来我们给一个具体的例子,完整演示一个验证过程。例:设 DS=2000H,BX=1000H,AX=8040H,(21000H)=A0H,(21001H)=50H ,执行 MOV AX,BX的结果是?解:这是一个寄存器间接寻址问题,首先求得 EA,EA=BX=1000H;然后求得该有效地址对应的相邻两个字节(一个字)的内存单元的物理地址。物理地址(低)=16 段地址+ EA = 16 DS + EA = 16 2000H + 1000H = 21000H物理地址(高)=16 段地址+ EA + 1 = 16 DS + EA + 1 = 16 2000H + 1001H = 21001H (注意段地址默认为 DS)而由设知(21000H)=A0H,(21001H)=50H所以AL=A0H,AH=50H即AX=50A0H ,那么使用 Debug 验证的过程如下系列图所示:至此,此验证过程就完成了!10、退出 Debug,使用命令“q”。四、实验步骤五、内容二实验报告要求1小结Debug的使用方法答:首先打开命令行窗口,然后输入DEBUG就可以进入DEBUG模式,如果需要调试某一个程序,则需要进入执行文件的文件夹,然后输入DEBUG 执行文件名称.EXE,当完成调试任务时,可以使用Q命令退出并返回操作系统。2验证:DS=6000H,BX=1000H,DATA=0008H,(61008H)=66H,(61009H)=55H,执行 MOV AX,DATABX的结果。首先进入DEBUG模式,然后修改DS的值为6000H,修改BX的值为1000H,修改内存地址61008

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论