ImageVerifierCode 换一换
格式:DOCX , 页数:101 ,大小:41.92KB ,
资源ID:30645092      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/30645092.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(汇编语言实验指导书.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

汇编语言实验指导书.docx

1、汇编语言实验指导书汇编语言实验指导书王勇 刘辉上海电力学院计算机系二00六年四月目 录实验一 DEBUG命令实验 1实验二 字符串传递实验 7实验三 循环程序实验 15实验四 多重循环实验 21实验五 分支程序实验 28实验六 子程序参数传递实验 34实验七 子程序嵌套实验 37实验八 中断处理实验 42实验九 BIOS中断实验 46实验十 建立文件实验 50实验十一 读文件实验 55实验十二 综合性实验 60实验一 DEBUG命令实验一实验目的: 掌握DEBUG 的基本命令及其功能二实验内容:DEBUG是专门为汇编语言设计的一种调试工具,它通过步进,设置断点等方式为汇编语言程序员提供了非常有

2、效的调试手段。1、DEBUG程序的启动DEBUG的命令格式: drive:path DEBUG d:pfilename.extparam.其中: drive: 是指定DEBUG文件的磁盘驱动器标识符,DEBUG是外部DOS命令,所以必须把它从磁盘读入内存。若未指定,DOS将使用当前默认磁盘驱动器。 path: 是DOS查找DEBUG文件的一个子目录串表示的路径。若未指定,DOS将使用当前工作目录。d: 是DEBUG将要调试的文件所在的磁盘驱动器。p: 是查找DEBUG将要调试的文件所需的子目录路径,若未指定,DOS使用当前目录。filename.ext 是DEBUG将要调试的文件名。param

3、 是将被调试的程序(或文件)的命令行参数。例如:在DOS提示符下,可键入命令:CdebugDEBUG所完成的初始化动作,假定文件名没有,启动DEBUG:段寄存器CS、DS、ES和SS置为DEBUG程序后的第一个段。 指令指针寄存器IP置为100H(程序段前缀PSP后的第一个语句)。 堆栈指针SP置为段末或COMMAND.COM暂驻部分的结束地址(其中较小的那个地址)。 其余通用寄存器均置为0,标志寄存器置为下述状态。 NV UP EI PL NE NA PO NC 如果在DOS提示符下,可键入命令,包含文件名:Cdebug name.exe段寄存器DS和ES指向PSP。寄存器BX和CX含有程序

4、长度。2、DEBUG的主要命令(1) 汇编命令A,格式为:-A地址该命令从指定地址开始允许输入汇编语句,把它们汇编成机器代码相继存放在从指定地址开始的存储器中。例如:-a136B:0100 mov ax,100136B:0103 mov bx,200136B:0106 mov cx,300136B:0109 mov dx,400136B:010C-(2) 反汇编命令U,有两种格式:1)-U地址该命令从指定地址开始,反汇编32个字节,若地址省略,则从上一个U命令的最后一条指令的下一个单元开始显示32个字节。例如:-u13C9:0000 1E PUSH DS 13C9:0001 2BC0 SUB

5、AX,AX 13C9:0003 50 PUSH AX 13C9:0004 B8C313 MOV AX,13C3 13C9:0007 8ED8 MOV DS,AX 13C9:0009 B8C613 MOV AX,13C6 13C9:000C 8EC0 MOV ES,AX 13C9:000E 8D360000 LEA SI,0000 13C9:0012 8D3E0000 LEA DI,0000 13C9:0016 FC CLD 13C9:0017 B92800 MOV CX,0028 13C9:001A F3 REPZ 13C9:001B A4 MOVSB 13C9:001C CB RETF 13

6、C9:001D 0000 ADD BX+SI,AL 13C9:001F 0000 ADD BX+SI,AL 2)-U范围该命令对指定范围的内存单元进行反汇编,例如:-u 13c9:000e 001b13C9:000E 8D360000 LEA SI,0000 13C9:0012 8D3E0000 LEA DI,0000 13C9:0016 FC CLD 13C9:0017 B92800 MOV CX,0028 13C9:001A F3 REPZ 13C9:001B A4 MOVSB -(3) 运行命令G,格式为:-G =地址1地址2地址3。其中地址1规定了运行起始地址,后面的若干地址均为断点地

