收藏 分享(赏)

-《汇编语言程序设计》.doc

上传人:dreamzhangning 文档编号:2727278 上传时间:2018-09-26 格式:DOC 页数:11 大小:280KB
下载 相关 举报
-《汇编语言程序设计》.doc_第1页
第1页 / 共11页
-《汇编语言程序设计》.doc_第2页
第2页 / 共11页
-《汇编语言程序设计》.doc_第3页
第3页 / 共11页
-《汇编语言程序设计》.doc_第4页
第4页 / 共11页
-《汇编语言程序设计》.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

1、汇编语言程序设计实 验 指 导 书徐州师范大学计算机科学与技术学院2009 年 12 月前 言本课程实验教学的目的和任务是使学生通过实践环节深入理解和掌握课堂教学内容,培养学生的动手能力和分析、解决实际问题的能力,使学生在尽量短的时间,通过实验熟练的掌握计算机汇编语言的功能、用法和技巧以及实际编程和调试程序的能力。为后续课程打下坚实基础。实验开始前应做好预习、初步完成代码编制;上机时完成调试、测试;实验结束后认真写出实验报告并给出结果分析。I目 录实验一 汇编语言实验平台及调试工具的应用(2 课时) 1一、实验目的 1二、实验要求 1三、实验内容 1四、课后思考 4实验二 指令系统和寻址方式(

2、2 课时) 5一、实验目的 5二、实验要求 5三、实验内容 5四、课后思考 5实验三 循环与分支程序设计及子程序设计(2 课时) 6一、实验目的 6二、实验要求 6三、实验内容 6四、课后思考 7实验四 高级汇编语言技术和常用 DOS 功能调用(4 课时) 8一、实验目的 8二、实验要求 8三、实验内容 8四、课后思考 8参考文献 .81实验一 汇编语言实验平台及调试工具的应用(2 课时)一、实验目的1掌握 DEBUG 的基本命令及其功能2学习在汇编实验平台下开发程序的基本流程二、实验要求1用汇编语言编写一个计算 1+2+100 的程序并在 MASM 环境下汇编,连接生成可执行文件,然后用 D

3、EBUG 工具跟踪调试。2运用 DEBUG 调试工具跟踪调试此程序,注意寄存器,内存单元内容的变化。三、实验内容第一部分 程序的编辑,汇编,链接及运行用汇编语言编写一个计算 1+2+100 的程序并在 MASM 环境下汇编,连接生成可执行文件,然后用 DEBUG 工具跟踪调试。第二部分 DEBUG 调试工具的运用DEBUG 是专门为汇编语言设计的一种调试工具,它通过进,设置断点等方式为汇编语言程序员提供了非常有效的调试手段。1、DEBUG 程序的启动在 DOS 提示符下,可键入命令:CDEBUGd:path文件名 参数 1参数 2其中文件名是被调试文件的名称,它须是执行文件(EXE) ,两个参

4、数是运行被调试文件时所需要的命令参数,在 DEBUG 程序调入后,出现提示符“-” ,此时,可键入所需的 DEBUG 命令。在启动 DEBUG 时,如果输入了文件名,则 DEBUG 程序把指定文件装入内存。用户可以通过 DEBUG 的命令对指定文件进行修改、显示和执行。如果没有文件名,则是以当前内存的内容工作,或者用命名命令和装入命令把需要的文件装入内存,然后再用DEBUG 的命令进行修改、显示和执行。2、DEBUG 的主要命令(1) 汇编命令 A,格式为:-A地址该命令从指定地址开始允许输入汇编语句,把它们汇编成机器代码相继存放在从指定地址开始的存储器中。(2) 反汇编命令 U,有两种格式:

5、1)-U地址该命令从指定地址开始,反汇编 32 个字节,若地址省略,则从上一个 U 命令的最后一条指令的下一个单元开始显示 32 个字节。22)-U 范围该命令对指定范围的内存单元进行反汇编,例如:-U 04BA:0100 0108 或 U 04BA:0100 L9此二命令是等效的。(3) 运行命令 G,格式为:-G =地址 1地址 2地址 3。 。 。其中地址 1 规定了运行起始地址,后面的若干地址均为断点地址。(4) 追踪命令 T,有两种格式:1)逐条指令追踪:-T=地址该命令从指定地址起执行一条指令后停下来,显示寄存器内容和状态值。2)多条指令追踪:-T=地址值该命令从指定地址起执行 n

