您好,欢迎访问三七文档
汇编语言实验指导书王勇刘辉上海电力学院计算机系二00六年四月第I页目录实验一DEBUG命令实验........................................................1实验二字符串传递实验........................................................7实验三循环程序实验.........................................................15实验四多重循环实验.........................................................21实验五分支程序实验.........................................................28实验六子程序参数传递实验...................................................34实验七子程序嵌套实验.......................................................37实验八中断处理实验.........................................................42实验九BIOS中断实验........................................................46实验十建立文件实验.........................................................50实验十一读文件实验.........................................................55实验十二综合性实验.........................................................60第1页实验一DEBUG命令实验一.实验目的:掌握DEBUG的基本命令及其功能二.实验内容:DEBUG是专门为汇编语言设计的一种调试工具,它通过步进,设置断点等方式为汇编语言程序员提供了非常有效的调试手段。1、DEBUG程序的启动DEBUG的命令格式:[drive:][path]DEBUG[d:][p][filename][.ext][param...]其中:drive:是指定DEBUG文件的磁盘驱动器标识符,DEBUG是外部DOS命令,所以必须把它从磁盘读入内存。若未指定,DOS将使用当前默认磁盘驱动器。path:是DOS查找DEBUG文件的一个子目录串表示的路径。若未指定,DOS将使用当前工作目录。d:是DEBUG将要调试的文件所在的磁盘驱动器。p:是查找DEBUG将要调试的文件所需的子目录路径,若未指定,DOS使用当前目录。filename[.ext]是DEBUG将要调试的文件名。param是将被调试的程序(或文件)的命令行参数。例如:在DOS提示符下,可键入命令:CdebugDEBUG所完成的初始化动作,假定文件名没有,启动DEBUG:段寄存器CS、DS、ES和SS置为DEBUG程序后的第一个段。指令指针寄存器IP置为100H(程序段前缀PSP后的第一个语句)。堆栈指针SP置为段末或COMMAND.COM暂驻部分的结束地址(其中较小的那个地址)。其余通用寄存器均置为0,标志寄存器置为下述状态。NVUPEIPLNENAPONC如果在DOS提示符下,可键入命令,包含文件名:Cdebugname.exe段寄存器DS和ES指向PSP。寄存器BX和CX含有程序长度。2、DEBUG的主要命令(1)汇编命令A,格式为:-A[地址]该命令从指定地址开始允许输入汇编语句,把它们汇编成机器代码相继存第2页放在从指定地址开始的存储器中。例如:-a136B:0100movax,100136B:0103movbx,200136B:0106movcx,300136B:0109movdx,400136B:010C-(2)反汇编命令U,有两种格式:1)-U[地址]该命令从指定地址开始,反汇编32个字节,若地址省略,则从上一个U命令的最后一条指令的下一个单元开始显示32个字节。例如:-u13C9:00001EPUSHDS13C9:00012BC0SUBAX,AX13C9:000350PUSHAX13C9:0004B8C313MOVAX,13C313C9:00078ED8MOVDS,AX13C9:0009B8C613MOVAX,13C613C9:000C8EC0MOVES,AX13C9:000E8D360000LEASI,[0000]13C9:00128D3E0000LEADI,[0000]13C9:0016FCCLD13C9:0017B92800MOVCX,002813C9:001AF3REPZ13C9:001BA4MOVSB13C9:001CCBRETF13C9:001D0000ADD[BX+SI],AL13C9:001F0000ADD[BX+SI],AL2)-U范围该命令对指定范围的内存单元进行反汇编,例如:第3页-u13c9:000e001b13C9:000E8D360000LEASI,[0000]13C9:00128D3E0000LEADI,[0000]13C9:0016FCCLD13C9:0017B92800MOVCX,002813C9:001AF3REPZ13C9:001BA4MOVSB-(3)运行命令G,格式为:-G[=地址1][地址2[地址3。。。]]其中地址1规定了运行起始地址,后面的若干地址均为断点地址。例如:-g1cAX=13C6BX=0000CX=0000DX=0000SP=FFFCBP=0000SI=0028DI=0028DS=13C3ES=13C6SS=13C3CS=13C9IP=001CNVUPEIPLZRNAPENC13C9:001CCBRETF-(4)追踪命令T,有两种格式:1)逐条指令追踪:-T[=地址]该命令从指定地址起执行一条指令后停下来,显示寄存器内容和状态值。-tAX=0000BX=0000CX=007DDX=0000SP=FFFEBP=0000SI=0000DI=0000DS=13B3ES=13B3SS=13C3CS=13C9IP=0001NVUPEIPLNZNAPONC13C9:00012BC0SUBAX,AX-2)多条指令追踪:-T[=地址][值]该命令从指定地址起执行n条命令后停下来,n由[值]确定。-t3AX=0000BX=0000CX=007DDX=0000SP=FFFEBP=0000SI=0000DI=0000DS=13B3ES=13B3SS=13C3CS=13C9IP=0001NVUPEIPLNZNAPONC13C9:00012BC0SUBAX,AX第4页AX=0000BX=0000CX=007DDX=0000SP=FFFEBP=0000SI=0000DI=0000DS=13B3ES=13B3SS=13C3CS=13C9IP=0003NVUPEIPLZRNAPENC13C9:000350PUSHAXAX=0000BX=0000CX=007DDX=0000SP=FFFCBP=0000SI=0000DI=0000DS=13B3ES=13B3SS=13C3CS=13C9IP=0004NVUPEIPLZRNAPENC13C9:0004B8C313MOVAX,13C3(5)显示内存单元内容的命令D,格式为:-D[地址]或-D[范围]-dds:013C3:00006161616161616161-6161616161616161aaaaaaaaaaaaaaaa13C3:00106161616161616161-6161616161616161aaaaaaaaaaaaaaaa13C3:00206161616161616161-0000000000000000aaaaaaaa........13C3:00306161616161616161-6161616161616161aaaaaaaaaaaaaaaa13C3:00406161616161616161-6161616161616161aaaaaaaaaaaaaaaa13C3:00506161616161616161-0000000000000000aaaaaaaa........13C3:00601E2BC050B8C3138E-D8B8C6138EC08D36.+.P...........613C3:007000008D3E0000FCB9-2800F3A4CB000000.......(.......-(6)修改内存单元内容的命令E,它有两种格式:1)用给定的内容代替指定范围的单元内容:-E地址内容表例如:-E2000:0100F3“XYZ”8D其中F3,“X”“Y”“Z”和8D各占一个字节,用这五个字节代替原内存单元2000:0100到0104的内容,“X”“Y”“Z”将分别按它们的ASCII码值代入。2)逐个单元相继地修改:-E地址例如:-E100:18E4:010089.78此命令是将原100号单元的内容89改为78。78是程序员键入的。(7)检查和修改寄存器内容的命令R,它有三种方式:1)显示CPU内部所有寄存器内容和标志位状态;格式为:-RR命令显示中标志位状态的含义如下表所示:第5页标志名置位复位溢出Overflow(是/否)OVNV方向Direction(减量/增量)DNUP中断Interrupt(允许/屏蔽)EIDI符号Sign(负/正)NGPL零Zero(是/否)ZRNZ辅助进位AuxiliaryCarry(是/否)ACNA奇偶Parity(偶/奇)PEPO进位Carry(是/否)CYNC2)显示和修改某个指定寄存器内容,格式为:-R寄存器名例如打入:-RAX系统将响应如下:AXFIF4:表示AX当前内容为F1F4,此时若不对其作修改,可按ENTER键,否则,打入修改后内容,如:-RBXBX0369:059F则BX内容由0369改为059F3)显示和修改标志位状态,命令格式为:-RF系统将给出响应,如OVDNEINGZRACPECY-这时若不作修改可按ENTER键,否则在“-”号之后键入修改值,键入顺序任意。如OVDNEINGZRACPECY-PONZDINV(8)命名命令N,格式为:-N文件名此命令将文件名格式化在CS:5CH的文件控制块内,以便使用L或W命令把文件装入内存进行调试或者存盘。(9)装入命令L,它有两种功能:1)把磁盘上指定扇区的内容装入到内存指定地址起始的单元中,格式为:第6页-L地址驱动器扇区号扇区数2)装入指定文件,格式为:-L[地址]此命令装入已在CS:5CH中格式化的文件控制块所指定的文件。在用L命令前,BX和CX中应包含所读文件的字节数。(10)写命令W,有两种格式:1)把数据写入磁盘的指定扇区:-W地址驱动器扇区号扇区数2)把数据写入指定文件中:-W[地址]此命令把指定内存区域中的数据写入由CS:5CH处的FCB所规定的文件中。在用W命令前,BX和CX中应包含要写入文件的字节数。(11)退出DEBUG命令Q,该命令格式为Q它退出DEBUG程序,返回DOS,但该命令本身并不把在内存中的文件存盘,如需存盘,应在执行Q命令前先执行写命令W。三.实验要求:四.实验报告:写出在DEBUG状态下编写、运行程序的过程以及调试所中遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。第7页实验二字符串传递实验一.实验目的:掌握字符串的传递过程二.实验内容:P146例4.30把40个字母a的字符串从源缓冲区传送到目的缓冲区DOS命令行格式下,按F5键可以输出上次输入的命令把DOS命令行格式下运行结果直接写入文件,用重定向符命令C:\MASM58.ASMMOREG:\MASM\RESULT\58.DOC1、编译:
本文标题:汇编语言实验指导书
链接地址:https://www.777doc.com/doc-2368343 .html