7、址。例如:-g1cAX=13C6 BX=0000 CX=0000 DX=0000 SP=FFFC BP=0000 SI=0028 DI=0028 DS=13C3 ES=13C6 SS=13C3 CS=13C9 IP=001C NV UP EI PL ZR NA PE NC 13C9:001C CB RETF -(4) 追踪命令T,有两种格式:1)逐条指令追踪:-T=地址该命令从指定地址起执行一条指令后停下来,显示寄存器内容和状态值。-tAX=0000 BX=0000 CX=007D DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000 DS=13B3 ES=13B3

8、SS=13C3 CS=13C9 IP=0001 NV UP EI PL NZ NA PO NC 13C9:0001 2BC0 SUB AX,AX -2)多条指令追踪:-T=地址值该命令从指定地址起执行n条命令后停下来,n由值确定。-t 3AX=0000 BX=0000 CX=007D DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000 DS=13B3 ES=13B3 SS=13C3 CS=13C9 IP=0001 NV UP EI PL NZ NA PO NC 13C9:0001 2BC0 SUB AX,AX AX=0000 BX=0000 CX=007D DX=0

9、000 SP=FFFE BP=0000 SI=0000 DI=0000 DS=13B3 ES=13B3 SS=13C3 CS=13C9 IP=0003 NV UP EI PL ZR NA PE NC 13C9:0003 50 PUSH AX AX=0000 BX=0000 CX=007D DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000 DS=13B3 ES=13B3 SS=13C3 CS=13C9 IP=0004 NV UP EI PL ZR NA PE NC 13C9:0004 B8C313 MOV AX,13C3 (5) 显示内存单元内容的命令D,格式为:-

10、D地址或-D范围-d ds:013C3:0000 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa13C3:0010 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa13C3:0020 61 61 61 61 61 61 61 61-00 00 00 00 00 00 00 00 aaaaaaaa.13C3:0030 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaa

11、aaaa13C3:0040 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa13C3:0050 61 61 61 61 61 61 61 61-00 00 00 00 00 00 00 00 aaaaaaaa.13C3:0060 1E 2B C0 50 B8 C3 13 8E-D8 B8 C6 13 8E C0 8D 36 .+.P.613C3:0070 00 00 8D 3E 00 00 FC B9-28 00 F3 A4 CB 00 00 00 .(.-(6) 修改内存单元内容的命令E,它有两种格式:1)用给定

12、的内容代替指定范围的单元内容: -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) 检查和修改寄存器内容的命令R,它有三种方式:1)显示CPU内部所有寄存器内容和标志位状态;格式为:-R R命令显示中标志位状态的含义如下表所示:标 志 名置 位复 位溢出O

13、verflow(是/否)OVNV方向Direction(减量/增量)DNUP中断Interrupt(允许/屏蔽)EIDI符号Sign(负/正)NGPL零Zero(是/否)ZRNZ辅助进位Auxiliary Carry(是/否)ACNA奇偶Parity(偶/奇)PEPO进位Carry(是/否)CYNC2)显示和修改某个指定寄存器内容,格式为: -R 寄存器名 例如打入:-R AX 系统将响应如下: AX FIF4 : 表示AX当前内容为F1F4,此时若不对其作修改,可按ENTER键,否则,打入修改后内容,如: -R BX BX 0369 :059F 则BX内容由0369改为059F3)显示和修改

14、标志位状态,命令格式为: -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) 装入命令L,它有两种功能:1)把磁盘上指定扇区的内容装入到内存指定地址起始的单元中,格式为:-L 地址 驱动器 扇区号 扇区数2)装入指定文件,格式为:-L 地址此命令装入已在CS:5CH中格式化的文件控

