简化《汇编语言程序设计》实验指导书定稿_第1页
简化《汇编语言程序设计》实验指导书定稿_第2页
简化《汇编语言程序设计》实验指导书定稿_第3页
简化《汇编语言程序设计》实验指导书定稿_第4页
简化《汇编语言程序设计》实验指导书定稿_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1、重庆工学院 汇编语言程序设计实验指导书汇编语言程序设计实验指导书(第一版)邵桂芳 黄贤英 刘政 肖朝晖编重庆工学院计算机学院2006年10月目 录有关汇编语言3实验一 汇编语言上机操作过程(验证性实验)4实验二 DEBUG的使用(验证性实验)12实验三 基本运算程序设计(设计性实验)22实验四 顺序程序设计(设计性实验)28实验五 字符处理程序设计(设计性实验)32实验六 分支程序设计(设计性实验)35实验七 循环程序设计(设计性实验)40实验八 子程序设计(设计性实验)45实验九 中断程序设计(设计性实验)58实验十 磁盘文件管理(设计性实验)66实验十一 输入输出程序设计(综合性实验)70

2、实验十二 图形显示程序设计(综合性实验)77附录1 实验报告编写方法96附录2 汇编语言基本指令982.1 数据传送类指令982.2 算术运算类指令1002.3 逻辑操作类指令1032.4 串操作类指令1052.5 控制转移类指令1072.6 处理机控制类指令110附录3 测试题1113.1 测试题一1113.2 测试题二1153.3 测试题三1193.4 测试题四1243.5 参考答案127使用范围:全院电子信息类、管理类等本、专科采用使用说明:任课教师根据教学进程,可以选择实验内容,实验九以后的内容,可以作为课程设计内容。每个实验都安排了预备知识,是帮助学生做好实验准备的,请任课教师在实验

3、课前,安排学生预习该内容,以提高实验效果。有关汇编语言1什么是汇编语言汇编语言是一种符号化的机器语言,即用助记符号代替机器语言的二进制代码。简单地说,汇编语言就是机器语言的一种可以被人读懂的形式,只不过它更容易记忆。汇编语言是除了机器语言之外最接近计算机硬件的编程语言,因此,它可以最大限度地发挥计算机硬件的性能。用汇编语言编写的程序的速度通常要比高级语言和C/C+快很多-几倍,几十倍,甚至成百上千倍。当然,解释语言,如解释型LISP,没有采用JIT技术的Java虚机中运行的Java等等,其程序速度更无法与汇编语言程序同日而语。2学习汇编的好处通过学习汇编语言,可以了解到如何有效地设计数据结构,

4、让计算机处理得更快,并使用更少的存储空间;同时,学习汇编语言可以让你熟悉计算机内部运行机制,并且有效地提高调试能力。因为“结构化”是以牺牲运行效率来提高可读性与可调试性,这对于完成一般软件工程的编码阶段是非常必要的。然而,在一些地方,比如,硬件驱动程序、操作系统底层,或者程序中经常需要执行的代码,结构化程序设计的这些优点有时就会被它的低效率所抹煞。3汇编语言的特点(1)汇编语言与处理器密切相关; (2)汇编语言程序效率高;(3)编写汇编语言源程序比编写高级语言源程序烦琐; (4)调试汇编语言程序比调试高级语言程序困难。 4汇编语言的应用(1)程序执行占用较短的时间,或者占用较小存储容量的场合;

5、 (2)程序与计算机硬件密切相关,程序直接控制硬件的场合; (3)需提高大型软件性能的场合; (4)没有合适的高级语言的场合。 实验一 汇编语言上机操作过程(验证性实验)一、实验要求和目的1了解汇编语言程序设计的编程环境;2熟悉Windows下汇编语言程序设计的操作流程;3掌握编辑、汇编、连接等应用程序的使用方法。二、环境和设备1硬件环境:微机CPU 486以上,500MB以上硬盘,32M以上内存;2软件环境:装有MASM 5.0、DEBUG、LINK和EDIT等应用程序。三、实验学时2学时四、预备知识1汇编语言上机操作流程汇编语言上机操作过程如图1-1所示,包括建立源程序、汇编成目标文件、连

