




已阅读5页,还剩58页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微机原理与接口技术 实验指导书 方义秋 编著 计算机实验教学中心 精品文档 2欢迎下载 目 录 实验要求 3 第一部分 微机原理及汇编程序设计 4 实验一 认识 Tddebug 集成操作软 件 4 实验二 I O 程序设计 9 实验三 分支程序设 计 11 实验四 循环程序设 计 13 实验五 运算类程序设 计 15 实验六 代码转换程序设 计 19 实验七 宏指令应 用 24 实验八 字符串处 理 26 实验九 数据表格处 精品文档 3欢迎下载 理 28 实验十 子程序及软中断程序设 计 29 第二部分 接口部分实 验 33 实验十一 PC 机内部 8259 中断应 用 33 实验十二 PCI 总线中断应 用 39 实验十三 8254 定时 计数器应 用 45 实验十四 8255 并行接口应 用 53 实验十五 交通灯控 制 58 附录一 TD PIT B 实验系统的硬件环境 60 精品文档 4欢迎下载 实验要求实验要求 预习实验内容预习实验内容 1 明确本次实验目的及任务 了解和掌握实验所需的理论知识及相关接口芯片的工 作原理 2 通过阅读示例程序 掌握编程方法及相关技巧 3 对每次实验 选择其中一个项题目自己设计编写程序 实验过程实验过程 1 带上理论课教材 实验指导书及准备的实验程序 2 若为接口电路 请关闭电源搭接线路 检查无误后 再开电源 3 调试程序 记录结果 4 实验结束后 请关闭电源 将各实验器材归位 清洁自己的桌面 编写实验报告编写实验报告 1 实验题目 2 分析设计思想 绘制实验原理图 流程图 3 程序清单及相关注释 4 分析实验结果 5 说明在实验过程中遇到了哪些问题 是如何处理的 6 收获体会 不足之处和今后应注意的问题等 注意事项注意事项 1 实验以前 应确保 PCI 总线扩展卡与实验箱间扁平电缆连接的正确性 2 实验前后应仔细检查实验箱 防止导线 元件等物品落入装置内 导致线路短路 元 件损坏 3 爱护实验设施 插接 拔取排线时 手握白色插头 不得不得从线中间拉取 4 实验箱电源关闭后 不能立即重新开启 关闭与重新开启之间至少应有 30 秒间隔 精品文档 5欢迎下载 第一部分第一部分 微机原理及汇编程序设计微机原理及汇编程序设计 实验一 认识实验一 认识 T Tddebugddebug 集成操作软件集成操作软件 一 一 实验目的实验目的 1 熟悉汇编程序的开发过程 2 认识 Tddebug 集成操作软件 3 掌握在 Tddebug 集成环境中编辑 编译 连接汇编语言程序方法 4 掌握 INT 21H 软件中断来调用 DOS 内部子程序的方法 二 二 实验设备实验设备 PC 微机一台 三 三 汇编语言程序的开发过程汇编语言程序的开发过程 汇编语言程序的开发过程如图 1 1 所示 这个过程主要有编辑 编译 链接几个步骤 构成 1 源程序的编辑 E EDITEDIT TEST ASMTEST ASM 编辑过程就是将源程序输入内存 生成一个扩展名为 ASM 的文本文件并存入硬盘 2 源程序的编译 E TASMTASM TEST ASMTEST ASM 编译也称为汇编 就是利用汇编器 如 TASM 或 MASM 对源程序进行编译 生成扩展 名为 OBJ 的目标文件 在编译过程中 检查语法错误 若有错 则不生成目标代码文件 并给出错误信息 根据错误信息应返回到编辑状态 修改源程序 3 目标程序的链接 E TLINKTLINK TEST OBJTEST OBJ 链接过程是利用链接程序 如 TLINK 或 LINK 将用户目标程序和库文件链接 定位 生成扩展名为 EXE 的可执行文件 链接时 如果链接文件找不到所需要的链接信息 则发 出错误信息 不生成可执行文件 4 调试可执行程序 汇编 源程序 调用编辑程序 edit exe 调用编译程序 tasm exe或masm exe 调用链接程序 tlink exe或link exe 编辑 asm汇编 obj链接 exe com 编辑编译链接 图 1 1 汇编语言程序开发过程 精品文档 6欢迎下载 E TDTD TEST EXETEST EXE 如果生成的 EXE 文件运行后 并没有按照设计意图运行 就需要对程序进行调试 找 出错误 再对源程序进行修改 即重复进行编辑 编译 链接 调试 直到生成完全正确 的可执行文件为止 四 四 TddebugTddebug 集成操作软件使用说明集成操作软件使用说明 1 该软件是集编辑 Edit exe 编译 Tasm exe 连接 Link exe 和调试 TD exe 等多个功能于一体 可在 DOS 环境下运行 为用户提供了一个学习微 机原理的实验平台 2 启动 Tddebug D wjyl TddebugTddebug 若启动成功 进入主界面 3 Tddebug 的菜单结构 主菜单 子菜单 菜单说明 Edit 编辑源文件 asm Compile Compile 编译源文件 asm Link 连接目标文件 obj Build All 编译和连接 Pmrun 进入保护模式调试状态 Rmrun Run 运行实模式程序 exe Debug 进入实模式调试状态 exe Help 版本信息 Quit 退出 Tddebug 4 菜单选择 1 快捷键选择主菜单 ALT 热键 2 按左右键或直接使用快捷键在主菜单之间切换 使用上下键可选择子菜单中的菜 单项 5 执行菜单项 选中要执行的菜单项 键入 Enter 键 系统弹出对话框 输入需操作的文件名 以 Enter 键结尾 取消操作按 Esc 键 6 实模式调试窗口说明 1 键入 Alt R 选择 Rmrun 主菜单的 Debug 子菜单弹出实模式调试窗口 此时可能 会叠加一个报告无符号表的对话框 按 Esc 键关闭该对话框 2 该窗口实际是 Turbo Debugger 调试器窗口 简称 TD 其窗口的划分如图 1 1 所 示 主菜单条 代码显示调试区寄存器显示调试区 标志寄存器显示调试 区 内存数据显示调试区堆栈显示调试区 快捷键操作提示区 图 1 1 Turbo Debugger 调试窗口划分图 3 主菜单中包含了 File Edit View Run Breakpoints Data Options Windows 和 Help 共 9 个菜单项 可使用热键选择相应的菜单 在调试程序或操作调试器中会使用一些快捷键来实现一些功 能 下面将列出常用功能的快捷键及实现功能 精品文档 7欢迎下载 快捷键 快捷键 F1 显示帮助窗口 F2 设置 清除断点 F4 执行到光标处 F5 放大 缩小窗口 F7 单步执行 F8 单句执行 F9 运行程序 F10 激活主菜单 Ctrl Break 终止程序执行 Alt X 退出 TD Tab 切换焦点区域 当焦点区域在寄存器显示区中时 当焦点区域在寄存器显示区中时 Ctrl R 切换 16 位 32 位通用寄存器并显示 Ctrl I 使光条指示寄存器的内容加 1 Ctrl D 使光条指示寄存器的内容减 1 Ctrl Z 使光条指示寄存器的内容清零 Ctrl C 手动修改光条指示寄存器的内容 当焦点区域在数据显示区中时 当焦点区域在数据显示区中时 Ctrl D 修改数据显示格式 Ctrl G 指定需要显示的内存区域首地址 Ctrl S 查找指定的字节值表 Ctrl C 修改光标当前指示存储单元的内容 当焦点区域在代码显示区中时 当焦点区域在代码显示区中时 Ctrl G 指定需要显示的代码区域首地址 Ctrl S 查找指定的指令 数字键 字符 修改光标当前指示指令 五 实验内容及说明实验内容及说明 1 实验内容 数据传送实验 1 编程将数据段中的一个字符串传送到附加段中 并输出附加段中的目标字符 串到屏幕上 参见示例出程序 2 修改此程序 采用字符串传送指令完成 2 2 实验中使用 DOS 功能调用 INT 21H 参见教材 32 位微型计算机原理与接口技术 89 页 1 1 显示字符串 显示字符串 入口 AH 09H 调用参数 DS DX 串首地址 为结束字符 2 2 返回 返回 DOSDOS 系统系统 入口 AH 4CH 调用参数 AL 返回码 3 有关字符串的操作指令 参见教材 32 位微型计算机原理与接口技术 62 页 4 实验目的 通过对该程序进行调试 查看程序段 数据段 附加段装入内存后的 分配情况 单步执行数据传送指令后 观察各个寄存器及数据区的内容 精品文档 8欢迎下载 六 六 实验步骤实验步骤 1 运行 Tddebug 软件 选择 Edit 菜单编写实验程序 2 使用 Compile 菜单中的 Compile 和 Link 对实验程序进行汇编 连接 生成执行文 件 3 使用 Rmrun 菜单中的 Run 运行程序 观察运行结果 4 使用 Rmrun 菜单中的 Debug 调试程序 查看程序段 数据段 附加段装入内存后 的分配情况 单步执行数据传送指令后 观察各寄存器及数据区的内容 过程如 下 1 按 F7 单步执行 在代码区中有一个三角 表示正在执行的指令 每一条指令 的执行一定会使目标寄存器和状态寄存器发生变化 从相关窗口看结果 2 检查内存数据区的内容 关键是找出用户程序的数据段和附加段 方法 1 在 CPU 窗口按 Tab 键使内存数据显示区成为活动区 按 Ctrl G 键 输入 DS 或 ES 寄存器的值 偏移地址 即可显示用户指定的数据区 方法 2 选择菜单 View Dump 弹出内存数据显示窗口 3 查看执行结果 按 Alt F5 切换到用户窗口 5 更改数据区中的数据 考察 调试程序的正确性 七 七 参考程序清单参考程序清单 数据传送实验 采用相对寻址方式 DDATASEGMENT 定义源数据段 MSR DB HELLO WORLD LEN EQU MSR DDATAENDS EXDA SEGMENT 定义附加数据段 MSD DB LEN DUP EXDA ENDS MYSTACK SEGMENT STACK 定义堆栈段 DW 20 DUP MYSTACK ENDS CODE SEGMENT 定义代码段 ASSUME CS CODE DS DDATA ES EXDA START MOV AX DDATA MOV DS AX 装载数据段寄存器 MOV AX EXDA MOV ES AX 装载附加数据段寄存器 MOV SI OFFSET MSR MOV DI OFFSET MSD MOV CX LEN MOV BX 0 NEXT MOV AL MSR BX 开始传输数据 MOV ES MSD BX AL 精品文档 9欢迎下载 INCBX LOOP NEXT PUSH ES POP DS 将附加段寄存器指向的段值赋给数据段寄存器 MOV DX OFFSET MSD MOV AH 9 INT 21H 显示字符串 MOV AH 4CH INT 21H 返回 DOS 状态 CODE ENDS END START 精品文档 10欢迎下载 实验二 实验二 I OI O 程序设程序设计计 一 一 实验目的实验目的 1 理解软中断的调用方法及中断过程 2 掌握 INT 21H 软件中断来调用 DOS 系统 I O 子程序的方法 3 掌握将存储在内存单元中的数据在屏幕上显示的方法 4 掌握从键盘输入信息到内存的方法 二 二 实验设备实验设备 PC 微机一台 三 三 实验预习要求实验预习要求 1 复习 DOS 功能调用 INT 21H 中用于字符输入 功能号为 01H 字符输出 功能号为 02H 字符串输入 功能号为 0AH 以及字符串输出 功能号为 09H 的调用方法 参见教 材 32 位微型计算机原理与接口技术 89 页 2 阅读示例程序 掌握输入 输出方法 3 从实验内容中任选一道题目 仔细阅读相关的实验要求及说明 编写程序 以便上机调 试 四 四 实验内容实验内容 1 示例 将指定数据区中一个字节的数据以十六进制数形式显示在屏幕上 设计思路 首先将该数以十六进制数形式分解 然后将每一位分别转换为 ASCII 码送 屏幕显示 其中 0H 9H 之间的数加 30H 即可得 0H 9H 的 ASCII 码 而 AH FH 的 ASCII 码 则需再加 7H 参见表 5 1 参考程序流程如图 2 1 所示 示例程序参见参考程序清单 2 编程由键盘输入任意一个字符 将该字符的 ASCII 码值显示在屏幕上 3 从键盘输入两个 1 位十进制数 计算二者之和 并将结果显示在屏幕上 4 编程由键盘输入任意一位数 将该数以二进制数形式显示在屏幕上 例 5 00000101B 五 五 实验说明实验说明 存储在内存单元中的数据要显示在屏幕上 必须首先将一个数据区中的数分解为各位 不同进制的数 参见表 5 1 然后转换为字符 通过 DOS 功能调用 INT 21H 完成显示 例 1 1 显示单个字符显示单个字符 MOV AH 02H MOV DL 待显示字符的 ASCII 码 INT 21H 2 2 键盘输入并回显键盘输入并回显 MOV AH 01H INT 21H 得到按键的 ASCII 码 存放于 AL 中 六 实验步骤实验步骤 1 画出实验流程图 精品文档 11欢迎下载 2 运行 Tddebug 软件 选择 Edit 菜单编写实验程序 3 使用 Compile 菜单中的 Compile 和 Link 对实验程序进行汇编 连接 生成执行文 件 4 使用 Rmrun 菜单中的 Run 运行程序 观察运行结果 5 使用 Rmrun 菜单中的 Debug 调试程序 单步执行指令 观察各寄存器及数据区的 内容 6 更改数据区中的数据 考察程序的正确性 七 七 参考程序清单及流程参考程序清单及流程 将指定数据区 SD 的数据以十六进制数形式显示在屏幕上 DATASEGMENT MESDB Show a as hex 0AH 0DH SDDB a DATAENDS CODESEGMENT ASSUMECS CODE DS DATA START MOV AX DATA MOVDS AX MOVDX OFFSET MES 显示提示信息 MOVAH 09H INT 21H MOVSI OFFSET SD MOVAL DS SI ANDAL 0F0H 取高 4 位 MOV CL 4 SHRAL CL CMPAL 0AH 是否是 A 以上的数 JBC2 ADDAL 07H C2 ADD AL 30H MOVDL AL 显示字符 MOVAH 02H INT21H MOVAL DS SI ANDAL 0FH 取低 4 位 CMPAL 0AH JBC3 ADD AL 07H C3 ADD AL 30H MOVDL AL 显示字符 MOVAH 02H INT21H MOVAH 4CH 返回 DOS INT21H 图 2 1 一个字节数以十 六进制数形式显示处理流 程 精品文档 12欢迎下载 CODEENDS END START 精品文档 13欢迎下载 实验三 分实验三 分支程序设计支程序设计 一 一 实验实验目的目的 1 掌握比较指令 条件转移指令的用法 2 掌握分支结构程序的组成 3 3 掌握分支程序的设计 调试方法 二 二 实验设备实验设备 PC 微机一台 三 三 实验预习要求实验预习要求 1 复习比较指令 条件转移指令的用法 2 阅读示例程序 掌握分支编程方法及相关技巧 3 从实验内容中任选一道题目 仔细阅读相关的实验要求及说明 编写程序 以便上机调 试 四 四 实验内容实验内容 1 示例 判断 X 的大小 并根据判断结果以不同方式分别显示 2 键入一个数 判断数是否在 5 X 24 范围内 是输出标志 0 不是输出 3 编写程序 在屏幕上显示一组菜单 根据键盘输入的菜单编号 提示你选择的菜单名 4 从键盘输入一个字符 判断该字符是小写字母 大写字母 数字或其他字符 并给出相 应的提示 五 五 实验要求及说明实验要求及说明 1 1 判断 判断 X X 的大小 并根据判断结果以不同方式分别显示的大小 并根据判断结果以不同方式分别显示 设 NUMBER 单元的数 X 以及数值 N1 N2 均为单字节无符号数 请判断 X 的大小 并根据 判断结果分别显示 N1 X N2 或 XN2 参见程序清单参见程序清单 2 2 键入一个数 判断数是否在 键入一个数 判断数是否在 5 5 X 24X 24 范围内 是输出标志范围内 是输出标志 0 0 不是输出 不是输出 3 3 编写程序 在屏幕上显示一组菜单 根据键盘输入的菜单编号 提示你选择的菜单名 编写程序 在屏幕上显示一组菜单 根据键盘输入的菜单编号 提示你选择的菜单名 假设在屏幕上显示的菜单如下 1 Open 2 Save 3 Copy 4 Exit Please choose 1 2 3 OR 5 若输入 1 则显示 I choose Open 后程序结束 若输入 2 则显示 I choose Save 后程序结束 若输入 3 则显示 I choose Copy 后程序结束 若输入 4 则显示 I choose Exit 后程序结束 若输入其它字符 则显示 You press an error key 后程序结束 注意可使用宏指令简化程序 4 4 从键盘输入一个字符 判断该字符是小写字母 大写字母 数字或其他字符 并给出相 从键盘输入一个字符 判断该字符是小写字母 大写字母 数字或其他字符 并给出相 应的提示 应的提示 精品文档 14欢迎下载 数字 0 9 的 ASCII 码为 30H 39H 大写字母的 ASCII 码为 41H 5AH 小写字母的 ASCII 码为 61H 7AH 六 实验步骤实验步骤 1 画出实验流程图 2 运行 Tddebug 软件 选择 Edit 菜单编写实验程序 3 使用 Compile 菜单中的 Compile 和 Link 对实验程序进行汇编 连接 生成执行文 件 4 使用 Rmrun 菜单中的 Run 运行程序 观察运行结果 5 使用 Rmrun 菜单中的 Debug 调试程序 观察构成分支条件的各标志的变化情况及 相关寄存器内容 6 更改数据区中的数据 考察程序的正确性 七 七 参考程序清单参考程序清单 设 NUMBER 单元的数 X 以及数值 N1 N2 均为单字节无符号数 请判断 X 的大小 并根据判 断结果分别显示 N1 X N2 或 XN2 DATA SEGMENT USE16 MESG1 DB N1 X N2 MESG2 DB XN2 NUMBER DB 66 无符号数 X N1 EQU 22 N2 EQU 88 DATA ENDS CODE SEGMENT USE16 ASSUME CS CODE DS DATA BEG MOV AX DATA MOV DS AX MOV DX OFFSET MESG1 CMP NUMBER N1 JAE NEXT X N1 转 MOV DX OFFSET MESG2 JMP DISP NEXT CMP NUMBER N2 JBE DISP X N2 转 MOV DX OFFSET MESG3 DISP MOV AH 9 INT 21H 显示结果信息 MOV AH 4CH INT 21H 返回 DOS CODE ENDS END BEG 精品文档 15欢迎下载 实验四 循环程实验四 循环程序设计序设计 一 一 实验目的实验目的 1 掌握比较指令 转移指令和循环指令的使用方法 2 掌握循环结构程序的组成 3 掌握循环程序的设计 调试方法 二 二 实验设备实验设备 PC 微机一台 三 三 实验预习要求实验预习要求 1 复习比较指令 条件转移指令和循环指令 2 阅读示例程序 掌握循环程序的结构 循环控制方法及相关技巧 3 从实验内容中任选一道题目 仔细阅读相关的实验要求及说明 编写程序 以便上机调 试 四 四 实验内容实验内容 1 示例 求某数据区内负数的个数 2 试编程统计数据区中正数 零和负数的个数 3 编程求无符号数字节序列中最大值和最小值 4 从键盘输入一字符串 搜索该字符串中是否有字符 A 若有请输出其在串中的位置 五 五 实验说明实验说明 1 求某数据区内负数的个数 为统计数据区内负数的个数 需逐个判别区内的每一个数据 然后将所有数据中凡是 符号位为 1 的数据个数累加起来 即得到区内包含负数的个数 参见程序清单 2 试编程统计数据区中正数 零和负数的个数 3 编程求无符号数字节序列中最大值和最小值 实验中可使用 BH 和 BL 作为暂存现行最大值和最小值 且在初始时将 BH 和 BL 初始化 为首字节的内容 循环依次比较每个字节的内容 求得最大值 存于 BH 中 和最小值 存 于 BL 中 送屏幕显示 4 4 从键盘输入一字符串 搜索该字符串中是否有字符 从键盘输入一字符串 搜索该字符串中是否有字符 A A 若有请输出其在串中的位置 若有请输出其在串中的位置 六 实验步骤实验步骤 1 画出实验流程图 2 运行 Tddebug 软件 选择 Edit 菜单编写实验程序 3 使用 Compile 菜单中的 Compile 和 Link 对实验程序进行汇编 连接 生成执行文 件 4 使用 Rmrun 菜单中的 Run 运行程序 观察运行结果 5 使用 Rmrun 菜单中的 Debug 调试程序 观察构成分支 循环条件的各标志的变化 情况及相关寄存器内容 精品文档 16欢迎下载 6 更改数据区中的数据 考察程序的正确性 七 七 参考程序清单参考程序清单 确定数据区 NUMB 中负数的个数 存放于 BL 中 DDATASEGMENT NUMBDB12H 88H 82H 89H 33H 90H 01H 10H 0BDH 01H MES DB The number of negative is DDATAENDS CODE SEGMENT ASSUME CS CODE DS DDATA START MOVAX DDATA MOVDS AX MOVDI OFFSET NUMB XORBL BL MOVCX 10 A1 MOV AL DI TEST AL 80H JE A2 INCBL A2 INC DI LOOP A1 统计负数个数 MOVDX OFFSET MES MOVAH 09H INT 21H MOVAL BL 显示负数个数 注意与实验二所使用的方法的区别 MOV CX 2 A3 PUSH CX MOV CL 4 ROL AL CL POP CX MOV BL AL AND AL 0FH CMP AL 0AH JB A4 ADD AL 07H A4 ADD AL 30H MOV DL AL MOV AH 02H INT 21H MOV AL BL LOOP A3 MOVAH 4CH INT21H CODE ENDS 精品文档 17欢迎下载 END START 精品文档 18欢迎下载 实验五 运算实验五 运算类程类程序设计序设计 一 实验目的实验目的 1 掌握运算类指令对各状态标志位的影响及其测试方法 2 掌握运用运算类指令编程及调试的方法 3 掌握子程序设计及调用方法 二 二 实验设备实验设备 PC 机一台 三 三 实验预习要求实验预习要求 1 复习运算类指令的用法 2 复习子程序设计及调用方法 3 阅读示例程序 掌握子程序的编程方法及相关技巧 4 从实验内容中任选一道题目 仔细阅读相关的实验要求及说明 用子程序处理方式编写 程序 以便上机调试 四 四 实验内容实验内容 1 1 示例 二进制双精度加法运算示例 二进制双精度加法运算 2 十进制数的 BCD 码加减法运算 3 乘法运算 4 除法运算 5 编程用减奇数法开平方 五 五 实验要求及说明实验要求及说明 80 x86 指令系统提供了实现加 减 乘 除运算的基本指令 可对表 4 1 所示的数据 类型进行算术运算 表 4 1 数据类型算术运算表 二进制BCD 码数制 带符号无符号组合非组合 运算符 操作符字节 字 多精度字节 二位数字 字节 一位数字 1 1 二进制双精度加法运算二进制双精度加法运算 计算 X Y Z 并将结果输出到屏幕上 其中 X 001565A0H Y 0021B79EH 运算的结果 Z 00371D3EH 1 本实验是双精度 2 个 16 位 即 32 位 运算 利用累加器 AX 先求低 16 位和 并存储于低地址存储单元 后求高 16 位和 再存入高地址存储单元 由于低位和可能向高 位有进位 此时 CF 1 因而高位字相加语句需用 ADC 指令 即同时加上 CF 中的 1 参见参 考程序清单 2 画出 X Y Z 三个数在内存中的分布示意图 精品文档 19欢迎下载 3 修改示例程序 直接使用 32 位寄存器和 32 位加法指令完成本实验功能 2 2 十进制数的十进制数的 BCDBCD 码加减法运算码加减法运算 计算 X Y Z 其中 X Y Z 为非组合的 BCD 码 X 0400H Y 0102H 运算结果 Z 0208H 1 编写两个数值长度不等的编写两个数值长度不等的 BCDBCD 码相加程序 码相加程序 思路 对应位用 ADC 带进位加法求和 考虑 CF 标志 再进行 DAA 调整 只对 AL 处理 3 3 乘法运算乘法运算 本实验要求实现十进制数乘法 被乘数和乘数均以 BCD 码形式存放在内存中 被乘数 为 02345 乘数为 3 运算结果 7035 显示在屏幕上为 00 00 07 00 03 05 1 调试程序观察加 减 乘 除及相关调整指令 对标志位的影响 4 4 除法运算除法运算 本实验要求在内存中存储 5 个无符号数 将其用 101H 除 在进行 BCD 码转换后 若奇 偶位为偶 PF 1 则显示 P 为负 SF 1 则显示 S 为零 ZF 1 则显示 Z 若 PF SF ZF 标志皆为 0 则显示 除法指令 DIV IDIV 执行后 不影响任何标志位 而 BCD 码调整指令 AAD 会影响 PF SF ZF 标志 通过本实验考察这些指令对标志的影响情况 5 5 编程用减奇数法开平方编程用减奇数法开平方 80 x86 指令系统中没有开平方指令 因此 开平方运算是通过程序来实现的 用减奇 数法可求得近似平方根 获得平方根的整数部分 因为 N 个自然数中奇数之和等于 2 N 即 展开 n K NK 1 2 12 1 3 5 9 2 3 1 3 5 7 16 2 4 1 3 5 7 9 11 13 15 64 2 8 所以 若要做的运算 就可以从 S 中逐次减去自然数中的奇数S 1 3 5 7 一直到被减数为 0 或不够减下一个自然数的奇数为止 然后统计减去 自然数的奇数的个数 它就是 S 的近似平方根 1 本实验要求编程实现计算 0040H 的开平方值 并将运算结果显示在屏幕上 2 试编程 由键盘输入一个十六进制数 将其转换为十进制数 并进行开平方运算 六 实验步骤实验步骤 1 画出实验流程图 2 画出内存数据分布示意图 3 运行 Tddebug 软件 选择 Edit 菜单编写实验程序 4 使用 Compile 菜单中的 Compile 和 Link 对实验程序进行汇编 连接 生成执行文 件 精品文档 20欢迎下载 5 使用 Rmrun 菜单中的 Run 运行程序 观察运行结果 6 使用 Rmrun 菜单中的 Debug 调试程序 单步执行加 减 乘 除及相关调整指令 时 观察各标志的变化情况及寄存器 数据区的内容 7 更改数据区中的数据 考察程序的正确性 七 七 参考程序清单参考程序清单 双精度加法运算双精度加法运算 计算 X Y Z X 001565A0H Y 0021B79EH 运算的结果 Z 00371D3EH DATA SEGMENT MES DB The result is XLDW 65A0H XHDW 0015H YLDW 0B79EH YHDW 0021H DATA ENDS CODE SEGMENT ASSUME CS CODE DS DATA START MOV AX DATA MOV DS AX MOV DX OFFSET MES 显示信息 MOV AH 09H INT 21H MOV AX XL 计算结果 ADD AX YL MOV BX AX MOV AX XH ADC AX YH PUSH BX MOV CX 4 显示高位字 MOV DX AX AGA1 PUSH CX MOV CL 4 ROL DX CL POP CX MOV AL DL AND AL 0FH CMP AL 10 JC NEXT1 ADD AL 7 NEXT1 ADD AL 30H MOV AH 0EH INT 10H LOOP AGA1 精品文档 21欢迎下载 POP BX MOV AX BX MOV CX 4 显示低位字 MOV DX AX AGA2 PUSH CX MOV CL 4 ROL DX CL POP CX MOV AL DL AND AL 0FH CMP AL 10 JC NEXT2 ADD AL 7 NEXT2 ADD AL 30H MOV AH 0EH INT 10H LOOP AGA2 MOV AH 4CH INT 21H CODE ENDS END START 精品文档 22欢迎下载 实验六 代码转换程序设计实验六 代码转换程序设计 一 一 实验目的实验目的 1 了解微机中所使用的各类数制及编码方法 2 2 掌握不同进制数及编码相互转换的程序设计方法 加深对数码转换的理解 3 3 掌握将存储在内存单元中的数据以十六进制数形式 十进制数形式和二进制数形式显 示在屏幕上的方法 二 二 实验设备实验设备 PC 微机一台 三 三 实验预习要求实验预习要求 1 复习运算类指令的用法 2 复习子程序设计及调用方法 3 阅读示例程序 掌握子程序的编程方法及相关技巧 4 从实验内容中任选一道题目 仔细阅读相关的实验要求及说明 用子程序处理方式编写 程序 以便上机调试 四 四 实验内容实验内容 1 示例 将 5 位十进制数的数字串转换为一个字的二进制数 2 编写程序将内存中一个字的数转换为十进制数的数字串显示 3 编程将十进制的数字串转换为 BCD 码 4 编程将 BCD 码转换为二进制数 5 编程将二进制数转换为十进制数显示 五 实验原理及说明实验原理及说明 计算机输入设备输入的信息一般是由 ASCII 码或 BCD 码表示的数据或字符 CPU 一般 均用二进制数进行计算或用其他信息进行处理 处理的结果又必须依照外设的要求变为 ASCII 码 或 BCD 码或七段显示码等 因此 在应用软件中 各类数制的转换和代码的转 换是必不可少的 计算机与外设间的数码转换关系如图 6 1 所示 数码对应关系如表 6 1 所示 6 1 精品文档 23欢迎下载 1 1 将十进制数的数字串转换为二进制数将十进制数的数字串转换为二进制数 十进制数可以表示为 i i n n n n DDDD10101010 0 0 1 1 其中代表十进制数 1 2 3 9 0 i D 上式可以转换为 0121 10 10 10 10 10DDDDDD nnn i i 由上式可归纳出十进制数转换为二进制数的方法 从十进制数的最高位开始做乘 n D 10 加次位的操作 依次类推 则可求出二进制数结果 本实验要求将缓冲区中的一个 5 位十进制数 00012 的 ASCII 码转换成二进制数 并将 转换结果以十六进制数形式 000C 按位显示在屏幕上 转换过程的参考程序清单见后参考程 序清单 1 参考流程如图 3 2 所示 修改该示例程序 从键盘任意输入 5 个数 实现转换并显示 2 2 将内存中一个字的数转换为十进制数的数字串 将内存中一个字的数转换为十进制数的数字串 十六位二进制数 一个字 的值域为 0 65535 最大可转换为 5 位十进制数 五位十 进制数可表示为 0 1 1 2 2 3 3 4 4 10101010DDDDDND 因此 将十六位二进制数转换为 5 位 ASCII 码表示的十进制数数字串 即采用除 10 取余方 法 分别求 并将它们转换为 ASCII 码 以字符串方式显示在屏幕上 转换部分 40 DD 的参考流程参见图 6 4 假设缓冲区中存放的数是 000CH 转换成十进制数的数字串后 在屏幕显示 00012 3 3 将十进制数的数字串转换为将十进制数的数字串转换为 BCDBCD 码码 1 本实验要求将一个 5 位十进制数的数字串 54321 的 ASCII 码存放在数据区中 转换为 BCD 码后 将转换结果分别显示在屏幕上 即显示 01 02 03 04 05 若输入 的不是十进制数的 ASCII 码 则输出 FF 提示 一个字节取其低 4 位即变为 BCD 码 转 6 1 精品文档 24欢迎下载 换部分的实验参考流程见图 6 3 2 修改程序 实现从键盘输入 5 位十进制数 54321 转换 BCD 码后以输入顺序一致 显示 即显示 05 04 03 02 01 4 4 编程将编程将 BCDBCD 码转换为二进制数码转换为二进制数 本实验要求将 4 个二位十进制的 BCD 码存放在某一段内存单元中 转换出的二进制码 存入其后的存储单元中 转换结果以十六进制方式送屏幕显示 转换部分的实验流程参见 图 6 5 假设 4 个十进制数是 17 34 51 68 用 BCD 码表示为 01H 07H 03H 04H 05H 01H 06H 08H 显示为 0011 0022 0033 0044 六 实验步骤实验步骤 1 画出实验流程图 2 运行 Tddebug 软件 选择 Edit 菜单编写实验程序 3 使用 Compile 菜单中的 Compile 和 Link 对实验程序进行汇编 连接 生成执行文 件 4 使用 Rmrun 菜单中的 Run 运行程序 观察运行结果 5 使用 Rmrun 菜单中的 Debug 调试程序 单步执行指令 观察各寄存器及数据区的 内容 6 更改数据区中的数据 考察程序的正确性 图 6 2 将 5 位十进制数的数字 串转换为二进制数参考流程 图 6 3 将十进制数的数字串 转换为 BCD 码参考流程 精品文档 25欢迎下载 七 七 参考程序清单参考程序清单 将十进制数的数字串转换为数将十进制数的数字串转换为数 DDATASEGMENT MES DB The ascii code of decimal code are BUF DB30H 30H 30H 31H 32H 十进制 00012 的 ASCII 码 DB10H DUP 0 DDATAENDS CODE SEGMENT ASSUME CS CODE DS DDATA START MOV AX DDATA MOVDS AX MOV SI OFFSET BUF MOVBL 0AH 送被乘数 MOV CX 0004H 送转换位数 MOV AH 00H MOV AL SI 取第一位 ASCII 码 SUB AL 30H A1 INC SI IMUL BL 乘 10 ADD AL SI SUB AL 30H 图 6 4 将内存中一个字的数转换 为十进制数的数字串参考流程 图 6 5 将 BCD 码转换为二 进制数参考流程 精品文档 26欢迎下载 LOOP A1 MOV BX AX MOVDX OFFSET MES 显示提示信息 MOVAH 09H INT21H MOV AX BX 显示结果 MOV CX 4 A3 PUSH CX MOV CL 4 ROL AX CL POP CX MOV BX AX AND AL 0FH CMP AL 0AH JB A2 ADD AL 07H A2 ADD AL 30H MOV DL AL MOV AH 02H INT 21H MOV AX BX LOOP A3 MOV AH 4CH INT 21H CODEENDS END START 精品文档 27欢迎下载 实验七 宏指令应用实验七 宏指令应用 一 一 实验目的实验目的 1 熟悉宏指令 宏定义 宏调用以及宏展开的概念 掌握宏指令的定义与调用方法 2 掌握子程序的定义 调用以及调用程序与子程序之间参数的传递方法 3 了解宏指令与子程序的异同以及各自的使用场合 二 二 实验设备实验设备 PC 微机一台 三 三 实验预习要求实验预习要求 1 复习宏指令的定义与调用方法 2 复习子程序的定义与调用方法 2 阅读示例程序 掌握编程方法及相关技巧 3 从实验内容中任选一道题目 仔细阅读相关的实验要求及说明 编写程序 以便上机调 试 四 四 实验内容实验内容 1 示例 利用宏指令分组显示变量中多位二进制数 2 从键盘输入一个 5 位的十进制数 定义一个带参数的宏 实现以二进制 十进制 十六 进制 八进制数的形式输出 五 五 实验要求及说明实验要求及说明 1 1 示例示例 利用宏指令分组显示变量中多位二进制数 利用宏指令分组显示变量中多位二进制数 定义 CRLF 宏指令实现回车换行功能 定义 DISP 宏指令实现分组 4 位一组 显示变 量 VAR 中 NN 位二进制数 参见程序清单 2 2 从键盘输入一个 从键盘输入一个 5 5 位的十进制数 定义一个带参数的宏 实现以二进制 十进制 位的十进制数 定义一个带参数的宏 实现以二进制 十进制 1616 进制 进制 8 8 进制数的形式输出 进制数的形式输出 六 实验步骤实验步骤 1 画出实验流程图 2 运行 Tddebug 软件 选择 Edit 菜单编写实验程序 3 使用 Compile 菜单中的 Compile 和 Link 对实验程序进行汇编 连接 生成执行文 件 4 使用 Rmrun 菜单中的 Run 运行程序 观察运行结果 5 使用 Rmrun 菜单中的 Debug 调试程序 观察宏调用以及宏展开情况 七 七 参考程序清单参考程序清单 定义 CRLF 宏指令实现回车换行功能 定义 DISP 宏指令实现分组 4 位一组 显示变量 VAR 中 NN 位二进制数 CRLF MACRO 精品文档 28欢迎下载 MOV AH 0EH MOV AL 0DH INT 10H MOV AL 0AH INT 10H ENDM DISP MACRO VAR NN LOCAL LAST1 LAST2 MOV CH NN 4 LAST1 MOV CL 4 LAST2 MOV AL 0 ROL VAR 1 ADC AL 0 MOV AH 0EH INT 10H DEC CL JNZ LAST2 MOV AL INT 10H DEC CH JNZ LAST1 CRLF ENDM CODE SEGMENT ASSUME CS CODE NUM DB 88H BEG MOV BX 1234H DISP BH 8 显示 BH 中的 8 位数 DISP BX 16 显示 BX 中的 16 位数 DISP NUM 8 显示 NUM 单元中的 8 位数 MOV AH 4CH INT 21H CODE ENDS END BEG 定义 CRLF 宏指令实现回车换行功能 定义 DISP 宏指令实现分组 4 位一组 显示变量 VAR 中 NN 位二进制数 CRLF MACRO MOV AH 0EH MOV AL 0DH INT 10H MOV AL 0AH INT 10H ENDM DISP MACRO VAR NN LOCAL LAST1 LAST2 精品文档 29欢迎下载 MOV CH NN 4 LAST1 MOV CL 4 LAST2 MOV AL 0 ROL VAR 1 ADC AL 0 MOV AH 0EH INT 10H DEC CL JNZ LAST2 MOV AL INT 10H DEC CH JNZ LAST1 CRLF ENDM CODE SEGMENT ASSUME CS CODE NUM DB 88H BEG MOV EBX 12345678H DISP BH 8 显示 BH 中的 8 位数 DISP BX 16 显示 BX 中的 16 位数 DISP EBX 32 显示 EBX 中的 32 位数 DISP NUM 8 显示 NUM 单元中的 8 位数 MOV AH 4CH INT 21H CODE ENDS END BEG 精品文档 30欢迎下载 实验八 字符串处理实验八 字符串处理 一 一 实验目的实验目的 1 掌握字符串操作指令 2 掌握实现字符串的搜索 排序等操作 二 二 实验设备实验设备 PC 微机一台 三 三 实验预习要求实验预习要求 1 复习字符串操作指令 2 阅读示例程序 掌握编程方法及相关技巧 3 从实验内容中任选一道题目 仔细阅读相关的实验要求及说明 编写程序 以便上机调 试 四 四 实验内容实验内容 1 示例 为标准 ASCII 设置校验码 2 从源串字符中搜索一个字串 3 从键盘输入一系列字符串 对他们按从小到大的顺序排序输出在屏幕上 4 输入一条英语句子 将其规范化 即将每个单词的第一个字符变为大写 其余为小写 并将规范化后的句子显示在屏幕上 同时统计出该句中单词个数 显示 Number 五 五 实验要求及说明实验要求及说明 1 1 示例示例 为标准为标准 ASCIIASCII 设置校验码设置校验码 标准 ASCII 码的最高位 D7 位 为 0 微机系统与 I O 设备之间在字符传送过程中 为了使接收方能够判断出接收自负的正确性 最简易的方法是定义标准 ASCII 码的最高位 为奇偶校验位 包括校验位在内一个字节中 1 的个数为奇数个 则称为奇校验 ASCII 码 反之 一个字节中 1 的个数为偶数个则称为偶校验 ASCII 码 校验位的值由发送方设置 接收方负责校验 如果双方约定是偶校验传送 而接收方收到的一个字符编码中 有奇数 个 1 那么这个字符肯定是错误的 本示例程序要求把 STRING 单元中的一串标准 ASCII 码转换成奇校验 ASCII 码 存入 BUF 单元开始的缓冲区 技巧 通过 AND AL AL 指令对 P 标志设置 判断 P 标志 决定是否设置校验位 D7 由指令 OR AL 80H 完成 参见程序清单 2 2 从源串字符中搜索一个子串 从源串字符中搜索一个子串 假设从 STRING 单元开始有一串自负 程序执行开始采用人机对话方式 从键盘输入一 个任意长度的子串 清查找源串中是否蕴含着键入的子串 并给出结果显示 思路 键盘输入子串 用 INT 21H 的 0AH 功能 将子串存入内存 搜索次数 源串长 子串长 1 字符串的比较 REPE CMPSB 再判断 Z 标确定是否找到 六 六 参考程序清单参考程序清单 精品文档 31欢迎下载 把 STRING 单元中的一串标准 ASCII 码转换成奇校验 ASCII 码 存入 BUF 单元开始的缓冲 区 采用附加段与数据段 重叠 编程风格 DATA SEGMENT STRING DB THE QUICK BROWN FOX JUMPS OVER LAZY DOG COUNT EQU STRING 统计串长度 BUF DB COUNT DUP 预留等长的缓冲区 DATA ENDS CODE SEGMENT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高级财务管理指南
- 高尔夫专业毕业论文课题
- 2025年建筑中介服务招标合同样本
- 2025年赠予房屋权益正式合同
- 2025贵州黔东穗恒供应链服务有限公司招聘临聘人员1人笔试模拟试题及答案解析
- 2025新疆水发智慧服务有限公司社会招聘1人笔试备考题库及答案解析
- 中小企业融资模式与市场分析研究
- 管理学专业毕业论文定题
- 完整版本职业卫生学习培训试卷试题及答案
- 农业种植技术培训与指导方案
- 城管执法理论知识培训课件讲义
- 钢化玻璃制品项目可行性研究报告立项申请报告范文
- 《财税基础(AI+慕课版)》全套教学课件
- 居家办公免责协议书
- 河南郑州航空港发展投资集团有限公司招聘笔试真题2024
- 高中语文课程标准深度解读
- 硬件设备自动测试软件系统架构的理论分析与设计
- 制冷系统事故应急预案
- 紧急状态下护理人员调配制度
- 牛的品种-培训课件
- 未缴纳社保劳动仲裁申请书范本
评论
0/150
提交评论