汇编语言实验指导2013_第1页
汇编语言实验指导2013_第2页
汇编语言实验指导2013_第3页
汇编语言实验指导2013_第4页
汇编语言实验指导2013_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

1 汇汇 编编 语语 言言 实实 验验 习习 题题 指指 导导 长春理工大学计算机科学与技术系长春理工大学计算机科学与技术系 2 目目 录录 实实 验验 须须 知知 1 实实 验验 一一 DEBUG 调试程序的使用调试程序的使用 3 实验二实验二 用用 DEBUG 程序调试程序功能段程序调试程序功能段 12 实验三实验三 数据串传送和查表程序数据串传送和查表程序 19 实验四实验四 汇编语言上机过程及屏幕字符显示程序汇编语言上机过程及屏幕字符显示程序 22 实验五实验五 条件转移指令条件转移指令 27 实验六实验六 循环程循环程序序是设计是设计 30 实验七实验七 子程序设计子程序设计 33 3 实实 验验 须须 知知 一 一 预习要求预习要求 1 实验前认真阅读实验教程中有关内容 明确实验目的和实验任务 2 每次实验前应有预习报告 未预习者不允许参加实验 预习报告中 对程序设计实验 要求画出程序流程图 编好上机程序 二 二 实验要求实验要求 1 实验是学习 汇编语言程序设计 这门课程的重要环节 实验课 请勿迟到 缺席 2 上机时要遵守实验室的规章制度 爱护实验设备 要熟悉与实验 相关的系统软件 如编辑程序 汇编程序 连接程序和调试程序 等 的使用方法 在程序的调试过程中 有意识地学习及掌握 DEBUG 程序的各种操作命令 以便掌握程序的调试方法及技巧 3 程序调试完后 须由实验辅导教师在机器上检查运行结果 4 每个实验完成后 结果写入预习报告 完成分析 上交实验教师 三 三 报告要求报告要求 每次实验后 应递交一份实验报告 报告中应包括下列内容 1 实验名称 实验人姓名 学号 班级 所用的设备号 2 实验目的 任务 3 各任务程序流程图 程序清单 应加适量注释 4 4 记录和分析实验结果 5 据实验目的认真做小结 5 实实 验验 一一 DEBUGDEBUG 调试程序的使用调试程序的使用 一 一 实验目的实验目的 1 学习使用 DEBUG 程序的各种命令 2 利用 DEBUG 学习了解计算机取指令 执行指令的工作过程 3 掌握用 DEBUG 调试自编程序的方法 二 二 实验准备实验准备 预备知识 DEBUG 的使用 在以后的所有实验中 都将用到 DEBUG 程序 首先学习一下他的主要用法 一 什么是 一 什么是 debug Debug 是 DOS WINDOWS 都提供的实模式 8086 方式 程序的调 试工具 使用它 可以调试 CPU 各种寄存器中的内容 内存的情况和在机 器码级跟踪程序运行 二 二 我们用到的我们用到的 DEBUG 功能功能 用 DEBUG 的 R 命令查看 改变 CPU 中寄存器的内容 用 DEBUG 的 D 命令查看内存的内容 用 DEBUG 的 E 命令改写内存的内容 用 DEBUG 的 U 命令将内存中的机器指令翻译成汇编指令 用 DEBUG 的 T 命令执行一条机器指令 用 DEBUG 的 A 命令以汇编指令的格式在内存中写入一条机器指令 DEBUG 的命令比较多 有 20 多个 这是常用的 6 个 三 三 进入进入 DEBUG DEBUG 是在 DOS 方式下使用的程序 我们在进入 DEBUG 前 应先进入 到 DOS 方式 在 WINDOWS 下进入 DOS 方式的方法 6 在 开始 菜单选择运行命令 如图 1 1 打开 运行 框如图 1 2 输入 COMMAND 点击确定按钮 图图 1 2 在文本框中输入在文本框中输入 COMMAND 命令命令 图图 1 1 选择选择 运行运行 命令命令 进入进入 DOS 后运行后运行 DEBUG 程序如图程序如图 1 3 图图 1 3 运行运行 DEBUG 程序程序 图图 1 4 DEBUG 编辑界面编辑界面 启动成功 显示连接符 四 四 关于使用关于使用 DEBUG 命令的几点说明命令的几点说明 1 在提示符 下才能输入命令 在按 回车 后该命令才开始执行 7 2 命令是单个字母 命令和参数的大小写可混合输入 3 可用 F1 F2 F3 INS DEL 等编辑键 编辑本行命令 4 当命令出现语法错误时 将在出错位置显示 ERROR 5 可用 ctrl c 或 ctrl break 来终止当前命令的执行 还可以用 ctrl s 来暂停屏幕显示 当连续不断地显示信息时 6 DEBUG 使用的数以十六进制来表示 7 DEBUG 中的命令不区分大小写 五 几个常用命令 五 几个常用命令 1 R 命令命令 Register 格式1 R 功能1 显示所有寄存器中的内容 图图1 5 用用R命令显示寄存器的内容命令显示寄存器的内容 格式2 R 寄存器名 功能2 显示修改寄存器的内容 例如打入 R AX 系统将响应如下 AX 0000 表示 AX 当前内容为 0000 此时若不对其作修改 可按 ENTER 键 否则 打入修改后内容 如图 1 6 图图1 61 6用用R R命令修改寄存器的内容命令修改寄存器的内容 8 2 D 命令命令 用用 DEBUG 的的 D 命令查看内存的内容 命令查看内存的内容 功能 显示内存单元内容 输入D命令 执行结果如图1 7 图图1 7 D命令执行结果命令执行结果 说明 1 XXXX YYYY 前者是内存单元的段地址 后者是内存单元的 偏移量 2 中间显示区域时内存单元内容 十六进制形式 每行显示16个 字节的内容 3 右边以 字符 形式显示内存单元值 格式一 D起始位置 DEBUG从起始位置显示128个字节的内容 输入命令D 0C0B 100 执行结果如图 1 8 图图1 8 D 0C0B 100命令的执行结果命令的执行结果 格式二 D 起始位置 结束位置 DEBUG 从起始位置一直显示到结束位置 输入命令D DS 100 11F 执 行结果如图1 9 所示 9 图图1 9命令命令 D DS 100 11F 执行结果执行结果 格式三 D 起始位置 L 长度 DEBUG 从起始位置开始显示指定长度的内容 输入命令D DS 100 L10 执行结果如图1 10 图图1 101 10命令命令 D DS 100 L1命令执行结果命令执行结果 3 3 E E 命令命令 用 DEBUG 的 E 命令改写内存的内容 格式一 E 起始地址 字节值表 功能 用字节值表中的值替换从 起始地址 开始的内存单元内容 或 E 起始地址 输入命令 E1AF5 0100 连续输入12 34 空格 56 空格 空格 78 回车 在输入命令D1AF5 0100 执行结果如下图1 11 10 图图1 111 11命令命令D D 1AF51AF5 01000100 执行结果 执行结果 格式二 E 起始地址 功能 采用提问的方式一个一个地改写内存单元的内容 图图1 121 12 命令命令 E E 1AF51AF5 01000100执行结果执行结果 4 A命令 功能 输入汇编指令 格式 A 起始地址 首先用A命令以汇编语言的形式输入程序 以D命令显示内存 从下图可以 看到我们输入的是汇编指令 DEBUG 把它们翻译成机器指令 以机器码写 入内存 图图1 131 13 用用A A命令写入程序命令写入程序 图图1 14 从一个预设的地址开始输入指令从一个预设的地址开始输入指令 5 U 命令命令 功能 反汇编 显示机器码所对应的汇编指令 格式1 U 地址 功能1 从指定地址开始反汇编 11 图图1 151 15 U U命令执行结果命令执行结果 格式2 U 地址范围 功能2 对指定的地址范围进行反汇编 图图1 16 U100 108 命令执行结果命令执行结果 6 T命令 格式 T 地址 功能 从指定地址起执行一条语句后停下来 显示所有寄存器的内容及标 志位的值与下一条将要执行的指令 12 图图1 17 T命令执行结果命令执行结果 格式 T 地址 x 功能 从指定的地址开始跟踪x 条指令 图图1 18 命令命令T 100 2 执行结果执行结果 7 Q 命令 功能 退出DEBUG程序 返回DOS 图图1 19 Q命令执行结果命令执行结果 三 实验任务三 实验任务 1 参照实验准备 掌握 DEBUG 程序的各种命令 重点是命令 R D A U T E 命令的使用 2 按照以下步骤输入一系列的命令和指令 编写出简单的汇编语言指令 并完成指定任务 debug e200 XXXX 0200 XX 10 XX 20 XX 30 XX 40 将 200H 203H 内容改为 13 10H 40H e150 XXXX 0150 XX 00 XX 01 a100 XXXX 0100 MOV AX CS 01 XXXX 0102 MOV DS AX 02 XXXX 0104 MOV BX 100 03 XXXX 0107 MOV AX 150 04 XXXX 010A ADD BX AX 05 XXXX 010C MOV AL BX 06 XXXX 010E ADD AL BX 1 07 XXXX 0111 MOV SI 2 08 XXXX 0114 MOV AL BX SI 09 XXXX 0116 MOV AH 0 10 XXXX 0118 MOV CH 0 11 XXXX 011A MOV CL BX SI 1 12 XXXX 011D ADD AX CX 13 XXXX 011F INT 20 1 用 D 命令显示 XXXX 0200 XXXX 0203 单元内容 2 指出以上汇编语言指令中源操作数使用的是什么寻址方式 3 用 T 命令单步跟踪 观察指令的执行结果 并记录 3 查看内存单元内容 pc 机主板上的 ROM 中写有一个生产日期 在内存 FFF00H FFFFFH 的某几个单元中 请找到这个生产日期并试图改变 它 4 向内存从 B8100H 开始的单元中填写数据 如 e b810 0000 01 01 02 02 03 03 04 04 四 四 实验报告要求实验报告要求 把实验任务中要求的各项记录到预习报告上 完成预习报告 作为实 验报告上交 五 五 实验小结实验小结 14 实验报告的最后一项 写出本次实验小结 15 实验二实验二 用用 DEBUGDEBUG 程序调试程序功能段程序调试程序功能段 一一 实验目的 实验目的 1 继续学习使用 DEBUG 程序的各种命令 2 利用 DEBUG 学习了解计算机取指令 执行指令的工作过程 3 掌握 8086 8088 基本指令的使用方法和功能 二二 实验准备 实验准备 1 DEBUG 命令学习命令学习 1 G 命令命令 格式 G 起始地址 断点地址 功能 从起始地址开始执行到断点地址 如不设断点地址 则程序一直执 行到终止指令才停止 图图 2 1 命令命令 G 100 执行结果执行结果 2 P 命令命令 功能 执行汇编程序 单步跟踪 与与 T 命令不同的是 命令不同的是 P 命令不会跟踪进入子程序或软中断 其使用方式与命令不会跟踪进入子程序或软中断 其使用方式与 T 相同相同 16 图图 2 2P 命令执行结果命令执行结果 从结果中可以看出从结果中可以看出 P 命令不会进入命令不会进入 INT 21 H 软中断软中断 3 N 命令命令 功能 指定文件名 为读 写文件做准备 D200 20F U100 10C N E R CX 110 第一 二条命令的作用是检查一下刚才编写的汇编指令 第三条命令的作 用是设置存盘文件名为 FIRST COM 第四条命令的作用是设置存盘文件 大小为 110H 个字节 最后一条命令是将文件存盘 执行结果如图 图图 2 3 N E 执行结果 文件存盘后 在 DOS 环境下执行 FIRST COM 观看运行结果 如图 2 4 17 图图 2 4 文件文件 FIRST COM 文件文件执行结果 4 W 命令命令 功能 向磁盘写内容 见 N 命令 5 L 命令命令 功能 从磁盘将文件或扇区内容读入内存功能 从磁盘将文件或扇区内容读入内存 注意 使用该命令前 必须用注意 使用该命令前 必须用 N 命令设定文件名命令设定文件名 N E L 在文件读入内存后 可用 U100 命令查看调入程序的汇编代码 执行结果 如图 2 5 图图 2 5 用用 L 命令跳入程序命令跳入程序 三 三 实验任务实验任务 1 按照下列给定步骤完成求累加和程序按照下列给定步骤完成求累加和程序 程序程序 MOVBX 1000 MOVCX 10 MOVAL 0 LOP ADDAL BX INCBX J LOOPLOP INT3 18 步骤步骤 1 用 A 命令将程序键入到 100H 开始的内存中 在键入时记下标号 LOP 和 J 的实际地址 在键入 LOOP 指令时 LOP 用实际地址值代替 2 用命令 N AA 将此程序命名为文件 AA 文件名可任取 3 用 R 命令将 BX CX 改为程序长度值 即最后一条指令后面的地址减去 开始地址 用 R 命令把 BX 设为 0000H CX 设为文件长度 4 用命令 W 100 将此程序存到 AA 命名的磁盘文件中 5 用命令 Q 退出 DEBUG 6 用命令 DEBUG AA 再次调入 DEBUG 和文件 AA 可用 U 命令检查调入程 序 若调入 DEBUG 时忘了加 AA 文件名 可用 N 命令和 L 命令将文件调入 7 用 E 命令在内存地址 1000H 处键入 16 个数字 8 用命令 G 100 J J 用实际地址代替 使程序运行并停在断点 J 上 检 查 AX BX 的值是否符合你的预计值 9 用 T 命令运行一步 观察程序方向 IP 值 和 CX 值是否与你的估计一 样 若不一样 检查程序是否有错 10 重复 G J 与 T 再检查 AX 是否正确 J 为断点地址 11 用 G 命令使程序运行到结束 检查 AX 值是否正确 2 2 用命令用命令 A 汇编下列指令 判断指令正误并说明原因汇编下列指令 判断指令正误并说明原因 1 LEA DI AX 2 MOV DS 2010 3 PUSH AL 4 OUT 900 AL 5 MOV BX 0 3 利用 利用 T P G 命令 执行下列指令段 注意它们的不同之处命令 执行下列指令段 注意它们的不同之处 6 MOV DI 300 MOV SI 400 MOV CX 3 CLD REP MOVSB INT 3 7 MOV AH 2 19 MOV DL 41 INT 21 INT 3 4 4 程序程序 MOV DI 1000 MOV CX 8 MOV SI 2000 CLC LOP MOVAL SI ADC DI AL INCSI INCDI LOOPLOP INT20 步骤步骤 1 用 A 命令键入此程序 2 用 E 命令在 1000H 开始处键入一个 8 字节被加数 在 2000H 开始处键 入一个 8 字节加数 均为低字节在前面 3 用 G 命令运行此程序 并用 D 命令检查其结果 存放在哪里 是否正 确 4 将 INT 20H 指令改为 INT 3 有何区别 若这条指令不加 行不行 试 试 5 请说明这个程序完成的功能是什么 四 四 实验说明实验说明 1 初学者在使用 DEBUG 命令修改内存或执行程序时 由于多种原因 出现死机是较经常的现象 可按 RESET 复位按钮 重新启动系统 2 用连续执行命令 G 执行程序时 注意给出执行的首地址 或查看 当前 CS 和 IP 值是否为要执行程序段的首地址 并注意查看执行 的指令流程中有无返回 DEBUG 功能的程序段 如指令 INT 20T 或 断点设置 INT3 否则发出命令后 很容易出现死机 原因是如无 程序段使系统返回命令接受状态 CPU 将不断到内存取指令 执 行指令 使作户失去对系统的控制 出现死机 为避免这种情况 可在用户程序段的最后加上一条 INT 20H 指令 或用断点方式执 行 避免出现死机 3 关于任务 2 在命令 A 下汇编各条指令 对于错误的指令 DEBUG 指令出其错误位置 对于正确的指令 将其汇编到相应内存 据 20 此可判断指令正误 而具体原因需自己分析 4 关于任务 3 用 A 命令汇编好后 用 T P G 命令分别执行 记 录指令执行前后各寄存器 包括标志寄存器各标志位值 堆栈 指针及堆栈内容变化情况 以及与指令有关内存单元的内容 总 结 T 和 P 执行某些指令的不同之处及适用场合 5 DEBUG 下不支持符号地址 如任务 1 中的标号 LOP 和 J 等 在命 令 A 下输入程序时 不输入标号 如 next 在用到标号的指 令 如 LOOP JNZ 等 在其后直接输入要跳转的目的地址 6 对向前跳转的指令 输入程序的过程如下 A 1270 0100 MOVMOV CXCX 1010 1270 0103 MOVMOV ALAL 0 0 1270 0105 MOVMOV BXBX 10001000 1270 0108 ADDADD ALAL BX BX 1270 010A INCINC BXBX 1270 010B DEC CX 1270 010C JNZ 0108 1270 101E MOVMOV BX BX ALAL 1270 0110 INTINT 3 3 1270 0112 用目的地址 0108 代替标号 LOP 在 LOOP 指令中的位置 而在输入 ADD AL BX 这条指令时 不输入标号 LOP 对向后跳转的指令 由于目的地址尚未确定 可先随意输入一个地 址 若是条件转移指令 注意跳转范围应在 128 127 之间 待程序输入 完毕 目的地址明确后 再用命令 A 修改跳转指令 如下程序段 功能是比较 AX 和 CX 中的两符号数 将较大的数放在 AX 和 BX 中 较小的数放在 CX 中 CMP AX CX JX continue XCHG AX CX continue MOV BX AX 用命令 A 输入程序的过程如下 A 1270 0100 CMPCMP AXAX CXCX 1270 0102 JGJG 01020102 输入本条指令的地址 0102 代替标号 continue 1270 0104 XCHGXCHG AXAX CXCX 21 1270 0106 MOVMOV BXBX AXAX 1270 0108 A 102 修改跳转指令的目的地 址 1270 0102 JGJG 01060106 输入目的地址 0106 1270 0104 U U 1270 01001270 0100 L L 0 0 A A 用命令 U 查看程序 跳 转正确 1270 0100 39C8 CMP AX CX 1270 0102 7F02 JG 0106 1270 0104 87C1 XCHG AX CX 1270 0106 89C3 MOV BX AX 五 五 问题思考问题思考 1 假设某内存单元的内容为CCH 试问该内容如看作一条指令 看 作无符号数 看作带符号数 那将分别表示什么 不查看教材中 的指令系统代码 如何在DEBUG下知道CCH表示一条什么指令 2 在指令MOV BX AX 中 操作数 BX 的寻址方式是什么 在 DEBUG下执行完该指令后 如何查看执行结果 3 可否随意在DEBUG提示符 后不带参数发出命令G 什么 情况下使用命令G时 可不用 给出执行的首地址 4 分析出现死机的几种情况 如何理解死机现象 试从计算机的工 作原理进行解释 六 六 实验报告实验报告 1 分析任务 2 中各条指令错误原因 2 说明命令T和P的差别 3 回答问题思考 4 针对实验目的认真做小结 22 实验三实验三 数据串传送和查表程序数据串传送和查表程序 一 实验目的一 实验目的 1 堆栈 堆栈指示器 SP 和堆栈操作指令 PUSH POP 2 段寄存器和物理地址计算 3 查表法和查表指令 XLAT 4 数据串传送程序和数据串传送指令 MOVS STOS 及重复前辍 REP 5 循环指令 ROL 逻辑与指令 AND 和清方向位指令 CLD 6 伪操作指令 DB 二 实验准备二 实验准备 1 1 编写实验任务要求的程序 编写实验任务要求的程序 2 2 学习一下调试方法 学习一下调试方法 利用查表方法把利用查表方法把 DXDX 的内容的内容 16 16 进制数进制数 转换成转换成 ASCIIASCII 码码 1 用 A 命令键入下列程序 MOVBX 1000 MOVDI 2000 MOVCX 4 LOP PUSH CX MOVCL 4 ROLDX CL POPCX MOVAL DL ANDAL OF XLAT CLD STOSB 23 LOOPLOP INT20 2 用 A 命令在 1000H 处键入下列 ASCII 码并用 D 命令检查之 DB 0 1 2 3 4 5 6 7 8 9 A B C D E F 用 D 命令检查时注意左边的 ASCII 码值和右边的字符 3 用 R 命令给 DX 送一个四位的 16 进制数 例 7F8E 4 用 T 命令逐条运行这程序到 LOOP 指令处 观察并记录每次运行结果 特 别是 SP 和堆栈内容 用 D 命令检查 5 用 G 命令将此程序运行到结束 并用 D 命令检查 2000H 处所转换的 结果 可注意屏幕右边的 ASCII 字符与 DX 是否一致 3 3 验证 数据串搬家程序 验证 数据串搬家程序 1 用 A 命令键入下列程序 MOVSI 1000 MOVDI 1500 MOVCX 0F LOP MOVAL SI MOV DI AL INCSI INCDI LOOPLOP INT20 2 用 A 命令 DB 伪指令在 1000H 键入下列字符串 IBM PC COMPUTER 3 用 G 命令运行此程序 并用 D 命令检查目的地址处的字符与源串是 否一致 4 4 段寄存器概念及字符串传送指令练习 段寄存器概念及字符串传送指令练习 1 用 A 命令键入下列程序 MOVSI 0 MOVDI 0 MOVAX 1000 24 MOVDS AX MOVAX 1500 MOVES AX MOVCX 0F CLD REPMOVSB INT20 2 用 A 命令 DB 伪指令在 1000 0000 处键入字符串 IBM PC COMPUTER 并 用 D 命检查之 3 用 D 命令检查 0F00 1000 处内容 看是否一样 为什么 4 用 G 命令运行此程序 检查目的地址 1500 0000 处内容 并记下 DS 与 ES 值 三 实验任务三 实验任务 1 把实验准备 二 程序中的目的地址改为 1002H 再运行此程序 看 能不能把 1000H 开始的 字符串搬到 1002H 开始的地方去 2 修改实验准备 二 程序以做到把 1000H 开始的字符串搬到 1002H 开始的地方去 3 编一程序段 求双字 DX AX 的绝对值 4 将双字 DX AX 左移 4 位 四 实验报告要求四 实验报告要求 1 各项实验记录和思考题 2 要求给出任务 2 中要求编写的程序的清单 修改后 和调试记录 3 给出任务3 4的程序清单和调试记录 25 实验四实验四 汇编语言上机过程及屏幕字符显示程序汇编语言上机过程及屏幕字符显示程序 一 实验目的一 实验目的 1 熟练掌握汇编语言的程序格式 程序设计方法 学会使用 masm6 11 对源程序进行编译 链接 调试和运行 2 利用 DOS 功能调用 INT21H 的 2 号和 9 号功能进行屏幕显示的方法 3 利用 Break 退出程序的方法及局限性 4 汇编程序的编写 二 实验准备二 实验准备 1 编写实验任务要求的两个程序 画出流程图 给出程序清单 2 学习汇编语言程序的上机过程 1 建立汇编语言程序源文件 可使用任何一个文本编辑器 如 EDIT com 编辑源文件 源文件 源文件的扩展名通常取为 asm 图图 4 14 1 用用 EDITEDIT 编辑源文件编辑源文件 26 图图 4 24 2 EDITEDIT 环境下建立的文件环境下建立的文件 2 汇编文件 形成目标模块 MASM LT301A ASM 若文件有语法错误 据错误提示 返回 1 修改源文件 图图 4 34 3 MASMMASM LT301a asmLT301a asm 执行结果执行结果 可以看出文件有错 返回 1 根据提示修改源文件 11 行 重新编 译 图图 4 44 4 MASMMASM 编译成功编译成功 编译成功 则形成 OBJ目标文件 图图 4 54 5 在目录下看到的目标文件在目录下看到的目标文件 3 连接目标模块 形成可执行文件 LINK LT301A OBJ 27 图图 4 64 6 LINKLINK LT301a objLT301a obj 命令执行结果命令执行结果 若有错 据错误提示 返回 1 修改错误 若无错 则形成 EXE可执行文件和 MAP映像文件 4 DOS下直接键入可执行文件名 即可执行该程序 LT301A EXE 图图 4 74 7 运行结果运行结果 5 如果运行结果不对 需调试程序 查找原因 返回步骤 1 查看源文件 查找错误 修改文件 若无法通过查看 源文件找出错误 可在DEBUG下调试 EXE文件 找出错误 之处 再返回步骤 1 3 利用利用 INTINT 2121 09H09H 号功能调用显示字符串 验证以下程序号功能调用显示字符串 验证以下程序 1 用 A 命令在 100H 处键入下列程序 MOVAH 9 MOVDX 110 INT21 INT20 2 用 A 命令在 110H 处键入下列字符串的 ASCII 码 DB This is a sample 3 用 N 命令和 W 命令将此程序 包括数据区 存入文件名为 AA COM 的 磁盘文件中 存入前 BX CX 必须置为文件长度值 4 用 Q 命令退出 DEBUG 5 在 DOS 命令下打 AA 运行此程序 即在屏幕上显示 This is a sample 字符串 若不出现 用 DEBUG 检查程序有无错误 28 4 利用利用 INTINT 21H21H 2 2 号功能显示字符号功能显示字符 1 用 A 命令在 100H 处键入下列程序 XORDL DL MOV CX 100 LOP MOV AH 2 INT21 INCDL PUSH CX MOVCX 8 DELY PUSHCX MOVCX 256 J LOOPJ POPCX LOOPDELY POPCX LOOPLOP INT20 2 用 G 命令运行程序 即在屏幕上依次缓慢的显示 256 个 ASCII 字符 仔细观察每个字符 和 IBM PC ASCII 码表对照 看 07H 0DH 处控制 字符显示结果与表上有何不同 3 按 CTRL BREAK 退出此程序 若一次不行可多做几次 三 实验任务三 实验任务 1 编写一个简化的段定义结构程序 先提示输入数字 Input number 0 9 然后在下一行显示输 入的数字 结束 如果不是键入了 0 9 数字 就提示错误 ERROR 继续等待输入数字 2 编写一个完整的段定义结构程序 29 从键盘输入一个字符串 不超过 255 个 将其中的小写字母 转换成大写字母 然后按原来的顺序在屏幕上显示 要求对以 上两个程序 进行编译 链接 调试 运行 给出具体步骤 四 实验报告要求四 实验报告要求 1 自编程序清单及调试结果 30 实验五实验五 条件转移指令条件转移指令 一 实验目的一 实验目的 1 8088 指令 JZ JNZ JC JNC CMP SHR 2 程序 用字符搜索法确定字符串长度 3 程序 16 进制数化为 ASCII 码的一般方法 二 实验准备二 实验准备 1 1 1 编写实验任务要求的两个程序 2 写出调试以上程序 即修改程序参数 检查结果的操作方法 3 熟悉源程序汇编 连接命令的使用方法即要回答的内容 2 2 验证以下程序 验证以下程序 1616 进制数化进制数化 ASCIIASCII 码的一般方法码的一般方法 显示内存内容显示内存内容 1 用 A 命令在 100H 处键入下列程序 MOV SI 0 MOV BL 10 LOP MOV DL SI MOV CL 4 SHR DL CL CMP DL 0A JCJ1 ADDDL 7 J1 ADDDL 30 MOVAH 2 INT21 MOVDL SI 31 ANDDL 0F CMPDL 0A JCJ2 ADDDL 7 J2 ADDDL 30 MOVAH 2 INT21 MOVDL 20 MOVAH 2 INT21 INCSI DECBL JNZLOP INT20 2 用 N W 命令将此程序用 CC COM 文件名存入磁盘 3 用 Q 命令退出 DEBUG 4 在 DOS 命令状态下直接运行 CC COM 命令文件 应在屏幕上显示出内 存从 0000H 开始的 16 个字节的内容 若有错误 用 DEBUG 检查之 三 实验任务三 实验任务 1 自编程序 修改实验准备程序 二 使除了以 16 进制数形式显示 内存内容外 还能在其右边显示该 16 进制码所对应的 ASCII 字符 07 0D 的控制字符用 代替 2 BUFX BUFY 和 BUFZ 是 3 个有符号的十六进制数 编写一个比较相 等关系的程序 1 如果这 3 个数都不相等 则显示 0 2 如果这 3 个数中有两个数相等 则显示 1 3 如果这 3 个数都相等 则显示 2 32 四 实验步骤四 实验步骤 1 用 EDIT 或其它编辑软件 编写 ASM 源程序 2 对其进行汇编及连接 产生 EXE 文件 3 对 EXE 文件进行调试运行 a 用 DEBUG 调试运行 b 键入不同的字符 分别进行调试 c 在 MS DOS 下运行这两个 EXE 文件 五 实验报告要求五 实验报告要求 1 先完成准备实验 2 务 2 要求画出流程图 给出程序清单 给出调试结果 并存盘 3 实验体会 33 实验六实验六 循环程序是设计循环程序是设计 一 实验目的一 实验目的 1 灵活运用各类许循环指令 掌握循环程序的设计方法 2 学会针对不同的问题 选用不同的组织循环的方法 3 伪指令 EQU 及操作符 的使用 4 COM 文件的要求和生成过程 二 实验准备二 实验准备 1 1 编写任务要求的程序 编写任务要求的程序 2 2 学习 学习 COMCOM 文件的生成过程文件的生成过程 codesegment org100h assumecs code ds code

温馨提示

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

评论

0/150

提交评论