6、接成可执行文件、执行程序、调试程序等。EDITMASM*.ASM*.OBJLINK*.EXEDEBUG执行*.LST*.CRF*.MAP建立图1-1 汇编语言上机操作流程基于Windows的汇编语言上机操作步骤如下:(1)安装MASM 5.0、DEBUG、LINK和EDIT等应用程序方法为先在某个盘符下建立名为masm5的文件夹,然后下载这几个应用程序到该文件夹。如图1-2所示,在E盘下建立名为masm5的文件夹,该文件夹下有包括masm等在内的6个应用程序。图1-2 安装应用程序(2)打开命令提示符窗口方法为:选择“开始程序附件命令提示符”。(3)进入包含汇编语言应用程序的文件夹方法为:在命

7、令提示符窗口输入相应盘符,加冒号,然后回车,则进入相应盘符,如输入“E:”。然后,利用CD命令进入某个文件夹,如输入“CD MASM5”,则可以进入masm5文件夹。如图1-3所示。E:MASM5Microsoft Windows XP 版本 5.1.2600版权所有 1985-2001 Microsoft Corp.C:Documents and SettingsAdministratore:E:cd masm5E:MASM5cd masm系统找不到指定的路径版本信息进入某个磁盘利用CD命令进入文件夹如果还有子目录,则再利用CD进入下一级目录图1-3 DOS命令使用(4)利用EDIT编辑源程

8、序方法为:在命令提示符窗口的相应文件夹下,输入EDIT *.ASM,进入EDIT编辑界面,输入源程序,然后保存,退出EDIT。如图1-4所示。图1-4 EDIT编辑源程序(5)利用MASM进行汇编方法为:在命令提示符窗口的相应文件夹下,输入MASM *.ASM,回车,然后按提示进行回车确认即可,汇编结束后,显示错误提示信息,没有错误则进入(6),有错误则回到(4)进行修改。(6)利用LINK进行连接方法为:在命令提示符窗口的相应文件夹下,输入LINK *.OBJ,回车,确认即可。(7)运行程序方法为:在命令提示符窗口的相应文件夹下,输入文件名,回车即可。(8)利用DEBUG调试程序方法为:在命

9、令提示符窗口的相应文件夹下,输入DEBUG *.EXE,进入DEBUG调试窗口。2EDIT应用程序的使用(1)进入EDIT方法为:在命令提示符窗口的当前目录下(即包含汇编应用程序的文件夹下,如E:MASM5),输入“EDIT *.ASM”,则进入EDIT编辑界面。如果*.ASM已经存在,则在屏幕上显示该源程序内容,如果是新建文件,则打开空的编辑界面。如图1-5所示。(2)文本输入在EDIT编辑界面中,可以通过键盘一行行的输入语句,也可以在任意位置输入相关信息。(3)文本修改先利用上下左右键(“ ”)将光标移动到要修改的位置,然后利用删除键或回格键删除单个字符。如果想删除整行文本,可将光标移动到

10、该行任意位置,然后按住“SHIFT+”就可以选中该行。如果想选中多行,则一直按住SHIFT键,不断按键就可以。图1-5 EDIT编辑界面(4)保存源程序如果源程序编辑完毕,则可利用“ALT+F”选中文件菜单,然后利用“、”键选择Save或Save As保存源程序。(5)退出EDIT利用“ALT+F”选中文件菜单,然后利用键即可选中Eixt退出,回车确认即可。3MASM应用程序的使用利用EDIT编好源程序后,保存并退出EDIT,返回到命令提示符窗口,此时可以利用汇编程序MASM来完成程序的编译。由于计算机只能识别0、1二进制数据,而汇编语言源程序是由助记符表示的指令序列,计算机不能直接识别,故需

11、要进行编译,将其转换为机器程序。MASM就是用来把汇编源程序转换为机器语言程序的工具。(1)汇编操作在命令提示符窗口的相应目录下,输入“MASM *.ASM”,则显示MASM版本信息,然后依次出现提示,请求用户回答。如图1-6所示。Microsoft Macro Assembler Version 5.00Copyright Microsoft Corp 1981-1985,1987. All rights reservedObject filename m1.OBJ:m1.asm:error A2105:Expected:instruction or directiveE:MASM5masm

