微机原理实验指导书_第1页
微机原理实验指导书_第2页
微机原理实验指导书_第3页
微机原理实验指导书_第4页
微机原理实验指导书_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

1 微机原理微机原理 实验指导书实验指导书 马马莉莉 主主编编 秦彩云秦彩云 参参编编 2 目目 录录 前 言 1 第一章第一章 实验的基本要求与方法实验的基本要求与方法 2 1 1 实验目的 2 1 2 实验要求 2 1 3 实验环境 3 1 4 上机实验步骤 3 第二章第二章 实验项目实验项目 7 实验一 调试程序 DEBUG 练习 7 实验二 循环程序设计 12 实验三 分支程序设计 14 实验四 子程序设计 18 实验五 DOS 功能调用程序设计 22 附附 录录 DEBUG 主要命令主要命令 24 1 前前 言言 微机原理微机原理 是高等学校非计算机专业的一门重要的专业是高等学校非计算机专业的一门重要的专业 基础课 通过本课程的学习 学生要掌握微型计算机的基本工基础课 通过本课程的学习 学生要掌握微型计算机的基本工 作原理以及汇编程序设计语言的知识 更重要的是在实践中逐作原理以及汇编程序设计语言的知识 更重要的是在实践中逐 步掌握程序设计的思想和方法 培养问题求解和程序设计的应步掌握程序设计的思想和方法 培养问题求解和程序设计的应 用能力 用能力 本书是为本书是为 微机原理微机原理 课程编写的配套实验指导用书 是课程编写的配套实验指导用书 是 围绕程序设计组织内容 特色鲜明 本书由围绕程序设计组织内容 特色鲜明 本书由 5 5 个实验项目组成 个实验项目组成 每个实验都提供编程或调试示例 以及实验题 学生可以先模每个实验都提供编程或调试示例 以及实验题 学生可以先模 仿示例操作 然后再做实验题 通过仿示例操作 然后再做实验题 通过 模仿模仿 改写改写 编写编写 的上的上 机实践过程 在循序渐进的引导中逐步熟悉编程环境 掌握机实践过程 在循序渐进的引导中逐步熟悉编程环境 掌握 DEBUGDEBUG 调试程序中各命令的使用方法 掌握汇编语言源程序的调试程序中各命令的使用方法 掌握汇编语言源程序的 编辑 汇编 连接 调试到运行的上机操作方法 理解和掌握编辑 汇编 连接 调试到运行的上机操作方法 理解和掌握 程序设计的思想 方法和技巧 最终使学生熟练掌握顺序结构 程序设计的思想 方法和技巧 最终使学生熟练掌握顺序结构 分支结构 循环结构和子程序结构的程序设计方法 分支结构 循环结构和子程序结构的程序设计方法 2 第一章第一章 实验的基本要求与方法实验的基本要求与方法 1 1 实验目的实验目的 学习程序设计的基本方法和技能 熟练掌握用汇编语言设计 编写 调学习程序设计的基本方法和技能 熟练掌握用汇编语言设计 编写 调 试和运行程序的方法 从而加深对微型计算机工作原理的理解 试和运行程序的方法 从而加深对微型计算机工作原理的理解 1 2 实验要求实验要求 1 1 上机前要做好充分准备 包括程序流程图 源程序清单 调试步骤 上机前要做好充分准备 包括程序流程图 源程序清单 调试步骤 测试方法 对运行结果的分析等 测试方法 对运行结果的分析等 2 2 上机时要遵守实验室的规章制度 爱护实验设备 要熟悉与实验有 上机时要遵守实验室的规章制度 爱护实验设备 要熟悉与实验有 关的系统软件的使用方法 在程序调试过程中 有意识地学习及掌握关的系统软件的使用方法 在程序调试过程中 有意识地学习及掌握 debugdebug 程序的各种操作命令 以便掌握程序的调试方法及技巧 程序的各种操作命令 以便掌握程序的调试方法及技巧 3 3 每个实验完成后 应写出实验报告 实验报告的格式和要求如下 每个实验完成后 应写出实验报告 实验报告的格式和要求如下 实验四实验四 一 实验目的及要求 一 实验目的及要求 二 软硬件平台 二 软硬件平台 三 实验内容 三 实验内容 实验内容应包括 程序流程图 调试情况 包括上机时遇到的问题及解决方法 观察到实验内容应包括 程序流程图 调试情况 包括上机时遇到的问题及解决方法 观察到 的现象及其分析 对程序设计技巧的总结及分析等 程序的输出结果及对结果的分析 的现象及其分析 对程序设计技巧的总结及分析等 程序的输出结果及对结果的分析 实验的心得体会等 运行结果等 实验的心得体会等 运行结果等 四 程序清单 源程序应加必要的注释 四 程序清单 源程序应加必要的注释 3 1 3 实验环境实验环境 微机原理课程的的实验环境如下 微机原理课程的的实验环境如下 1 1 硬件环境硬件环境 微型计算机一台微型计算机一台 2 2 软件环境软件环境 Windows2003 XPWindows2003 XP 操作系统操作系统 任意一种文本编辑器 任意一种文本编辑器 EDITEDIT NOTEPADNOTEPAD 记事本 记事本 WORDWORD 等 等 建议使用建议使用 EDITEDIT 或或 NOTEPADNOTEPAD 汇编程序 汇编程序 MASM EXEMASM EXE 连接程序 连接程序 LINK EXELINK EXE 调试程序 调试程序 DEBUG EXEDEBUG EXE 1 4 上机实验步骤上机实验步骤 1 1 确定源程序的存放目录 确定源程序的存放目录 建议源程序存放的目录名为建议源程序存放的目录名为 MASMMASM 并放在 并放在 D D 盘或盘或 E E 盘的根目录下 盘的根目录下 2 2 建立 建立 ASMASM 源程序源程序 建立建立 ASMASM 源程序可以使用源程序可以使用 EDITEDIT 或或 NOTEPADNOTEPAD 记事本 文本编辑器 记事本 文本编辑器 例如 建立源文件例如 建立源文件 HELLO ASMHELLO ASM 存放目录是 存放目录是 D MASMD MASM 注意 汇编语言源程序文件的扩展名最好起名为注意 汇编语言源程序文件的扩展名最好起名为 ASM ASM 这样能给后面的 这样能给后面的 汇编和连接操作带来很大的方便 汇编和连接操作带来很大的方便 3 3 用 用 MASM EXEMASM EXE 汇编源程序产生汇编源程序产生 OBJOBJ 目标文件目标文件 源文件源文件 HELLO ASMHELLO ASM 建立后 要使用汇编程序对源程序文件汇编 汇编后建立后 要使用汇编程序对源程序文件汇编 汇编后 产生二进制的目标文件 产生二进制的目标文件 OBJ OBJ 文件 文件 具体操作如下 具体操作如下 方法一 在方法一 在 WindowsWindows 中操作中操作 用资源管理器打开源程序目录用资源管理器打开源程序目录 D MASMD MASM 把 把 HELLO ASMHELLO ASM 拖到拖到 MASM EXEMASM EXE 程程 序图标上 序图标上 方法二 在方法二 在 DOSDOS 命令提示符窗口中操作 建议使用 命令提示符窗口中操作 建议使用 选择选择 开始开始 程序程序 附件附件 命令提示符命令提示符 打开 打开 DOSDOS 命令命令 提示符窗口 然后用提示符窗口 然后用 CDCD 命令转到源程序目录下 接着输入命令转到源程序目录下 接着输入 MASMMASM 命令 例如 命令 例如 C D D 4 D CDD CD MASM MASM D MASM MASMD MASM MASM HELLO ASM HELLO ASM 操作时的屏幕显示如图操作时的屏幕显示如图 1 1 所示 所示 图图 1 1 在在 DOSDOS 命令提示符窗口中进行汇编命令提示符窗口中进行汇编 不管用以上二个方法中的哪个方法 进入不管用以上二个方法中的哪个方法 进入 MASMMASM 程序后 都会提示让你程序后 都会提示让你 输入目标文件名 输入目标文件名 ObjectObject filenamefilename 并在方括号中显示默认的目标文件名 并在方括号中显示默认的目标文件名 后面的两个提示为可选项 直接按回车 注意 若打开后面的两个提示为可选项 直接按回车 注意 若打开 MASMMASM 程序时未给出源程序时未给出源 程序名 则程序名 则 MASMMASM 程序会首先提示让你输入源程序文件名 程序会首先提示让你输入源程序文件名 SourceSource filenamefilename 此时输入源程序文件名此时输入源程序文件名 HELLO ASMHELLO ASM 并回车 然后进行的操作与上面完全相同 并回车 然后进行的操作与上面完全相同 如果没有错误 如果没有错误 MASMMASM 就会在当前目录下建立一个就会在当前目录下建立一个 HELLO OBJHELLO OBJ 文件 名字文件 名字 与源文件名相同 只是扩展名不同 与源文件名相同 只是扩展名不同 如果源文件有错误 如果源文件有错误 MASMMASM 会指出错误的会指出错误的 行号和错误的原因 图行号和错误的原因 图 2 2 是在汇编过程中检查出一个错误的例子 是在汇编过程中检查出一个错误的例子 图图 2 2 有错误的汇编过程例子有错误的汇编过程例子 在这个例子中 可以看到源程序的错误类型有两类在这个例子中 可以看到源程序的错误类型有两类 警告错误警告错误 Warning Warning Errors Errors 警告错误不影响程序的运行 但可能会得 警告错误不影响程序的运行 但可能会得 出错误的结果 此例中无警告错误 出错误的结果 此例中无警告错误 5 严重错误严重错误 Severe Severe Errors Errors 对于严重错误 对于严重错误 MASMMASM 将无法生成将无法生成 OBJOBJ 文件 文件 此例中有一个严重错误 此例中有一个严重错误 在错误信息中 园括号里的数字为有错误的行号 在此例中 错误出现在错误信息中 园括号里的数字为有错误的行号 在此例中 错误出现 在第在第 5 5 行 行 后面给出了错误类型及具体错误原因 如果出现了严重错误 你 后面给出了错误类型及具体错误原因 如果出现了严重错误 你 必须重新进入必须重新进入 EDITEDIT 编辑器 根据错误的行号和错误原因来改正源程序中的错编辑器 根据错误的行号和错误原因来改正源程序中的错 误 直到汇编没有错为止 误 直到汇编没有错为止 注意 汇编程序只能指出程序的语法错误 而无法指出程序逻辑的错误 注意 汇编程序只能指出程序的语法错误 而无法指出程序逻辑的错误 4 4 用 用 LINK EXELINK EXE 产生产生 EXEEXE 可执行文件可执行文件 在上一步骤中 汇编程序产生的是二进制目标文件 在上一步骤中 汇编程序产生的是二进制目标文件 OBJOBJ 文件 文件 并不是 并不是 可执行文件 要想使我们编制的程序能够运行 还必须用连接程序可执行文件 要想使我们编制的程序能够运行 还必须用连接程序 LINK EXELINK EXE 把 把 OBJOBJ 文件转换为可执行的文件转换为可执行的 EXEEXE 文件 具体操作如下 文件 具体操作如下 方法一 在方法一 在 WindowsWindows 中操作中操作 用资源管理器打开源程序目录用资源管理器打开源程序目录 D MASMD MASM 把 把 HELLO OBJHELLO OBJ 拖到拖到 LINK EXELINK EXE 程程 序图标上 序图标上 方法二 在方法二 在 DOSDOS 命令提示符窗口中操作 建议使用 命令提示符窗口中操作 建议使用 选择选择 开始开始 程序程序 附件附件 命令提示符命令提示符 打开 打开 DOSDOS 命令命令 提示符窗口 然后用提示符窗口 然后用 CDCD 命令转到源程序目录下 接着输入命令转到源程序目录下 接着输入 LINKLINK 命令 例如 命令 例如 C D D D CDD CD MASM MASM D MASM LINKD MASM LINK HELLO OBJ HELLO OBJ 操作时的屏幕显示如图操作时的屏幕显示如图 3 3 所示 所示 图图 3 3 把把 OBJOBJ 文件连接成可执行文件文件连接成可执行文件 不管用以上二个方法中的哪个方法 进入不管用以上二个方法中的哪个方法 进入 LINKLINK 程序后 都会提示让你程序后 都会提示让你 输入可执行文件名 输入可执行文件名 RunRun filefile 并在方括号中显示默认的可执行文件名 建 并在方括号中显示默认的可执行文件名 建 议输入可执行文件的完整路径名 如 议输入可执行文件的完整路径名 如 D MASM HELLO EXE D MASM HELLO EXE 回车回车 后面的 后面的 6 两个提示为可选项 直接按回车 注意 若打开两个提示为可选项 直接按回车 注意 若打开 LINKLINK 程序时未给出程序时未给出 OBJOBJ 文件文件 名 则名 则 LINKLINK 程序会首先提示让你输入程序会首先提示让你输入 OBJOBJ 文件名 文件名 ObjectObject ModulesModules 此时 此时 输入输入 OBJOBJ 文件名文件名 HELLO OBJHELLO OBJ 并回车 然后进行的操作与上面完全相同 并回车 然后进行的操作与上面完全相同 如果没有错误 如果没有错误 LINKLINK 就会建立一个就会建立一个 HELLO EXEHELLO EXE 文件 如果文件 如果 OBJOBJ 文件有错文件有错 误 误 LINKLINK 会指出错误的原因 对于无堆栈警告 会指出错误的原因 对于无堆栈警告 WarningWarning NONO STACKSTACK segmentsegment 信息 可以不予理睬 它不影响程序的执行 如链接时有其它错误 信息 可以不予理睬 它不影响程序的执行 如链接时有其它错误 须检查修改源程序 重新汇编 连接 直到正确 须检查修改源程序 重新汇编 连接 直到正确 5 5 执行程序 执行程序 建立了建立了 HELLO EXEHELLO EXE 文件后 就可以直接在文件后 就可以直接在 DOSDOS 下运行此程序 如下所示 下运行此程序 如下所示 D HELLO D HELLO 回车回车 D D 程序运行结束后 返回程序运行结束后 返回 DOSDOS 如果运行结果正确 那么程序运行结束时 如果运行结果正确 那么程序运行结束时 结果会直接显示在屏幕上 如果程序不显示结果 我们如何知道程序是否正结果会直接显示在屏幕上 如果程序不显示结果 我们如何知道程序是否正 确呢确呢 例如 这里的例如 这里的 HELLO EXEHELLO EXE 程序并未显示出结果 所以我们不知道程序执程序并未显示出结果 所以我们不知道程序执 行的结果是否正确 这时 我们就要使用行的结果是否正确 这时 我们就要使用 DEBUGDEBUG 调试工具来查看运行结果 调试工具来查看运行结果 此外 大部分程序必须经过调试阶段才能纠正程序执行中的错误 调试程序此外 大部分程序必须经过调试阶段才能纠正程序执行中的错误 调试程序 时也要使用时也要使用 DEBUGDEBUG DEBUGDEBUG 的命令见附录 的命令见附录 7 第二章第二章 实验项目实验项目 实验一实验一 调试程序调试程序 DEBUG 练习练习 一 示例一 示例 例例 1 1 编写程序在以 编写程序在以 BLOCKBLOCK 开始的字符串中搜索关键字母开始的字符串中搜索关键字母 A A 若有关键 若有关键 字 则把搜索次数记入字 则把搜索次数记入 DI DI 并且将关键字的地址存入并且将关键字的地址存入 POINTRPOINTR 单元 若没有关单元 若没有关 键字 键字 DI 0DI 0 设串长为 设串长为 8 8 一一 程序清单如下 程序清单如下 DATADATASEGMENTSEGMENT BLOCKBLOCKDBDB EUHA23DC EUHA23DC COUNTCOUNTEQUEQU8 8 POINTRPOINTRDWDW DATADATAENDSENDS CODECODESEGMENTSEGMENT ASSUMEASSUMECS CODE DS DATACS CODE DS DATA START START MOVMOVAX DATAAX DATA MOVMOVES AXES AX MOVMOV DI OFFSETDI OFFSET BLOCKBLOCK MOVMOVCX COUNTCX COUNT MOVMOVAL A AL A CLDCLD REPNEREPNESCASBSCASB JZJZFOUNDFOUND MOVMOVDI 0DI 0 JMPJMPDONEDONE FOUND FOUND DECDECDIDI MOVMOVES POINTR DIES POINTR DI MOVMOVBX OFFSETBX OFFSET BLOCKBLOCK SUBSUBDI BXDI BX DONE DONE MOVMOV AH 4CHAH 4CH INTINT21H21H CODECODEENDSENDS 8 ENDENDSTARTSTART 二 程序调试过程 二 程序调试过程 1 1 调用编辑软件建立源程序 调用编辑软件建立源程序 如如 2 2 用汇编程序 用汇编程序 masmmasm 对源文件汇编产生目标文件对源文件汇编产生目标文件 obj obj 如汇编指示出错则需重新调用编辑程序修改错误 直至汇编通过为止 如汇编指示出错则需重新调用编辑程序修改错误 直至汇编通过为止 3 3 用连接程序 用连接程序 linklink 产生执行文件产生执行文件 exe exe 4 4 调用 调用 debugdebug 程序调试 调用方法 程序调试 调用方法 D MASM DEBUGD MASM DEBUG TIAOSHI EXETIAOSHI EXE 此时 此时 debugdebug 已将执行程序已将执行程序 TIAOSHI EXETIAOSHI EXE 装入内存 可直接使用装入内存 可直接使用 DEBUGDEBUG 命令运行调试程序 可先用命令运行调试程序 可先用 U U 命令显示程序 以便了解指令的地址 显示结命令显示程序 以便了解指令的地址 显示结 果如下 果如下 9 将将 断点断点 设置在程序的设置在程序的 主要部分运行主要部分运行 以前 然后根据其中指示的以前 然后根据其中指示的 ESES 寄存器内容查看附加段的情况如下 寄存器内容查看附加段的情况如下 用用 G G 命令运行程序命令运行程序 用用 D D 命令查看结果命令查看结果 二 实验题二 实验题 一 一 预习内容预习内容 1 1 工具软件工具软件 MASMMASM LINKLINK 的使用的使用 2 2 常用常用 DEBUGDEBUG 命令的使用命令的使用 G D R T U QG D R T U Q 3 3 完整程序设计方法的格式 完整程序设计方法的格式 二 二 实验目的及要求实验目的及要求 1 1 掌握常用工具软件掌握常用工具软件 MASMMASM LINKLINK 的使用的使用 2 2 掌握常用掌握常用 DEBUGDEBUG 命令命令 G D R T U QG D R T U Q 能灵活使用这些命令调试程序能灵活使用这些命令调试程序 3 3 掌握完整程序设计方法的格式 能正确书写数据段 代码段等 掌握完整程序设计方法的格式 能正确书写数据段 代码段等 三 三 实验内容实验内容 1 1 比较两个字符串比较两个字符串 string1string1 和和 string2string2 所含的字符是否相同所含的字符是否相同 如果相同如果相同 运行结果运行结果 10 则显示则显示 Match Match 否则显示否则显示 No No match match 请读程序 并将程序补充完整 请读程序 并将程序补充完整 DSEGDSEG SEGMENTSEGMENT string1string1 dbdb Move Move thethe cursorcursor backward backward string2string2 dbdb Move Move thethe cursorcursor backward backward mess1mess1 dbdb Match 13 10 Match 13 10 mess2mess2 dbdb No No match 13 10 match 13 10 DSEGDSEG ENDSENDS CSEGCSEG SEGMENTSEGMENT assumeassume cs CSEG cs CSEG ds DSEG ds DSEG es DSEGes DSEG MAINMAIN PROCPROC FARFAR start start movmov ax ax dsegdseg movmov ds ds axax movmov es es axax lealea sisi string1 string1 cldcld repzrepz cmpsbcmpsb jzjz matchmatch lealea dx mess2dx mess2 jmpjmp shortshort dispdisp match match lealea dx mess1dx mess1 disp disp movmov ah 09hah 09h intint 21h21h movmov ax ax 4c00h4c00h intint 21h21h MAINMAIN ENDPENDP CSEGCSEG ENDSENDS ENDENDSTARTSTART 2 2 实验步骤 实验步骤 1 1 用文字编辑工具 记事本或 用文字编辑工具 记事本或 EDITEDIT 将源程序输入完整后保存在 将源程序输入完整后保存在 d masmd masm 下下 注意保存时文件扩展名应为注意保存时文件扩展名应为 asm asm 如如 lab1 asm lab1 asm 2 2 用汇编程序用汇编程序 masmmasm 对源文件进行汇编对源文件进行汇编 产生产生 obj obj 文件和文件和 LST LST 文件 文件 若汇编时提示有错若汇编时提示有错 用文字编辑工具修改源程序后重新汇编 直至通过 用文字编辑工具修改源程序后重新汇编 直至通过 3 3 用连接程序 用连接程序 linklink 将将 obj obj 文件连接成可执行的文件连接成可执行的 exe exe 文件文件 如如 lab1 exe lab1 exe 11 4 4 在 在 DOSDOS 状态下直接运行状态下直接运行 linklink 产生的产生的 exe exe 文件文件 如如 lab1 lab1 记录实验 记录实验 结果 结果 5 5 用 用 debugdebug 调试程序 熟悉调试程序 熟悉 debugdebug 命令的使用命令的使用 1 1 键入键入 debugdebug lab1 exelab1 exe 进入进入 debugdebug 控制控制 显示提示符显示提示符 2 2 用命令用命令 u u 检查键入的程序并记录 特别注意左边的机器码和指令地检查键入的程序并记录 特别注意左边的机器码和指令地 址 如果一条址 如果一条 u u 命令没有显示完全 可以再次输入命令没有显示完全 可以再次输入 u u 命令 该命令会紧接着命令 该命令会紧接着 上一个命令的输出继续显示 上一个命令的输出继续显示 3 3 用命令用命令 g g 地址地址 在在 lealea sisi string1 string1 指令处设置断点 其中 命指令处设置断点 其中 命 令中的地址项可以从上条命令令中的地址项可以从上条命令 u u 的运行结果获得 的运行结果获得 4 4 用命令用命令 r r 查看各寄存器的情况并记录 查看各寄存器的情况并记录 5 5 用命令用命令 d0d0 查看数据段的情况并记录 查看数据段的情况并记录 6 6 用命令用命令 g g 执行程序并记录 执行程序并记录 7 7 用命令用命令 e e 地址地址 的方式修改数据区的字符串 将数据段变量的方式修改数据区的字符串 将数据段变量 string1string1 的内容修改为的内容修改为 Move Move thethe cursorcursor forward forward 其中 其中 地址地址 指需要指需要 修改的数据段内存单元偏移地址 可根据修改的数据段内存单元偏移地址 可根据 d0d0 命令获得 命令获得 8 8 重新设置寄存器重新设置寄存器 IPIP 再次用命令 再次用命令 g g 执行程序 查看执行结果 执行程序 查看执行结果 9 9 用命令用命令 q q 退出退出 debugdebug 如果在上述步骤中碰到异常 可以先用 如果在上述步骤中碰到异常 可以先用 q q 命命 令退出后再进入调试 令退出后再进入调试 四 实验报告及作业 四 实验报告及作业 1 1 报告需写出实验步骤及每步的实验结果 并对实验结果进行必要的 报告需写出实验步骤及每步的实验结果 并对实验结果进行必要的 分析 分析 2 2 分析程序 画出程序流程图 分析程序 画出程序流程图 3 3 汇编 连接及调试时产生的错误 其原因及解决办法 汇编 连接及调试时产生的错误 其原因及解决办法 4 4 思考 思考 1 1 上述实验中用上述实验中用 e e 修改数据段的内容 是否改变原文件修改数据段的内容 是否改变原文件 lab1 asmlab1 asm 的内的内 容 容 2 2 总结汇编程序调试的基本步骤 总结汇编程序调试的基本步骤 实验二实验二 循环程序设计循环程序设计 一 示例一 示例 12 例例 2 2 求 求 1 2 3 1001 2 3 100 将结果存放在数据段中 将结果存放在数据段中 RESULTRESULT 单元中 单元中 一一 程序清单如下 程序清单如下 DATADATASEGMENTSEGMENT RESULTRESULTDWDW DATADATAENDSENDS CODECODESEGMENTSEGMENT ASSUMEASSUME CS CODE DS DATACS CODE DS DATA START START MOVMOVAX DATAAX DATA MOVMOVDS AXDS AX MOVMOV AX AX 0 0 MOVMOV BX BX 0 0 MOVMOV CX CX 64H64H 64H 100D 64H 100D SUM SUM INCINC BXBX ADDADD AX AX BXBX LOOPLOOP SUMSUM MOVMOV RESULT AXRESULT AX MOVMOVAH 4CHAH 4CH INTINT21H21H CODECODEENDSENDS ENDENDSTARTSTART 二二 程序调试与运行情况 程序调试与运行情况 13 二 实验题二 实验题 一 预习内容 一 预习内容 1 1 循环程序设计方法 循环程序设计方法 二 实验目的及要求 二 实验目的及要求 1 1 掌握 掌握 whilewhile 型循环程序设计方法 型循环程序设计方法 2 2 掌握 掌握 do whiledo while 型循环设计方法 型循环设计方法 三 实验内容 两个题目任选一个 三 实验内容 两个题目任选一个 1 1 编写程序统计寄存器编写程序统计寄存器 AXAX 中二进制数位中中二进制数位中 0 0 1 1 的个数 将的个数 将 0 0 的个数存的个数存 入入 CHCH 将 将 1 1 的个数存入的个数存入 CLCL 2 2 设内存中从设内存中从 STRINGSTRING 开始的字符串 以回车符结束 编写程序 统计开始的字符串 以回车符结束 编写程序 统计 该串的实际长度该串的实际长度 不包含回车符不包含回车符 统计结果存入 统计结果存入 CLCL 中 中 四 实验报告 四 实验报告 14 1 1 分析问题 画出程序流程图 写出程序源代码 分析问题 画出程序流程图 写出程序源代码 2 2 汇编 连接及调试时产生的错误 其原因及解决办法 汇编 连接及调试时产生的错误 其原因及解决办法 3 3 记录每次执行转移指令时寄存器 记录每次执行转移指令时寄存器 cscs ipip 的值 的值 实验三实验三 分支程序设计分支程序设计 一 示例一 示例 例例 3 3 以 以 STRINGSTRING 为首地址的内存单元中存放了一个字符串 以为首地址的内存单元中存放了一个字符串 以 0 0 作为结作为结 束 编程将其中的小写字母转换成大写字母 束 编程将其中的小写字母转换成大写字母 一 程序清单如下 一 程序清单如下 datasgdatasg segmentsegment stringstring dbdb beginerr s beginerr s all dkfjsall dkfjs dsfijrfEEDE 0dsfijrfEEDE 0 datasgdatasg endsends codecode segmentsegment assumeassume cs code ds datasgcs code ds datasg start start movmov ax datasgax datasg movmov ds axds ax lealea si stringsi string letterc letterc movmov al si al si cmpcmp al 0al 0 jzjz okok cmpcmp al a al a jljl s s cmpcmp al z al z jgjg s s subsub al 20hal 20h movmov si al si al s s incinc sisi jmpjmp lettercletterc ok ok movmov ax 4c00hax 4c00h intint 21h21h codecode endsends endend startstart 15 二 程序调试及运行情况 二 程序调试及运行情况 16 二 实验题二 实验题 一 预习内容 一 预习内容 1 1 分支程序设计方法 分支程序设计方法 2 2 利用转移指令 利用转移指令 jljl jmpjmp 实现多路分支的方法 实现多路分支的方法 二 实验目的及要求 二 实验目的及要求 1 1 掌握分支程序设计方法 掌握分支程序设计方法 2 2 掌握利用转移指令 掌握利用转移指令 jljl jmpjmp 实现多路分支的方法 实现多路分支的方法 三 实验内容 三 实验内容 1 1 统计学生成绩 设有统计学生成绩 设有 1010 个学生的成绩分别为个学生的成绩分别为 5656 6969 8484 8282 7373 8888 9999 6363 100100 和和 8080 分 试编制程序分别统计低于分 试编制程序分别统计低于 6060 分 分 60 6960 69 分 分 70 7970 79 分 分 80 8980 89 分 分 90 9990 99 分及分及 100100 分的人数 并分别存分的人数 并分别存 放到放到 s5s5 s6s6 s7s7 s8s8 s9s9 及及 s10s10 单元中单元中 DSEGDSEG SEGMENTSEGMENT gradegrade dwdw 56 69 84 82 73 88 99 63 100 8056 69 84 82 73 88 99 63 100 80 s5s5 dwdw 0 0 s6s6 dwdw 0 0 s7s7 dwdw 0 0 s8s8 dwdw 0 0 s9s9 dwdw 0 0 s10s10 dwdw 0 0 DSEGDSEG ENDSENDS CSEGCSEG SEGMENTSEGMENT assumeassume cs CSEG cs CSEG ds DSEGds DSEG start start movmov ax ax dsegdseg movmov ds ds axax movmov cx 10cx 10 movmov bx offsetbx offset gradegrade compare movcompare mov ax ax bx bx cmpcmp ax 60ax 60 jljl fivefive 17 cmpcmp ax 70ax 70 jljl sixsix cmpcmp ax 80ax 80 jljl sevenseven cmpcmp ax 90ax 90 jljl eighteight cmpcmp ax 100ax 100 jnejne ninenine nine nine incinc s9s9 jmpjmp shortshort change addrchange addr eight eight incinc s8s8 jmpjmp shortshort change addrchange addr seven seven incinc s7s7 jmpjmp shortshort change addrchange addr six six incinc s6s6 jmpjmp shortshort change addrchange addr five five incinc s5s5 change addr change addr movmov ax ax 4c00h4c00h intint 21h21h CSEGCSEG ENDSENDS endend startstart 2 2 实验步骤实验步骤 1 1 阅读程序 将程序补充完整 阅读程序 将程序补充完整 2 2 输入 汇编并连接此程序 输入 汇编并连接此程序 3 3 在在 DEBUGDEBUG 下运行此程序 记录运行结果 下运行此程序 记录运行结果 4 4 单步运行程序 记录前五次执行转移指令后寄存器单步运行程序 记录前五次执行转移指令后寄存器 cscs ipip 的值 的值 四 实验报告或作业 四 实验报告或作业 18 1 1 分析程序 画出程序流程图 分析程序 画出程序流程图 2 2 汇编 连接及调试时产生的错误 其原因及解决办法 汇编 连接及调试时产生的错误 其原因及解决办法 3 3 每次执行转移指令时寄存器 每次执行转移指令时寄存器 cscs ipip 的值 的值 4 4 最终运行结果 即 最终运行结果 即 s5s5 s6s6 s7s7 s8s8 s9s9 及及 s10s10 的值 的值 5 5 思考 思考 如何修改程序使源程序先统计如何修改程序使源程序先统计 s10 s10 然后依次统计然后依次统计 s9 s8 s7 s6 s5 s9 s8 s7 s6 s5 实验四实验四 子程序设计子程序设计 一 示例一 示例 例例 4 4 以 以 STRINGSTRING 为首地址的内存单元中存放了一个字符串 以为首地址的内存单元中存放了一个字符串 以 0 0 作为结作为结 束 编写子程序束 编写子程序 lettercletterc 将其中的小写字母转换成大写字母 将其中的小写字母转换成大写字母 一 程序清单如下 一 程序清单如下 datasgdatasg segmentsegment stringstring dbdb beginerr s beginerr s all dkfjsall dkfjs dsfijrfEEDE 0dsfijrfEEDE 0 datasgdatasg endsends codecode segmentsegment assumeassume cs code ds datasgcs code ds datasg start start movmov ax datasgax datasg movmov ds axds ax movmov si offsetsi offset stringstring callcall lettercletterc movmov ax 4c00hax 4c00h intint 21h21h lettercletterc procprocnearnear movmov al si al si cmpcmp al 0al 0 jzjz okok cmpcmp al a al a jljl s s cmpcmp al z al z 19 jgjg s s subsub al 20hal 20h movmov si al si al s s incinc sisi jmpjmp lettercletterc ok ok retret lettercletterc endpendp codecode endsends endend startstart 二 调试及运行情况 二 调试及运行情况 20 二 实验题二 实验题 一 预习内容 一 预习内容 1 1 子程序调用方法和参数传递方式 子程序调用方法和参数传递方式 2 2 过程调用伪指令 过程调用伪指令 PROCPROC ENDPENDP 和和 NEARNEAR 3 3 子程序调用中堆栈的用法 子程序调用中堆栈的用法 二 实验目的要求 二 实验目的要求 1 1 掌握子程序调用方法和参数传递方式 掌握子程序调用方法和参数传递方式 2 2 掌握过程调用伪指令 掌握过程调用伪指令 PROCPROC ENDPENDP 和和 NEARNEAR 3 3 理解子程序调用中堆栈的用法 理解子程序调用中堆栈的用法 三 实验内容 三 实验内容 1 1 分数统计 设有分数统计 设有 1010 个学生的成绩分别是个学生的成绩分别是 7676 6969 8484 9090 7373 8888 9999 6363 100100 和和 8080 分 试编制子程序分 试编制子程序 ACCOUNTACCOUNT 统统 计计 60 6960 69 分 分 70 7970 79 分 分 80 8980 89 分 分 90 9990 99 分和分和 100100 分的人数并分别存放到分的人数并分别存放到 S6 S7 S8 S9 S10S6 S7 S8 S9 S10 单元中 单元中 提示 提示 1 1 主程序调用子程序主程序调用子程序 ACCOUNTACCOUNT 统计分数 统计分数 2 2 可采用约定存储单元的方法传递参数 可采用约定存储单元的方法传递参数 DSEGDSEG SEGMENTSEGMENT gradegrade dwdw 76 69 84 90 73 88 99 63 100 8076 69 84 90 73 88 99 63 100 80 21 s6s6 dwdw 0 0 s7s7 dwdw 0 0 s8s8 dwdw 0 0 s9s9 dwdw 0 0 s10s10 dwdw 0 0 DSEGDSEG ENDSENDS CSEGCSEG SEGMENTSEGMENT assumeassume cs CSEG cs CSEG ds DSEGds DSEG start start movmov ax ax dsegdseg movmov ds ds axax movmov bx offsetbx offset gradegrade callcall accountaccount movmov ah 4chah 4ch intint 21h21h accountaccount procproc nearnear accountaccount endpendp CSEGCSEG ENDSENDS endend startstart 2 2 实验步骤实验步骤 1 1 认真阅读程序 自己编写子程序 认真阅读程序 自己编写子程序 account account 将程序补充完整 然后汇编 将程序补充完整 然后汇编 链接 生成可执行文件 链接 生成可执行文件 2 2 用 用 DEBUGDEBUG 的断点命令和的断点命令和 T T 命令运行此程序 观察并记录过程调用时的命令运行此程序 观察并记录过程调用时的 SPSP 和堆栈内容 和堆栈内容 3 3 记录数据段各变量的最后结果 记录数据段各变量的最后结果 四 实验报告及作业 四 实验报告及作业 1 1 画出子程序 画出子程序 accountaccount 的流程图 的流程图 2 2 汇编 连接及调试时产生的错误 其原因及解决办法 汇编 连接及调试时产生的错误 其原因及解决办法 3 3 记录执行 记录执行 callcall accountaccount 指令后指令后 spsp 以及以及 sp sp 的值 的值 4 4 记录最后的输出结果 记录最后的输出结果 22 实验五实验五 DOS 功能调用程序设计功能调用程序设计 一 示例一 示例 例例 5 5 以 以 BUFBUF 为首地址的内存单元中存放了一个字符串 以为首地址的内存单元中存放了一个字符串 以 作为结束符 作为结束符 编程将其在屏幕上显示出来 编程将其在屏幕上显示出来 一 程序清单如下 一 程序清单如下 DATADATASEGMENTSEGMENT BUFBUFDBDB AE3 34df AE3 34df DATADATAENDSENDS CSEGCSEGSEGMENTSEGMENT ASSUMEASSUMECS CSEG DS DATACS CSEG DS DATA START START MOVMOV AX DATAAX DATA MOVMOVDS AXDS AX LEALEADX BUFDX BUF MOVMOVAH 09HAH 09H INTINT21H21H MOVMOVAH 4CHAH 4CH INTINT21H21H CSEGCSEGENDSENDS ENDENDSTARTSTART 二 调试及运行情况二 调试及运行情况 23 二 实验题二 实验题 一 预习内容 一 预习内容 1 1 DOSDOS 中断 字符输入输出的方法中断 字符输入输出的方法 2 2 循环 选择程序设计方法 循环 选择程序设计方法 二 目的要求 二 目的要求 1 1 熟悉 熟悉 DOSDOS 中断 掌握字符输入输出的方法中断 掌握字符输入输出的方法 2 2 继续熟悉基本程序设计方法 包括循环程序设计 分支程序设计和子 继续熟悉基本程序设计方法 包括循环程序设计 分支程序设计和子 程序设计等程序设计等 三 实验内容 三 实验内容 1 1 题目 分类统计字符个数 程序接收用户键入的一行字符 字符个数题目 分类统计字符个数 程序接收用户键入的一行字符 字符个数 不超过不超过 8080 个 该字符串用回车符结束 个 该字符串用回车符结束 并按字母 数字及其它字符分类计 并按字母 数字及其它字符分类计 数 然后将结果存入以数 然后将结果存入以 letterletter digitdigit 和和 otherother 为名的存储单元中 为名的存储单元中 2 2 提示 提示 程序可采用程序可采用 0AH0AH 功能调用把键入字符直接送到缓冲区中 然后再逐个取功能调用把键入字符直接送到缓冲区中 然后再逐个取 出分类计数 也可采用出分类计数 也可采用 01H01H 功能调用在接收字符后分类计数然后再存入缓冲功能调用在接收字符后分类计数然后再存入缓冲 区中 区中 3 3 程序需进入程序需进入 debugdebug 运行并查看计数结果 运行并查看计数结果 四 实验报告及作业 四 实验报告及作业 1 1 写出源程序 画出程序流程图 写出源程序 画出程序流程图 2 2 汇编 汇编 连接及调试时产生的错误 其原因及解决办法 连接及调试时产生的错误 其原因及解决办法 3 3

温馨提示

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

评论

0/150

提交评论