汇编语言程序设计实验指导书_孙庆英.pdf
《汇编语言程序设计实验指导书_孙庆英.pdf》由会员分享,可在线阅读,更多相关《汇编语言程序设计实验指导书_孙庆英.pdf(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、汇编语言程序设计实验指导书淮阴师范学院计算机科学系1 目录实验一调试程序 DEBUG 的使用(必做).(1)实验二数据的建立与传送程序(选做).(12)实验三分支循环程序设计(必做).(15)实验四统计学生成绩程序(选做).(17)实验五子程序设计(必做).(21)实验六文件操作(必做).(23)1 实 验 一调试程序DEBUG 的使用一、实验目的1.学习在 DEBUG 状态下输入汇编源程序的方法。2.初步掌握调试(在 DEBUG 状态下)的过程,重点掌握D,E,R,A,U,G,T,P,Q 命令。二、实验步骤1.启动“开始程序附件命令提示符”dos环境。2.输入 debug(回车符),将出现(
2、DEBUG 提示符)状态,这时已进入debug程序,即可输入debug 的命令进行调试。3.下面将 debug 的命令 详细列 出:Debug的命令 都是 一个字母,后跟 一个或多个参 数:字母 参数 命令的使用 中注意:字母不 分大小写;只使用 16 进制数,没有后缀字母;分隔符(空格或逗号)只在两个 数值之间是 必须的,命令 和参 数间可无分隔 符;每个 命令 只有按了 回车 键后才有效,可 以用 Ctrl+Break中止 命令的 执行;命令 如果不 符合 Debug的规则,则 将以“error”提示,并用“”指示错误位置。许多 命令的 参数是主存逻辑地址,形式是“段基地址 :偏移地址”。
3、其中,段基地址可以是段寄存器或数值;偏移地址是数值。如果不 输入 段地址,则采 用默认值,可 以是缺省段寄存器值。如果没有 提供偏移地址,则通常就是当前偏移地址。对主存 操作的命令 还支 持地址范 围这种参数,它的形式是:“开始 地址结束 地址”(结束 地址不 能具 有段地址),或者是:“开始 地址 L 字节长度”。D(Dump)命令 显示主存 单元 的内容,它的格式如 下(注意 分号后 的部 分用 于解释 命令 功能,不是 命令 本身):(掌握)D 地址;显示当前或指 定开始 地址 的主存 内容D 范围;显示指定范围 的主存 内容例如,显示当前(接着上 一 个 D命令 显示的 最后一个地址)
4、主存 内容:2 左边部 分 是主存逻辑地址,中间是 连续 16 个字 节 的主存 内容(16 进制数,以字 节为单位),右边部 分是这 16 个字 节内容 的 ASCII 字符显示,不可显示字 符用点“.”表示。一个 D命令 仅显 示“8 行16 个字 节”(80 列显示模式)内容。再如:-d 100;显示数据 段 100h 开始的 主存 单元-d cs:0;显示 代码 段的主存 内容-d 2f0 L 20;显 示 ds:2f0h开始的 20h 个主存 数据E(Enter)命令 用于修改 主存 内容,它有两 种格式:(掌握)E 地址;格式 1,修改 指定地址 的内容E 地址数据表;格式 2,用
5、数据 表的数据 修改 指定地址 的内容格式 1 是 逐个单元相继修改的方法。例如,键入“e ds:100”,Debug显示 原来内容,用户可以直接 输入 新数据,然后按空格键 显示下一 个单元 的 内容,或者按“”键显示上一个单元 的 内容;不 需要修改 可以直接 按空格或“”键;这样,用 户可 以不 断修改相继单元 的内容,直到 用回车 键结束该 命令 为止。格式 2 可 以一次修改 多个 单元,例如:-e ds:100 F3XYZ8D;用 F3/X/Y/Z/8D这 5 个数据 替代 DS:0100 0104的原来内容。F(Fill)命令 用于对一个主存 区域填 写 内容,同时改写原来 的内
6、容,其格式 为:(了解)F 范围数据表该命令用数据 表的数据 写入指定范围的主存。如果 数据 个数超过指定的 范围,则忽略多出的 项;如果 数据 个数小 于指定的范围,则重复使用这 些 数据,直到填满 指定范围。3 R(Register)命令 用于显 示和修改处理 器的寄存器,它有三种格式。(掌握)R;格式 1,显示所 有寄存器 内容 和 标志 位状态例如,当我们刚 进入 Debug时,就可以执 行该命令,显示示 例如下:其中,前两 行给 出所有寄存器 的 值,包括各 个标志 状态。最后一行 给出了当前 CS:IP处的指令;由于 这是一个涉及 数据的 指令,这一行的 最后还 给出相应单元 的
7、内容。R 寄存器名;格式 2,显示和修改 指定寄存器4 例如,键入“r ax”,Debug给 出当前 AX内容,冒号后 用于输入 新数据,如不 修改 则按Enter 键。RF;格式 3,显示 和修改标志 位Debug将显 示当前 各个标志 位的状态。显示的符 号及其状态 如 下表所 示,用户只要输入这 些符号就 可以修改 对应 的标志 状态,键入的 顺序可 以任 意。汇编命令A(Assemble)用于将输入的汇编指令汇编成 为机 器 代码保 存于主存。(掌握)A 地址;从指定地址 开始汇编 指令A命令 中如果没有指定地址,则 接着上 一个 A命令的 最后一个 单元 开始;若还没有 使用过 A命
8、令,则从当前 CS:IP开始。输入 A命令 后,就可以 输入 8086 指令,Debug将它们 汇编成 机器代码,相继 地存 放在指定地址 开始的 存储区中,记住 最后要输入一 个回车 结束 A命令。进行汇编的步骤如下:输入汇编命令A 地址 ,按回车。Debug提示 地址,等待你 输入 新指令;输入汇编 指令,按 回车;如 上继续 输入汇编 指令,直到 输入 所有指 令;不 输入 内容 就按 回车,结束 汇编,返回 Debug的提示符状态。5 A命令支 持 标准的 8086(和 8087 浮点)指令系统 以及汇编语言语 句格式,但要注意以下一 些规则:?所有输入的数 值都是 16 进制数;?段
9、超越指令 需要 在相应 指令 前,单独一行输入;?段间(远)返回的 助记 符要 使用 RETF;?A 命令 也支持最 常用的 两个 伪指令 DB和 DW。反汇编命令U(Unassemble)将 主存 内容 按照机器代码 形成汇编 指令显示:(掌握)U 地址;从指定 地址 开始,反汇编 32 个字 节(80 列显示模式)U 范围;对指 定范围的主存 内容 进行 反汇编U命令 中如果没有指定地址,则接着上 一个 U命令的 最后一个单元 开始;若还没有 使用过U命令,则从当前 CS:IP开始。6 屏幕 显示的 左边 是主存逻辑地址,中间是 该指令的 机器 代码,而右边 则是对 应的指令汇编 格式。运
10、行命令G(Go)从指 定地址 处开始 运行程序,直到 遇到断 点或者程序 正 常结束。(掌握)G=地址 断点地址1,断点地址2,.,断点地址10G命令 等号后 的地址指 定程序 段 运行的 起始地址,如不指 定则从 当前 的 CS:IP开始 运行。断点地址如果只有偏移地址,则默认是 代码 段 CS;断 点可 以没有,但最多只 能有 10个。程序 遇到断 点(实 际上就是 断点中断指令 INT 3),停止执 行,并显示当前 所有寄存器和 标志 位的 内容、以及下一 条将要执行的 指令(显示内容同 R命令),以 便观察 程序运行到此的情况。程序 正常 结束,将 显示“Program termina
11、ted normally”。注意,G命令 以及后面 的 T 和 P命令 要指向正确 的指令代码,否 则会出现 不可预测 的结果,例如“死机”。7 跟踪命令T(Trace),也称 为单 步命令,每执 行一 条指 令就显示运行结 果,使程序 员可以细 致地观察 程序的 执行情况。(掌握)T=地址;逐条指令跟踪T=地址 数值;多 条指令跟踪从指定地址 起执行一 条 或数值参 数指定条数的 指令后停 下来,每条指令 执行后都 要显示所有寄存器和 标志 位的 值以 及下一 条指令。如未指定地址则 从当前 的 CS:IP开始执行。注意 给 出的 执行地址前有 一个等号,否 则会被 认为是 被跟踪指令的 条
12、 数(数 值)。T命令 逐条 指令执行程序,遇到子程序(CALL)或中 断调用(INT n)指令 也不例外,也会 进入 到子程序 或中 断服务 程序 当中执 行。继续 命令 P(Proceed)类似 T命令,逐条执行指令、显示结果。但是当 遇到子程序调用、中断功能 调用 和循环 指 令等时,不在子程序、中断服务 程序 或循环 体中 单步执行,而是直接 执行 完成子程序、中断服务 程序 或循环 体,然后显 示结果。当不 需要 调试子程序、中断服务 程序 或循环程序 段时,要应 用 P命令,而不是 T 命令。P=地址 数值 8 退出命令Q(Quit)使 Debug程序 退出,返回 DOS。Q命令
13、并无存 盘功能,可使用W 命令存盘。Q以下命令了解:命名命令N(Name)把一个或两个 可 以包含路径 的文件 全名 存入 Debug中,以便在其后 用L 或 W命令 把文件 装入或存 盘。N 文件名 1,文件名 2装入命令 L(Load)将 磁盘 中的文件 或扇区内容 装载 到主存中。L 地址;格式 1:装入由 N命令 指定的文件9 格式 1 的 L 命令 装载 一个文件 到给定 的主存地址 处。L 地址驱动器扇区号扇区数;格式 2:装入 指定磁盘扇 区 范围的内容格式 2 的 L 命令 装载磁盘 的 若干扇 区(最多 80h)到给定 的主存地址 处;缺省段地址是CS。其中,0 表 示 A盘
14、,1 表示 B盘,2 表示 C盘,。写盘命令W(Write)主存 内容 写入磁盘 的文件 或扇区中,与 L 命令 相反。W 地址;格式 1:将由 N命令 指定的文件 写入磁盘10 格式 1 的 W 命令将 指定开始 地址 的数据 写入一 个文件(这 个文件 应该 已 经用 N命令命 名);如未指定地址则 从 CS:100开始。要写入文件的 字节数应先放入 BX(高字)和 CX(低字)中。如果采 用这 个 W命令 保存你的可 执行程序,它的扩展名 应 是 COM;它不能写入具有 EXE和 HEX扩展名 的文件。W 地址驱动器扇区号扇区数;格式 2:把数据 写入指定磁盘扇 区范围格式 2 的 W命
15、令将 指定地址 的数据 写入磁盘 的若干扇 区(最多 80H);如果没有 给出段地址,则缺省是CS。其他说明 同 L 命令。由于 格式 2 的 W命令 直接 对磁盘 写入,没有 经过DOS文件 系统管理,所以一定要 小心,否则可能 无法利用 DOS 文件 系统读写。比较 命令 C(Compare)C 范围地址;将指定范围的 内容 与指定地址 内容 比较 16 进制数计 算 命令 H(Hex)H 数字 1,数字 2;同时计 算两个 16 进制数字的 和与差 输入命令I(Input)I 端口地址;从指定 I/O 端口 输入一 个字 节,并显示 输出命令O(Output)O 端口地址字节数据;将数据
16、输出 到指定 的 I/O 端口 传送命令M(Move)M 范围地址;将指 定范围的内容 传送 到指定地址 处 查找 命令 S(Search)S 范围数据;在指定范围内 查找 指定的数据 帮 助命令?;显示各命令的 简要说明3 参考程序:MOV AX,2000;AL=MOV DS,AX;DS=NOT AX;AX=XOR AX,AX;AX=DEC AX;AX=INC AX;AX=MOV BX,2030;BH=MOV SI,BX;SI=MOV SI,BL;2030H=MOV WORD PTRSI,10F;2030H=2031H=MOV DI,SI;DI=MOV DI+50,BH;DI+50H=11
17、MOV BH,SI;BH=MOV BL,DI+50;BL=MOV SP,5000 PUSH AX;AX=SS:4FFEH=SS:4FFFH=PUSH BX;BX=SS:4FFCH=SS:4FFDH=POP AX;AX=POPF;F=NEG BX;BX=XCHG BX,AX;BX=STD;F=STI;F=CLD;F=CLI;F=ADC DI,2050;DI=F=ADC SP,DI;SP=F=ADC AX,1500;AX=F=SUB AX,BX;AX=BX=SHL AH,1;AH=RCL AX,1;AX=SHR BH,1;BH=RCR BL,1;BL=MOV CL,4 MOV DX,80F0 RO
18、L DX,CL;DX=CL=INT 20;CS=IP=三、实验报告要求1.整理每条指令 执行的 结果,填到 对应指令的 右半部分(应注意 内存 数据 检查的正确性)。2.比较 实验 记录与 理论分析的结果是 否相同,若有不 同,找出差别及问题 所在。3总 结本次 实验的 体会。12 实 验 二数据的建立与传送程序(选做)一、实验目的1.熟悉 8086 基本指令。2.继续 学习 DEBUG 命令。3.验 证指令的 功能。二、实验原理在 DEBUG 状态下,分别输入下 面各程序 段,每输入 完一个 程序 段,用 G 命令进行 连续方式执 行程序,在 连续 执行时,要记录程序的 执行结果。参考程序:
19、1.在 内存 10000H 单元 开始,建立00H0FH00H 31 个数,要求 00H0FH 数据逐渐增 大,0FH00H 逐渐减 小。该程序 从内 存 CS:0100H 地址 开始输入。MOV AX,1000H MOV DS,AX MOV SI,0 MOV CL,0FH XOR AX,AX PPE1:MOV SI,AL INC SI INC AL DEC CL JNZ PPE1 MOV CX,10H PPE2:MOV SI,AL INC SI DEC AL LOOP PPE2 INT 20H 注:转段指 令的符 号地址 直接 用绝对偏移地址,该地址 在用 A 命令汇编输入时,可以看到程序
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序设计 实验 指导书 孙庆英
限制150内