12、 m1.asmSource listing NUL.LST:Cross-reference NUL.CRF:m1.asm:error A2009:Symbol not defined:CODEm1.asm:error A2024:Segment parameters are changedm1.asm:error A2086:Data emitted with no segmentm1.asm:error A2009:Symbol not defined:ASm1.asm:error A2086:Data emitted with no segmentm1.asm:error A2086:Da

13、ta emitted with no segment50392+415144 Bytes symbol space free0 Warning Errors7 Severe ErrorsE:MASM5目标文件列表文件交叉索引文件错误提示信息MASM版本信息错误出现的行数图1-6 MASM的使用(2)目标文件的确认在版本信息下,有“Object filename *.OBJ:”提示信息,其中“*”自动采用源程序名称,该信息提示用户是否确认目标文件的名字,如果采用这个名称则按回车键,不采用则重新输入新名字。(3)列表文件的确认在确认了目标文件名后,则显示“Source listing NUL.LS

14、T:”信息,该信息表示不建立列表文件,如果用户不想建立列表文件,则回车确认;如果想建立列表文件,则输入列表文件名(一般与源程序同名),回车。列表文件包含了源程序及其注释、地址和目标码等,是ASCII码表示的文本块,可用TYPE命令显示。列表文件内容如图1-7所示。(4)交叉索引文件的确认在确认了列表文件后,则显示“Cross-reference NUL.CRF:”信息,该信息表示不建立交叉索引文件,如果用户不想建立交叉索引文件,则回车确认;否则,输入文件名,回车。交叉索引文件是用来解释源程序中每个符号是在哪定义的,哪些指令用了这个符号等信息的。(5)错误提示在确认了(2)、(3)和(4)的信息

15、后,如果源程序有语法错误,会给出错误提示信息,错误提示信息是以行为单位给出的,如图1-6所示,给出了第4-14行的错误提示,此时需要返回EDIT进行源程序修改。图1-7 列表文件内容4LINK应用程序的使用在对源程序的语法错误进行修改后,利用MASM汇编源程序没有错误时,则需要利用LINK进行连接。(1)连接操作在命令提示符窗口的相应目录下,输入“LINK *.OBJ”,则显示LINK版本信息,然后依次出现提示,请求用户回答。如图1-8所示。(2)可执行文件的确认在版本信息下,有“Run File *.EXE:”提示信息,其中“*”自动采用源程序名称,该信息提示用户是否确认可执行文件的名字,如

16、果采用这个名称则按回车键,不采用则重新输入新名字。Microsoft Macro Assembler Version 5.00Copyright Microsoft Corp 1981-1985,1987. All rights reservedObject filename m1.OBJ:E:MASM5link m1.objSource listing NUL.LST:Cross-reference NUL.CRF:50390+415146 Bytes symbol space free0 Warning Errors0 Severe ErrorsE:MASM5_目标文件列表文件交叉索引文件

17、LINK版本信息Microsoft Overlay Linker Version 3.60Copyright Microsoft Corp 1983-1987. All rights reserved.Run File M1.EXE:List File NUL.MAP:Libraries .LIB:LINK:warning L4021:no stack segment连接目标文件提示源程序中没有定义堆栈产生可执行文件映象文件是否连接库文件汇编无错误图1-8 LINK连接目标文件(3)确认映象文件在确认了可执行文件名后,则显示“List file NUL.MAP:”信息,该信息表示不建立映象文件

18、,如果用户不想建立映象文件,则回车确认;如果想建立,则输入映象文件名(一般与源程序同名),回车。映象文件主要对段分配情况进行说明,如段的起始、终止地址、段长度、段名等。(4)确认库文件的连接库文件是经常使用的目标文件集合,主要是为了提高效率以及调试方便而建立的。如果需要文件库中的某些目标文件时,则在“Libraries .LIB”后给出库的名称或路径。5运行程序利用LINK对目标文件进行连接后,会产生后缀名为EXE的可执行文件,此时可以在命令提示符窗口直接输入该文件名,回车运行该程序。五、实验内容与步骤以显示“hello world!”的汇编语言源程序MYFILE.ASM为例练习汇编语言程序设