6、 条命令后停下来,n 由值确定。(5) 显示内存单元内容的命令 D,格式为:-D地址或-D范围(6) 修改内存单元内容的命令 E,它有两种格式:1)用给定的内容代替指定范围的单元内容:-E 地址 内容表例如:-E 2000:0100 F3 “XYZ” 8D其中 F3, “X”“Y”“Z”和 8D 各占一个字节,用这五个字节代替原内存单元 2000:0100 到 0104 的内容, “X”“Y”“Z”将分别按它们的 ASCII 码值代入。2)逐个单元相继地修改:-E 地址例如:-E 100:18E4:0100 89.78此命令是将原 100 号单元的内容 89 改为 78。78 是程序员键入的。

7、(7) 检查和修改寄存器内容的命令 R,它有三种方式:1)显示 CPU 内部所有寄存器内容和标志位状态;格式为:-RR 命令显示中标志位状态的含义如下表所示:标 志 名 置 位 复 位溢出 Overflow(是/否) OV NV3方向 Direction(减量/增量) DN UP中断 Interrupt(允许/屏蔽) EI DI符号 Sign(负/正) NG PL零 Zero(是/否) ZR NZ辅助进位 Auxiliary Carry(是/否) AC NA奇偶 Parity(偶/奇) PE PO进位 Carry(是/否) CY NC2)显示和修改某个指定寄存器内容,格式为:-R 寄存器名例如

8、打入:-R AX系统将响应如下:AX FIF4:表示 AX 当前内容为 F1F4,此时若不对其作修改,可按 ENTER 键,否则,打入修改后内容,如:-R BXBX 0369:059F则 BX 内容由 0369 改为 059F3)显示和修改标志位状态,命令格式为:-RF系统将给出响应,如OV DN EI NG ZR AC PE CY-这时若不作修改可按 ENTER 键,否则在“-”号之后键入修改值,键入顺序任意。如OV DN EI NG ZR AC PE CY-PONZDINV(8) 命名命令 N,格式为:-N 文件名此命令将文件名格式化在 CS:5CH 的文件控制块内,以便使用 L 或 W

9、命令把文件装入内存进行调试或者存盘。(9) 装入命令 L,它有两种功能:1)把磁盘上指定扇区的内容装入到内存指定地址起始的单元中,格式为:-L 地址 驱动器 扇区号 扇区数2)装入指定文件,格式为:4-L 地址此命令装入已在 CS:5CH 中格式化的文件控制块所指定的文件。在用 L 命令前,BX 和 CX 中应包含所读文件的字节数。(10)写命令 W,有两种格式:1)把数据写入磁盘的指定扇区:-W 地址 驱动器 扇区号 扇区数2)把数据写入指定文件中:-W 地址此命令把指定内存区域中的数据写入由 CS:5CH 处的 FCB 所规定的文件中。在用 W 命令前,BX 和 CX 中应包含要写入文件的

10、字节数。(11)退出 DEBUG 命令 Q,该命令格式为Q它退出 DEBUG 程序,返回 DOS,但该命令本身并不把在内存中的文件存盘,如需存盘,应在执行 Q 命令前先执行写命令 W。四、课后思考编写出源程序,并说明调试中遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。5实验二 指令系统和寻址方式(2 课时)一、实验目的1学习数据传送和算术运算指令的用法2熟悉在 PC 机上编辑、汇编、连接、调试和运行汇编语言程序的过程。二、实验要求将两个多位十进制数相加,要求被加数和加数均以 ASCII 码形式各自顺序存放在 DATA1 和 DATA2 为首的 5 个内存单元中,结果