15、制块所指定的文件。在用L命令前,BX和CX中应包含所读文件的字节数。(10)写命令W,有两种格式: 1)把数据写入磁盘的指定扇区: -W 地址 驱动器 扇区号 扇区数 2)把数据写入指定文件中: -W 地址 此命令把指定内存区域中的数据写入由CS:5CH处的FCB所规定的文件中。在用W命令前,BX和CX中应包含要写入文件的字节数。(11)退出DEBUG命令Q,该命令格式为 Q 它退出DEBUG程序,返回DOS,但该命令本身并不把在内存中的文件存盘,如需存盘,应在执行Q命令前先执行写命令W。三实验要求: 四实验报告:写出在DEBUG状态下编写、运行程序的过程以及调试所中遇到的问题是如何解决的,并

16、对调试过程中的问题进行分析,对执行结果进行分析。实验二 字符串传递实验一实验目的: 掌握字符串的传递过程二实验内容:P146 例4.30 把40个字母a的字符串从源缓冲区传送到目的缓冲区DOS命令行格式下,按F5键可以输出上次输入的命令把DOS命令行格式下运行结果直接写入文件,用重定向符命令C:MASM 58.ASM MORE G:MASMRESULT58.DOC1、编译: c:masm .asm2、链接: c:link .obj3、调试: c:debug .exe4、运行: c: .exe1)先用命令U反汇编整个程序,查看每条指令的物理地址,1、编译: C:masm 430.asmMicro

17、soft (R) Macro Assembler Version 5.00 Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved.Source listing NUL.LST: Cross-reference NUL.CRF: 50792 + 450136 Bytes symbol space free 0 Warning Errors 0 Severe Errors2、链接: c:link 430.objMicrosoft (R) Overlay Linker Version 3.60Copyright (C) M

18、icrosoft Corp 1983-1987. All rights reserved.Run File 430.EXE:List File NUL.MAP: Libraries .LIB: LINK : warning L4021: no stack segment3、调试: c:debug 430.exe1)、先用命令U反汇编整个程序,查看每条指令的物理地址,其显示内容的含义为:内存地址 指令代码 反汇编的程序代码-u0B75:0000 1E PUSH DS 0B75:0001 2BC0 SUB AX,AX 0B75:0003 50 PUSH AX 0B75:0004 B86F0B MO

19、V AX,0B6F ;数据段的首地址ds 0b6f 0B75:0007 8ED8 MOV DS,AX 0B75:0009 B8720B MOV AX,0B72 ;附加段的首地址es 0b72 0B75:000C 8EC0 MOV ES,AX 0B75:000E 8D360000 LEA SI,0000 0B75:0012 8D3E0000 LEA DI,0000 0B75:0016 FC CLD 0B75:0017 B92800 MOV CX,0028 0B75:001A F3 REPZ 0B75:001B A4 MOVSB 0B75:001C B402 MOV AH,02 ;为了在DOS格式

20、下,程序运行完毕后可以看到运行结果,特地增加了一个输入语句 0B75:001E CD21 INT 21 -u0B75:0020 CB RETF 2)、从上一步结果中找到数据段的首地址0B6F,附加段的首地址0B72,查看里面存储的数据,数据段从首地址0B6F开始40个字节中存储了40个字符a:-d 0b6f:00000B6F:0000 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa0B6F:0010 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaa

21、aaaaaaa0B6F:0020 61 61 61 61 61 61 61 61-00 00 00 00 00 00 00 00 aaaaaaaa.0B6F:0030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .0B6F:0040 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .0B6F:0050 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .0B6F:0060 1E 2B C0 50 B8 6F 0B 8E-D8 B8 72 0B 8E

22、C0 8D 36 .+.P.o.r.60B6F:0070 00 00 8D 3E 00 00 FC B9-28 00 F3 A4 B4 02 CD 21 .(.!-d 0b72:0000;附加段从首地址0B72开始40个字节中存储了40个空字符0B72:0000 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .0B72:0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .0B72:0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .0

23、B72:0030 1E 2B C0 50 B8 6F 0B 8E-D8 B8 72 0B 8E C0 8D 36 .+.P.o.r.60B72:0040 00 00 8D 3E 00 00 FC B9-28 00 F3 A4 B4 02 CD 21 .(.!0B72:0050 CB 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .0B72:0060 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa0B72:0070 61 61 61 61 61 61 61 61-61 6

24、1 61 61 61 61 61 61 aaaaaaaaaaaaaaaa3)、从反汇编地址中找到把数据段的首地址0B6F传给寄存器AX的指令地址0B75:0007,用G命令执行到地址0007,然后用T命令单步执行,看寄存器AX,DS,ES的内容的变化-G0007AX=0B6F BX=0000 CX=0111 DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000 DS=0B5F ES=0B5F SS=0B6F CS=0B75 IP=0007 NV UP EI PL ZR NA PE NC 0B75:0007 8ED8 MOV DS,AX -TAX=0B6F BX=000

25、0 CX=0111 DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000 DS=0B6F ES=0B5F SS=0B6F CS=0B75 IP=0009 NV UP EI PL ZR NA PE NC 0B75:0009 B8720B MOV AX,0B72 -TAX=0B72 BX=0000 CX=0111 DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000 DS=0B6F ES=0B5F SS=0B6F CS=0B75 IP=000C NV UP EI PL ZR NA PE NC 0B75:000C 8EC0 MOV ES,AX -T

26、AX=0B72 BX=0000 CX=0111 DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000 DS=0B6F ES=0B72 SS=0B6F CS=0B75 IP=000E NV UP EI PL ZR NA PE NC 0B75:000E 8D360000 LEA SI,0000 DS:0000=6161-TAX=0B72 BX=0000 CX=0111 DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000 DS=0B6F ES=0B72 SS=0B6F CS=0B75 IP=0012 NV UP EI PL ZR NA PE NC

27、 0B75:0012 8D3E0000 LEA DI,0000 DS:0000=6161-TAX=0B72 BX=0000 CX=0111 DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000 DS=0B6F ES=0B72 SS=0B6F CS=0B75 IP=0016 NV UP EI PL ZR NA PE NC 0B75:0016 FC CLD 4)、让程序执行到传送准备工作完成后的地址0B75:0016 FC CLD ,查看源偏移地址SI 和目标偏移地址DI的值,以及移动次数存放的寄存器CX,然后用T命令单步执行,看寄存器源地址(DS:DI)和目标地址(ES

28、:SI)的内容的变化-g0016AX=0B72 BX=0000 CX=0111 DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000 DS=0B6F ES=0B72 SS=0B6F CS=0B75 IP=0016 NV UP EI PL ZR NA PE NC 0B75:0016 FC CLD -tAX=0B72 BX=0000 CX=0111 DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000 DS=0B6F ES=0B72 SS=0B6F CS=0B75 IP=0017 NV UP EI PL ZR NA PE NC 0B75:0017

29、 B92800 MOV CX,0028 -tAX=0B72 BX=0000 CX=0028 DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000 DS=0B6F ES=0B72 SS=0B6F CS=0B75 IP=001A NV UP EI PL ZR NA PE NC 0B75:001A F3 REPZ 0B75:001B A4 MOVSB -tAX=0B72 BX=0000 CX=0027 DX=0000 SP=FFFC BP=0000 SI=0001 DI=0001 DS=0B6F ES=0B72 SS=0B6F CS=0B75 IP=001A NV UP EI PL ZR NA PE NC 0B75:001A F3 REPZ 0B75:001B A4 MOVSB -tAX=0B72 BX=0000 CX=0026 DX=0000 SP=FFFC BP=0000 SI=0002 DI=0002 DS=0B6F ES=0B72 SS=0B6F CS=0B75 IP=001A NV UP EI PL ZR NA PE NC 0B75:001A F3 REPZ 0B75:001B A4 MOVSB -tAX=0B72 BX=0000 CX=0025 DX=0000 SP=FFFC BP=0000 SI=0003 DI=0003 D

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1