




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 汇编语言程序设计汇编语言程序设计 实验报告实验报告 2 实验一实验一 调试程序调试程序DEBUG DEBUG 的使用的使用 一、一、实验目的实验目的 通过实验掌握下列知识: 1、DEBUG命令:A,T,D,F,G; 2、数据在内存中的存放方式和内存操作数的几种寻址方式; 3、汇编指令:INC,DEC,LOOP,INT 3的应用; 4、汇编语言伪指令:BYTE PTR和WORD PTR的应用。 二、二、内容及步骤内容及步骤 1.1.DEBUG DEBUG 命令使用命令使用 表表 1.1 1.1 DEBUGDEBUG 命令命令 *命令的使用中注意:* 字母不分大小写; 只使用16 进制数,没有后缀字母; 3 分隔符(空格或逗号)只在两个数值之间是必须的,命令和参数间可无分隔符; 每个命令只有按了回车键后才有效,可以用Ctrl+Break中止命令的执行; 命令如果不符合 Debug 的规则,则将以“error”提示,并用“”指示错误位置。 许多命令的参数是主存逻辑地址,形式是“段基地址 : 偏移地址”。其中,段基地 址可以是段寄存器或数值;偏移地址是数值。如果不输入段地址,则采用默认值,可以 是缺省段寄存器值。如果没有提供偏移地址,则通常就是当前偏移地址。 1、 开机后,切换到命令提示符窗口下, 出现提示符后键入命令DEBUG, 进入调试环境, 显 示提示符 - 。 2、用命令 F 200 220 AB 将AB的两个ASCII码循环填入内存。 注:第一个参数200是当前段的起始偏移地址,第二个参数220是终了偏移地址,第三 个参数AB是被填入的数值,若不给出第二个参数则填入128(8行)个字节。 3、用命令 D200 观察内存中的十六进制码及屏幕右边的ASCII字符。 图1-1 Fill、Dump命令调用 对主存操作的命令还支持地址范围这种参数,它的形式是:“开始地址 结束地址” (结束地址不能具有段地址),或者是:“开始地址 L 字节长度”。 D(Dump)命令命令显示主存单元的内容,它的格式如下(分号后的部分用于解释命令功 能,不是命令本身): D 地址地址 ;显示当前或指定开始地址的主存内容 D 范围范围 ;显示指定范围的主存内容 4 图1-2 D命令调用 左边部分是主存逻辑地址,中间是连续16 个字节的主存内容(16进制数,以字节为 单位),右边部分是这16个字节内容的ASCII字符显示,不可显示字符用点“.”表示。 一个D 命令仅显示“8 行16个字节”(80 列显示模式)内容。 再如: -d 100 ;显示数据段100h开始的主存单元 -d cs:0 ;显示代码段的主存内容 -d 2f0 L 20 ;显示ds:2f0h开始的20h个主存数据 4、用命令 F230 23F 12 重复上二项实验,观察结果并比较。 F F(FillFill)命令)命令用于对一个主存区域填写内容,同时改写原来的内容,其格式为: F 范围数据表范围数据表 该命令用数据表的数据写入指定范围的主存。如果数据个数超过指定的范围,则忽 略多出的项;如果数据个数小于指定的范围,则重复使用这些数据,直到填满指定范围。 图1-3 F命令调用 5、用命令 E200 41 42 43 44 45将A-E的ASCII码写入地址为200开始的内存单元中,再用D 命令观察结果,看键入的十六进制数和ASCII码的对应关系。 图1-4 Enter 命令调用 E E(EnterEnter)命令用于修改主存内容,它有两种格式: 5 E 地址地址;格式1,修改指定地址的内容 E 地址数据表地址数据表 ;格式 2,用数据表的数据修改指定地址的内容 格式 1 是逐个单元相继修改的方法。例如,键入“e ds:100”,Debug显示原来内容, 用户可以直接输入新数据,然后按空格键显示下一个单元的内容,或者按“”键显示 上一个单元的内容;不需要修改可以直接按空格或“”键;这样,可以不断修改相继单元 的内容,直到用回车键结束该命令为止。 格式 2可以一次修改多个单元,例如: -e ds:100 F3XYZ8D ;用F3/X/Y/Z/8D 这5 个数据替代DS:0100 0104的原来 内容。 6、用H命令检查下列各组十六进制数的和与差(补码表示): (1)56H,34H (2)23H,45H (3)AB,3045H 图1-5 H命令调用 16 进制数计算命令H(Hex): H H 数字数字1,1,数字数字2 2 ;同时计算两个16 进制数字的和与差 注:输入 H 12 34 则在下一行显示0046 FFDE,即二者的补码和与差。在DEBUG环境下 所有数据和地址都是按16进制处理,所以不要加后面的H标志。 7、用R命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF和AF的内容。 注:若在DEBUG32环境下用R16和R32命令分别显示16位和32位寄存器内容。 R R(RegisterRegister)命令)命令用于显示和修改处理器的寄存器,它有三种格式: R ;格式 1,显示所有寄存器内容和标志位状态 例如,当我们刚进入Debug 时,就可以执行该命令,显示示例如下: 图1-6 Register命令调用 6 其中,前两行给出所有寄存器的值,包括各个标志状态。最后一行给出了当前CS : IP 处的指令;由于这是一个涉及数据的指令,这一行的最后还给出相应单元的内容。 R 寄存器名寄存器名;格式 2,显示和修改指定寄存器 例如,键入“r ax”,Debug给出当前AX内容,冒号后用于输入新数据,如不修改则按 Enter 键。 RF ;格式 3,显示和修改标志位 Debug 将显示当前各个标志位的状态。显示的符号及其状态如下表所示,用户只要输 入这些符号就可以修改对应的标志状态,键入的顺序可以任意。 图1-7 RF命令调用 表1-2 状态标志位的符号表示 8、用R命令将AX,BX内容改写为1050H及23A8H。 图1-8 用R命令将AX,BX内容改写为1050H及23A8H 7 二、二、80868086 常用指令练习常用指令练习 1、传送指令 1)用A命令在内存400H处键入下列内容: -A 0400 *:0400 MOV AX,1234 *:0403 MOV BX,5678 *:0406 XCHG AX,BX *:0408 MOV AH,10 *:040A MOV AL,20 *:040C MOV CX,89AB *:040F XCHG AX,CX *:0411 - 注:*为段寄存器CS的当前值,内容是不一定的,每行命令以回车键结束。 汇编命令汇编命令 A A(AssembleAssemble)用于将输入的汇编指令汇编成为机器代码保存于主存。 A 地址地址 ;从指定地址开始汇编指令 A 命令中如果没有指定地址,则接着上一个A 命令的最后一个单元开始;若还没有使 用过A 命令,则从当前CS : IP开始。输入 A 命令后,就可以输入8086 指令,Debug 将 它们汇编成机器代码, 相继地存在指定地址开始的存储区中, 记住最后要输入一个回车结束 A 命令。进行汇编的步骤如下: 输入汇编命令A 地址,按回车。Debug 提示地址,等待输入新指令; 输入汇编指令,按回车; 如上继续输入汇编指令,直到输入所有指令; 不输入内容就按回车,结束汇编,返回Debug 的提示符状态。 A 命令支持标准的8086(和8087 浮点)指令系统以及汇编语言语句格式,但要注意 以下一些规则: 所有输入的数值都是16 进制数; 段超越指令需要在相应指令前,单独一行输入; 段间(远)返回的助记符要使用RETF; A 命令也支持最常用的两个伪指令DB和DW。 2)用U命令检查键入的程序并记录,特别注意左边的机器码与指令的对应关系。 -U 0400 反汇编命令反汇编命令 U U(UnassembleUnassemble)将主存内容按照机器代码形成汇编指令显示: U 地址地址 ;从指定地址开始,反汇编32个字节(80 列显示模式) U 范围范围 ;对指定范围的主存内容进行反汇编 U 命令中如果没有指定地址,则接着上一个U 命令的最后一个单元开始;若还没有使 8 用过U 命令,则从当前CS : IP 开始。 图1-9 用U命令检查键入的程序 屏幕显示的左边是主存逻辑地址, 中间是该指令的机器代码, 而右边则是对应的指令汇 编格式。 3)用T命令逐条运行这些指令,每运行一行指令观察各寄存器及IP的变化情况,并注意标 志位的变化情况。 -T =0400 (注:=400是表示从偏移地址400处开始单步执行) -T (不给出地址,则表示接续上一条指令执行) -T 跟踪命令跟踪命令T T(TraceTrace),也称为单步命令,每执行一条指令就显示运行结果,使我们可 以细致地观察程序的执行情况。 T =地址地址 ;逐条指令跟踪 T =地址地址 数值数值 ;多条指令跟踪 从指定地址起执行一条或数值参数指定条数的指令后停下来,每条指令执行后都要 显示所有寄存器和标志位的值以及下一条指令。如未指定地址则从当前的CS : IP开始 执行。注意给出的执行地址前有一个等号等号,否则会被认为是被跟踪指令的条数(数值)。 图1-10用T命令逐条运行指令 9 2、加减法指令: 1)用A命令在内存100H处键入下列内容: MOV AH,11 MOV AL,22 ADD AL,AH SUB AL,33 MOV CX,1234 MOV DX,5678 ADD CX,DX SUB CX,AX SUB CX,CX 图1-11 用A命令在内存100H处键入程序 2)用U命令检查键入的程序及对应的机器码。 图1-12 U命令检查键入的程序及对应的机器码 3)用T命令逐条运行这些指令,检查并记录有关寄存器及ZF情况。 3、带进位加减法: 1)用A命令在内存200H处键入下列内容,并用U命令检查: MOV AH,12 MOV AL,84 MOV CH,56 MOV CL,78 ADD AL,CL 10 ADC AH,CH MOV DH,A7 MOV DL,58 SUB DL,7F SBB DH,34 图1-13 用A命令在内存200H处键入程序 图1-14 用U命令检查程序 2)用T命令逐条运行这些指令,检查并记录有寄存器及CF内容。 11 图1-15 用T命令逐条运行指令 4)上面这段程序若改用16位操作指令达到同样结果,怎么改?试修改并运行之。 解:改用16位操作指令如下: 图1-16 改用16位操作指令 图1-17 反汇编查看16位操作指令 12 图1-18 T命令逐步运行 4、BCD码加减法(选作) 1)内容: MOV AL,65 ADD AL,16 DAA 2)要求:用A 命令键入,U命令检查,T命令逐条运行并记录有关寄存器及AF内容。 注:相加后AL值本来是7B,经DAA指令调整后变为81,即65和16两个BCD码的和。 图1-19 用A 命令键入程序 图 1-20 U命令检查程序 图1-21 T命令逐条运行指令 退出命令退出命令 Q(Quit)使Debug程序退出,返回DOS。Q命令并无存盘功能,可使用W命令 存盘。命令格式: Q 13 图1-22 Q 命令调用 三、实验体会三、实验体会 1. .注意T命令给出的执行地址前有一个等号, 否则会被认为是被跟踪指令的条数 (数值) ; 2. .DOS下所有输入的数值都是16 进制数,且没有后缀字母; 3. 通过RF命令修改对应的标志状态时,键入的顺序可以任意; 4. 分隔符(空格或逗号)只在两个数值之间是必须的,命令和参数间可无分隔符; 5. 命令如果不符合Debug 的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 海军参谋基础知识培训课件
- 2025新型药物研发投资指导与专利保护全方位服务协议
- 2025年秋冬季厂区物流配送临时工就业保障合同
- 2025年度特色面包店经营权转让合同样本
- 2025年老旧小区改造项目施工主体协议
- 2025年度购物中心店面管理权及升级改造合作协议
- 2025年绿色印刷产业联盟印刷原材料集中采购框架协议
- 2025年基础设施合同:风力发电塔架建设与维护服务专版
- 2025年度农产品质量追溯体系承包管理服务合同
- 2025年个人消费贷款保证合同范本(信用保障型)
- 艾梅乙检测结果解读培训课件
- ESD静电管理评审计划+管理评审报告全套资料
- 04735数据库系统原理-串讲
- 绿色工厂培训课件
- 制造业的网络安全培训
- 接触网工程图识图 六跨电分相绝缘锚段关节安装图的识图
- 工业厂房监理规划范本
- 急性心肌梗死的护理PPT
- 花卉学 二年生花卉
- 机动车维修竣工出厂合格证样式
- 管道工程隐蔽验收记录表
评论
0/150
提交评论