11、送回 DATA1 处。三、实验内容1编辑源程序,建立一个以后缀为 ASM 的文件。 (参照图 1 编写源程序)2汇编源程序,检查程序有否错误,有错时回到编辑状态,修改程序中错误行。无错时继续第 3 步。3连接目标程序,产生可执行程序。4DEBUG 调试可执行程序,记录数据段的内容。 图 1 两个多位十进制相加程序流程图四、课后思考1编写出源程序,并思考将上述程序改为 5 位数相加,结果为 6 位数的加法程序。(需考虑进位)2简单叙述上机步骤,调试方法。6实验三 循环与分支程序设计及子程序设计(2 课时)一、实验目的1掌握循环程序的设计方法2掌握主程序与子程序之间的调用关系及调用方法。3掌握子程

12、序调用过程中近程调用与远程调用的区别。4掌握通过堆栈转送参数的方法。二、实验要求1 编写一个程序,记录某个字存储单元数据中 1 的个数,以十进制形式显示结果。2 将 BUF 开始的 10 个单元中的二进制数转换成两位十六进制数的 ASCII 码,在屏幕上显示出来。要求码型转换通过子程序 HEXAC 实现,在转换过程中,通过子程序DISP 实现显示。三、实验内容1.部分参考程序段清单:Statistic.ASM;数据段number dw 1110111111100100B;代码段mov bx,numberxor dl,dl ;循环初值:DL0again: test bx,0ffffh ;也可以用

13、 cmp bx,0jz done;全部是 0 就可以退出循环,减少循环次数shl bx,1 ;用指令 shr bx,1 也可以adc dl,0;利用 ADC 指令加 CF 的特点进行计数jmp againdone: cmp dl,10 ;判断 1 的个数是否小于 10jb digit ;1 的个数小于 10,转移push dxmov dl,1 ;1 的个数大于或等于 10mov ah,2 ;则要先显示一个 1int 21hpop dxsub dl,10digit: add dl,0 ;显示个数mov ah,2int 21hConv.ASMDATA SEGMENT7BUF DB 0ABH,0CD

14、H,0DEH,01H,02H,03HDB 3AH,4BH,5CH,6FHDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV CX,10LEA BX,BUFAGAIN: MOV AL, BXCALL HEXASCINC BXLOOP AGAINMOV AH,4CHINT 21HHEXASC PROC NEARMOV DL,ALPUSH CXMOV CL,4SHR DL,CLPOP CXCALL DISP ;显示高位 HEX 数MOV DL,ALAND DL,0FHCALL DISPRETHEXASC

15、ENDPDISP PROP CMP DL,9JBE NEXTADD DL,7NEXT: ADD DL,30HMOV AH,2INT 21H ;显示RET DISP ENDPCODE ENDSEND START2.参考上面给出的部分源程序,画出程序流程图,编写程序,并调试运行。四、课后思考思考 BCD 编码和二进制的不同,特别是做加法和减法运算时有何区别?8实验四 高级汇编语言技术和常用 DOS 功能调用(4 课时)一、实验目的1掌握分支、循环、子程序调用、DOS 功能调用等基本的程序结构。2掌握综合程序的编制及调试方法。二、实验要求设有十个学生成绩分别是 76,69,84,90,73,88,9

16、9,63,100 和 80 分。试编制一个子程序,将分数分等并统计低于 60 分(不及格) ,6069 分(合格) ,7079分(中等) ,8089 分(良好) ,90100 分(优秀)的人数,并输出显示统计结果。三、实验内容1画出程序流程图。2成绩分等部分采用分支结构,统计所有成绩则用循环结构完成,显示统计结果采用 DOS 功能调用。3统计学生成绩和显示统计结果两部分内容用子程序结构来完成。4学生成绩要求键盘输入,键盘输入采用 DOS 调用。5写出源程序清单和执行结果。四、课后思考DOS 功能调用的场合;DOS 功能调用与 BIOS 功能调用的区别。 参考文献1 沈美明,IBM PC 汇编语言程序设计(第 2 版) ,北京:清华大学出版社,2001 年8 月。2 宋锦河,汇编语言程序设计,北京:中国水利出版社,2001 年 8 月。3 张君等, 80X86 汇编语言程序设计,大连:大连理工大学出版社,2000 年 8 月。4 钱晓捷,汇编语言程序设计,北京:电子工业出版社,2000 年 9 月。5 马瑞芳,汇编语言程序设计典型题解析及自测试题,西安:西北工业大学出版社,2002 年 3 月。

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

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报