19、计操作流程。源程序如下:data segmentstring db hello world!$;数据定义data endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax lea dx,string;显示字符串 mov ah,9 int 21h mov ah,4ch int 21hcode ends end start(1)打开命令提示符窗口,进入包含汇编应用程序的相应文件夹。(2)利用EDIT编辑源程序MYFILE.ASM,方法为输入“EDIT MYFILE.ASM”,进入EDIT操作界面,然后输入上述源程序,保存

20、并退出EDIT。(3)利用MASM汇编源程序,方法为“MASM MYFILE.ASM”,如果有错误则返回(2)进行修改,没有错误则进入(4)。(4)利用LINK连接目标程序,方法为“LINK MYFILE.OBJ”。(5)执行可执行文件,方法为“MYFILE.EXE”回车即可,此时屏幕上会显示出“hello world!”字样。六、思考题1如何在汇编语言源程序中输入中文注释?2如何实现多个目标文件的连接?实验二 DEBUG的使用(验证性实验)一、实验要求和目的1了解DEBUG的使用方法;2熟悉DEBUG基本命令;3掌握利用DEBUG查看程序运行结果的方法。二、环境和设备1硬件环境:微机CPU

21、486以上,500MB以上硬盘,32M以上内存;2软件环境:装有MASM 5.0、DEBUG、LINK和EDIT等应用程序。三、实验学时2学时四、预备知识1进入DEBUG在编辑好源程序,汇编连接后,产生可执行文件,如果运行结果不符合要求或者没有直接显示结果,可以利用DEBUG进行查看或调试。进入DEBUG的方法是:DEBUG *.EXE或直接输入DEBUG2程序的调入在DEBUG下调入程序的方法有两种,第一种是在进入DEBUG时直接调入,即在对源程序进行汇编、连接产生可执行文件后,在命令提示符窗口输入“DEBUG *.EXE”。第二种是在DEBUG下通过N和L命令调入,方法为先利用N命令指定要

22、调试的程序名称,然后再利用L命令将其装载到指定区域。N命令的使用方法为:“N *.EXE”,表示将该程序分配到CS:5C开始的区域中。L命令的使用方法为:“L”。表示将N命令指定的文件调入内存指定区域。3U命令的使用U为反汇编命令,即将存储器内容翻译成汇编语言语句并显示其对应的地址、机器数和操作数等。如图2-1所示。U命令有三种使用方法:(1)第一种为“U”,初次使用时显示从偏移地址0开始的若干条指令,再次使用则接着上次显示的偏移地址的指令开始显示后续指令;(2)第二种用法为“U 地址”,如“U 13”表示显示从偏移地址0013开始的指令序列;(3)第三种方法为“U 范围”,如“U 0 13”

23、,表示显示从偏移地址0-13的指令。图2-1 U命令的使用4D命令的使用D命令为显示内存数据指令。可以查看存储器数据,其使用方法有如下几种,如图2-2所示:(1)D 段地址:偏移地址这种使用方法主要是查看某个规定段从偏移地址开始的数据内容。例如,(DS)=2000H,想看数据段从偏移地址0开始的数据,就在DEBUG下输入“D 2000:0”。(2)D这种用法是查看默认段的数据,如果是首次使用,则查看的是代码段数据。如果前面使用过D命令,则再使用“D”时,查看的是与前面使用过D命令查看的段,并接着前面查看显示的偏移地址显示数据。例如,前面使用过“D 142F:0”,查看数据段从偏移地址0开始的数

24、据,如图2-2所示,再次使用“D”,则显示142F:0080开始的数据,就是接着显示数据段内容。(3)D 地址1 地址2这种用法是查看某个范围内的数据,如果不给段地址则默认查看代码段数据。图2-2 D命令的使用5G命令的使用-qE:MASM5debug m1.exe-u 0 F1430:0000B82F14MOVAX,142F1430:00038ED8MOVDS,AX1430:00058D160000LEADX,00001430:0009B409MOVAH,091430:000BCD21INT211430:000DB44CMOVAH,4C1430:000FCD21INT21-g 5AX=142

25、F BX=0000 CX=0021 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000DS=142F ES=141F SS=142F CS=1430 IP=0005 NV UP EI PL NZ NA PO NC1430:00058D160000LEADX,0000 DS:0000=6568-ghello world!Program terminated normally-g 3 9AX=142F BX=0000 CX=0021 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000DS=142F ES=141F SS=142F CS=143

26、0 IP=0009 NV UP EI PL NZ NA PO NC1430:0009B409MOVAH,09 -程序正常结束带断点运行反汇编结果运行整个程序下一条要执行的指令寄存器与标志位情况图2-3 G命令的使用G命令为运行程序指令。主要有两种用法,如图2-3所示:(1)G没有断点的运行。程序执行完毕会显示Program terminated normally,表示程序正常结束。(2)G 偏移地址带断点运行。最多可以带10个断点,断点必须包含有效的指令码。程序执行到一个断点地址时,会停下来,显示CPU各寄存器内容和各标志位的状态,以及下一条要执行的指令。只要一个断点满足并执行,其余断点全部被

27、取消,返回DEBUG。6T命令的使用跟踪指令,可以跟踪一条或多条指令,每执行一条指令后就显示当前各寄存器内容和标志位状态,以及下一条要执行的指令。T命令的缺点是,如果程序中有DOS或BIOS中断,它将跟踪到中断服务程序的内部,有时会出现死机现象。其用法有两种,如图2-4所示:E:MASM5debug mmm.exe-tAX=0000 BX=0000 CX=0093 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000DS=1420 ES=1420 SS=1430 CS=1432 IP=0001NV UP EI PL NZ NA PO NC1432:00012BC0SU

28、BAX,AX-t 4AX=0000 BX=0000 CX=0093 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000DS=1420 ES=1420 SS=1430 CS=1432 IP=0003NV UP EI PL ZR NA PE NC1432:000350PUSHAXAX=0000 BX=0000 CX=0093 DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000DS=1420 ES=1420 SS=1430 CS=1432 IP=0004NV UP EI PL ZR NA PE NC1432:0004B83014MOVAX,14

29、30AX=0000 BX=0000 CX=0093 DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000DS=1420 ES=1420 SS=1430 CS=1432 IP=0007NV UP EI PL ZR NA PE NC1432:00078ED8MOVDS,AXAX=0000 BX=0000 CX=0093 DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000DS=1420 ES=1420 SS=1430 CS=1432 IP=0009NV UP EI PL ZR NA PE NC1432:0009B01CMOVAL,1C-单条指令跟

30、踪多条指令跟踪标志位情况寄存器情况图2-4 T命令的使用(1)T单条指令跟踪,执行后显示寄存器内容和标志位状态,并显示下一条要执行的指令。(2)T 地址多条指令跟踪,如T 6,执行6条指令跟踪,每条指令执行后,显示所有寄存器内容及标志位情况。第6条指令执行完成后,显示停止。7R命令的使用检查和修改寄存器内容指令。有三种功能,如图2-5所示:1432:0009B01CMOVAL,1C-rAX=1430 BX=0000 CX=0093 DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000DS=1430 ES=1420 SS=1430 CS=1432 IP=0009 NV

31、UP EI PL ZR NA PE NC1432:0009B01CMOVAL,1C-r cxCX 0093:0028-rAX=1430 BX=0000 CX=0028 DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000DS=1430 ES=1420 SS=1430 CS=1432 IP=0009 NV UP EI PL ZR NA PE NC1432:0009B01CMOVAL,1C-r fNV UP EI PL ZR NA PE NC-OVOV UP EI PL ZR NA PE NC-OV DN EI PL NZ-r fOV DN EI PL NZ NA PE

32、NC-r f显示所有寄存器内容显示单个寄存器内容-修改某些标志位修改后CX内容修改CX内容图2-5 R命令的使用(1)R显示所有寄存器内容,以及标志位状态和下一条要执行的指令。(2)R REG显示单个寄存器内容,并可以修改寄存器内容。如R AX,回车后在屏幕上显示AX寄存器内容,如果需要修改AX内容,则直接输入16位数据,不需要修改则回车。(3)R F显示8个标志位状态,并可以修改其中任何一个或全部修改。7其他相关命令的使用(1)Q命令退出DEBUG命令。(2)E命令修改存储单元内容命令,默认对数据段进行操作。有两种使用方法,如图2-6所示,一是E 地址,对某个单元的数据进行修改,也可以完成多

33、个连续单元的数据修改,方法是在第一次修改内容后,按空格键,则会出现下一个单元数据,在.后面输入修改内容,再按空格键,可以继续修改;二是E 地址 数据,对多个单元数据进行修改。(3)F命令填充命令,向内存单元中填充数据,用法为“F 起始地址 终止地址 数据列表”,例如“F 1430:0 1430:10 FF 34”,表示将段地址为1430的内存16个单元的数据用FF和34重复填充。又如“F 1425:0 1425:5 00 01 02 03 04 05 06”,表示将段地址为1425的内存5个单元的数据用后面列表的前5个数来填充。(4)S命令索引命令,从地址范围中检索出列表里的字符,如果找到则用

34、找到字符的地址显示来标识,用法为“S 起始地址 终止地址 列表”,默认对数据段进行操作。如“S 1430:0 10 e”,表示在段地址为1430的前16个单元内查找e字符,如果找到则显示“1430:0004”,表示偏移地址为4的单元是字符e。(5)M命令传送命令,把指定范围的内存单元数据传送到另一指定地址开始的存储区中,用法为“M 起始地址 终止地址 存储起始地址”。如“M 1420:0 10 1420:30”,表示将段地址为1420的前16个单元数据传送到1420:30起始地址的单元中去。图2-6 E命令的使用五、实验内容与步骤1编辑并调试下列程序,并说明运行结果是什么data segmen

35、ta db 20hb db 33hc db ?data endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax mov al,a add al,b;加法运算,完成a+b mov ah,0 adc ah,0;构成ax mov bl,2;除数 div bl;除法运算,完成(a+b)/2 mov c,al;保存结果到c单元 mov ah,4ch;程序结束 int 21hcode ends end start图2-7 利用DEBUG查看结果(1)利用EDIT将上述源程序编辑好,并取名s2.asm,退出EDIT;(2)利用M

36、ASM汇编源程序,方法为“MASM s2.asm”;(3)如果汇编操作没有错误,则利用LINK连接目标文件,方法为“LINK s2.obj”;如果有错误,则返回(1)进行修改;(4)连接没有问题则利用DEBUG进入调试状态,方法为“DEBUG s2.exe”,首先利用U命令,查看数据段地址,然后利用G命令运行程序,再用D命令查看结果。如图2-7所示。2编辑并调试下列程序data segmenterrmess db error!,0ah,0dh,$;错误信息提示data endscode segment assume cs:code,ds:datastart: mov ax,data mov d

37、s,axl0: mov ah,1;通过键盘输入单个字符数据 int 21h cmp al,#;判断输入数据是否是# jz done;是则结束程序,转到done cmp al,A;不是则判断输入数据是否小于A jb err;小于A代表输入的不是大写字母,转err显示错误提示 cmp al,Z;大于A,则判断该数据是否大于Z ja err;大于Z,代表不是大写字母,转err显示错误提示 add al,20h;小于Z,表示是大写字母,加20H转成小写字母 mov dl,al;显示该小写字母 mov ah,2 int 21h jmp l0;显示完毕转l0,继续输入数据err:lea dx,errmes

38、s;显示错误提示信息 mov ah,9 int 21h jmp l0;显示完毕转l0,继续输入数据done:mov ah,4ch;程序结束 int 21hcode ends end start(1)利用EDIT编辑上述源程序,并保存为s3.asm,退出EDIT;(2)利用MASM汇编源程序,方法为“MASM s3.asm”;(3)如果汇编没有错误,则利用LINK连接目标文件,方法为“LINK s3.obj”;如果有错误则返回(1)修改错误;(4)运行程序,方法为“s3”,为测试程序的有效性,运行后先输入小写字母a,查看结果,再输入数字3,查看结果;再输入大写字母B,查看结果;再输入#,查看结果

39、。(5)利用DEBUG调试程序,方法为“DEBUG s3.exe”;首先利用U查看几个标号的偏移地址以及数据段的数据定义情况,如图2-8(a)所示;然后利用带断点的G命令,分别测试程序的功能,该程序有3个断点可以测试,分别是15H、1FH和29H,如图2-8(b)所示。图2-8(a) 利用DEBUG调试程序图2-8(b) 利用DEBUG调试程序输入“G 15 1F 29”,此时等待从键盘输入数据,输入小写字母b,测试程序是否会转入1F分支,即输入有错,显示错误提示;输入“G 15 1F 29”,此时等待从键盘输入数据,输入#,测试程序是否会转入29分支,即结束程序;输入“G 15 1F 29”

40、,此时等待从键盘输入数据,输入大写字母A,测试程序是否会转入15分支,即将输入的大写字母加20H转换为小写字母并显示; 六、思考题1第2题的断点15、29、1F是什么地址?2第2题为什么每次测试后,要重新进入DEBUG?实验三 基本运算程序设计(设计性实验)一、实验要求和目的1了解汇编语言传送指令及算术运算类指令的使用方法;2熟悉利用DEBUG查看运算结果的基本方法;3掌握利用汇编语言实现多字节数据基本运算的方法。二、环境和设备1硬件环境:微机CPU 486以上,500MB以上硬盘,32M以上内存;2软件环境:装有MASM 5.0、DEBUG、LINK和EDIT等应用程序。三、实验学时2学时四

41、、预备知识1汇编语言程序设计框架(1)数据段定义数据段主要完成程序所需数据的定义,主要包括三方面的数据:一是数值型数据,其基本定义方法为“变量名 数据类型 数据”,例如“N DW 1225,2302H”。二是字符串型数据,其基本定义方法为“变量名 数据类型 数据”,如“STRING DB HELLO$”,在汇编语言中,字符串数据由单引号引起,通常占一个字节,由ASCII码表示每个字符,一般由$表示字符串定义结束。三是地址型数据定义,其基本定义方法为“变量名 数据类型 标号或变量”,例如“NUM DW A”,表示将A的偏移地址赋给NUM,NUM占2个字节空间;如果是“NUM DD A”则表示把A

42、的段地址和偏移地址赋给NUM,NUM占连续4个字节空间。DATA SEGMENTDATA ENDSNUM DB 25,30H段定义伪指令段名变量名段定义结束伪指令数据类型DB表示字节类型段定义主要由SEGMENT和ENDS伪指令来完成,具体定义方法参见图3-1。段名可自己任意定义,注意不能与其他段名重复。图3-1 数据段定义示例(2)代码段定义代码段主要完成实现功能的具体程序设计,在汇编语言下,代码段定义有个基本框架,如图3-2所示,里面标注的内容基本上是每次写程序都要做的工作,省略号处代表实现功能需求的程序段。图3-2 代码段定义示例2汇编语言下的程序或数据存储汇编语言程序设计是分段进行的,

43、有专门定义数据的数据段和附加段,有专门存放程序指令的代码段,也有用于完成堆栈操作的堆栈段。所有这些段都是存储器的一部分,存储器以字节为单位进行数据存储,若存储字数据,则字数据的高字节存放在存储器的高地址单元,低字节存放在低地址单元,如图3-3所示。数据段数据是顺序在存储器中进行存储的,DB类型的数据占用1个字节存储单元,DW类型数据占用2个字节存储单元,DD类型数据占用4个字节存储单元,假设有数据定义如下:DATASEGMENT A DB11H,22H B DW3344H C DD12345678HDATAENDS则其存储情况如图3-3所示。11H22H44H33H78H56H34H12HAB

44、C12B0H:0000H12B0H:0002H12B0H:0004H12B0H:0007H12B00H12B02H12B04H12B07H物理地址低地址高地址逻辑地址图3-3 存储器数据存储情况示意3有关数据定义的其他说明(1)重复定义数据有的时候,可能需要预定义若干个存储单元,如预留100个字节单元,里面数据为0,此时可以利用DUP伪指令来实现该操作,使用方法为“变量名 数据类型 重复次数 DUP (数据数值)”,例如“N DB 100 DUP(0)”。(2)数据赋值定义可以利用EQU或“=”实现赋值或等价定义,例如“N EQU 20”、“M=MOV”。利用EQU与“$”可以实现数组元素个数的统计,方便进行循环操作等,如:NUM DW 25H,36,42,

温馨提示

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

评论

0/150

提交评论