《汇编语言实验讲义》由会员分享,可在线阅读,更多相关《汇编语言实验讲义(41页珍藏版)》请在金锄头文库上搜索。
1、汇编语言程序设计实验讲义目 录实验的基本要求1实验技术及原理2实验一、DEBUG调试程序的使用3实验二 熟悉指令系统11实验三 建立运行汇编语言程序12实验四 循环程序设计13实验五 分支程序设计14实验六 子程序设计15实验七 宏的定义和使用17实验八 I/O程序设计18附1 实验报告示例19附2 DOS功能调用23附3 BIOS中断30附4 汇编程序出错信息34实验的基本要求1上机前要作充分准备,根据实验要求和实验内容画出程序框图、编写源程序、对运行结果进行分析等。2上机时要遵守实验室的规章制度,爱护实验设备。要熟悉与实验有关的系统软件(如编辑程序、汇编程序、连接程序和调试程序等)的使用方
2、法。在程序的调试过程中,有意识地学习及掌握debug的各种操作命令,以便掌握程序的调试方法及技巧。为了更好地进行上机管理,最好用可移动磁盘存储程序,并建立和使用子目录,子目录名为自己的姓名(汉字),以避免文件被别人删除。要求实验者按以下形式命名实验文件:姓名拼音字母简称序号.扩展名。其中字母取AZ的26个英文字母。如张三峰同学的第二个实验中第一个程序所对应的文件名应为ZSF21.asm。实验结束后应提交源程序。3程序调试完成后,应主动请实验指导教师在机器上检查运行结果;每个实验完成后,应写出实验报告。实验技术及原理该实验指导书主要目标是使学生通过实验学习汇编语言程序设计的基本方法和技能,熟练掌
3、握用汇编语言设计、编写、调试和运行程序的方法。为后续课程打下坚实基础。用于汇编语言的编程工具主要有编辑程序、汇编程序、连接程序和调试程序。1、在文本编辑程序(如:EDIT或记事本等)的帮助下,用户通过键盘输入汇编语言的源程序,对源程序进行编辑、修改,并把源程序作为文件保存在磁盘上。2、汇编程序用于将用户编写的源程序文件翻译成机器语言文件。其主要功能是:(1)检查源程序文件;(2)检测源程序中的语法错误并给出错误信息;(3)产生源程序的目标文件(后缀为.OBJ);若需要的话,也同时给出列表文件(后缀为.LST的汇编语言和机器语言对照文件);(4)展开宏指令。目前IBM PC系列机使用的汇编程序有
4、两种:一种是Microsoft公司研制的宏汇编程序MASM;另一种是Borland公司研制的Turbo系列汇编程序TASM。这两种汇编程序基本相同。3、连接程序。汇编语言程序经过汇编后生成目标文件,但是这个目标文件中的地址是“浮动”的,它只是一种逻辑地址,所以称为浮动二进制文件(.OBJ)。连接程序的功能是将浮动二进制文件中逻辑地址转变成能够在计算机上直接运行的物理地址,即浮动二进制文件只有经过连接程序的连接装配后才能成为可以在计算机上直接执行的文件(.EXE)。注意,与MASM配合使用的连接程序是LINK,而与TASM配合使用连接程序是TLINK。4、调试程序。调试程序DEBUG主要用于程序
5、的调试。它可调试运行一个可执行文件(.EXE或.COM)。由于汇编和连接过程只能查出源程序中的语法错误以及生成可执行文件,而无法查出程序的算法是否有错或者不完善。只有通过DEBUG程序调试可执行文件,逐段甚至逐条指令地调试执行,从中观察是否达到预期的功能或得出预期的结果,特别是转移指令是否按设想进行转向等,从而发现程序在设计上的缺陷和错误。该实验课程的实验步骤通常为: 1、编辑源程序2、汇编:MASM ;3、连接:LINK ;3、调试与执行:DEBUG 4、结果分析实验一、DEBUG调试程序的使用一、实验目的1、掌握DEBUG中基本命令(D、E、R、G、A、T、P、U、N、L、W、Q)的用法;
6、2、掌握用DEBUG加载和调试程序的方法。二、实验仪器、设备及材料 1、硬件环境:PC系列微机2、软件环境:编辑软件: EDIT等。宏汇编程序:MASM或TASM等。连接程序:LINK或TLINK等。调试程序:DEBUG或Turbo Debugger(简称TD)等。操作系统:MSDOS或WINDOWS 9X或WINDOWS XP等。三、预备知识DEBUG程序是MSDOS提供的工具软件,它在DOS支持下可用来调试或修改汇编语言目标程序。对高级语言的源程序,经过编译、连接后,也可以利用该软件工具进行动态调试,逐段执行程序,观察在CPU的寄存器中或内存中能否得到预期的结果,从而发现程序语句编排上的错
7、误。此外,该软件工具对程序分析、加密解密等工作也有很大的帮助。1、 DEBUG的启动在DOS提示符或WINDOWS的命令提示符下找到并进入DEBUG.EXE所在的文件夹,然后键入DEBUG 仅启动DEBUG,不装载任何文件 或 DEBUG | 启动DEBUG并装载指定的文件到内存2、 查看或修改寄存器的内容Rl 查看所有寄存器的内容在“-”提示符下键入“R”,即可显示所有寄存器的内容及下一条将要执行的指令。l 修改指定寄存器的内容在“-”提示符下键入 R 即可显示出指定寄存器的内容和一个冒号,然后在冒号后输入新的内容就可改变该寄存器的内容,若不需修改,则直接回车。如:-R AXAX 0000:
8、l 修改标志寄存器中的标志位如果要显示或修改标志寄存器中的某一个或几个标志位的值,可先键入“R F”,然后在短线后输入一个或多个更改后的标志位的双字母值,相互之间可用空格分开,也可不分开,且与各标志位的顺序无关。如-R FNV UP EI PL NZ NA PE NC -DN OV PO-8个标志位的双字母值及其含义如下表所示:标志名标志为1标志为0溢出(是/否)OVNV方向(减量/增量)DNUP中断(允许/关闭)ETDT符号(负/正)NGPL零(是/否)ZRNZ辅助进位(是/否)ACNC奇偶(偶/奇)PEPO进位(是/否)CVNC3、 显示内存单元的内容D格式:D address 或 D r
9、ange功能:显示指定地址或地址范围的内存单元的内容。说明:address表示内存地址(段基址:偏移量或偏移量),range表示地址范围(段基址:偏移量1 偏移量2 或 偏移量1 偏移量2,偏移量2前不能有段基址);若省略address或range,则从默认地址或接着上次的显示。段基址可以是具体的十六进制值,也可以是某一段寄存器名,如果省略段基址,则认为段基址在DS寄存器中。显示的内容分三部分:左边的是地址部分,表示此行的首地址(段基址:偏移址);中间是存储器内容的16进制数表示,每个单元的内容均为两位16进制数;右边是存储器内容的ASCII码符号,不可显示的ASCII码以圆点(.)表示。每行
10、显示16个字节单元的内容,不加范围时每次显示8行,每行的第8、9字节间有一连字符(-)。举例:-D 第一次从默认地址100H单元开始显示。0AFB:0100 80 3E D1 96 00 74 48 8B-1E 13 99 83 FB 00 7E 33 .tH.30AFB:0110 8B 0E E1 99 8B 16 DF 99-8B C1 0B C2 34 00 EA 0A .4.0AFB:0120 42 CD 21 33 C9 B4 40 CD-21 80 3E E3 99 00 74 08 B.!3.!.t.0AFB:0130 41 BA E3 99 B4 40 CD 21-B4 3E
11、CD 21 E9 6A FA B4 A.!.!.j.0AFB:0140 3E CD 21 BA BC 98 B4 41-CD 21 C6 06 D1 96 00 E9 .!.A.!.0AFB:0150 57 FA E9 AE FE 24 0C 7A-10 50 24 08 A2 D4 99 58 W.$.z.P$.X0AFB:0160 24 04 A2 D8 99 08 06 D2-99 A0 D8 99 0A C0 C3 80 $.0AFB:0170 3E B7 98 FF 75 0C BF E1-94 BD B7 98 E8 11 01 E8 .u.-D 继续使用则接着前一次的显示0AFB
12、:0180 74 E4 32 C0 86 06 16 99-0A C0 75 03 E9 8C 00 8B t.2.u.0AFB:0190 36 B9 98 BF 76 97 B8 00-29 CD 21 80 3C 00 74 06 6.v.).!.0AFB:01D0 99 00 74 08 FE 06 17 99-32 C0 EB 06 34 02 22 C4 .t.2.4.0AFB:01E0 D0 E8 0A 06 D9 99 A2 C7-96 D0 E0 D0 E0 A2 D2 99 .0AFB:01F0 80 3E D4 99 00 75 24 A2-D8 99 0A C9 75 1
13、D 0A C0 .u$.u.-D 400 显示指定地址(仅指定偏移量)开始的内存单元内容0AFB:0400 82 93 B4 60 CD 21 BE 2B-93 BF 82 93 E8 93 E3 C3 .!.+.0AFB:0410 33 C0 89 3E E6 99 A2 E9-99 A2 EA 99 8A F8 9C 57 3.W0AFB:0420 33 C9 88 0E 15 98 AC E8-3B E3 75 1D 3C 20 74 F6 3.;.u. t.0AFB:0430 3C 09 74 F2 86 06 EA 99-0A C0 74 EA F6 C7 80 74 .t.t.t0AFB:0440 05 C6 06 15 98 01 E9 2D-01 3A C3 75 05 80 CF 80 .-.:.u.0AFB:0450 EB D4 3C 0D 75 03 E9 18-01 3A 06 B6 96 75 03 E9 .u.:.u.0AFB:0460 17 01 B2 3A 38 14 75 1D-80 3E A4 98 01 75 03 E8 .: