




已阅读5页,还剩51页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微机原理微机原理 实验教案实验教案 王王 位位 喜喜 2010 92010 9 目目 录录 第二章第二章 32 位微机原理软件实验位微机原理软件实验 3 实验一 四则运算 3 实验二 均值滤波 18 实验三 代码转换 21 实验四 字符串冒泡排序 24 实验五 描述符和描述符表实验 25 实验六 局部描述符表实验 27 第三章第三章 32 位微位微机机接口硬件实验接口硬件实验 30 实验箱简介 30 概述 30 实验一 地址译码电路与 I O 接口 32 实验二 8254 定时 计数器 36 实验三 8259 中断控制器 41 实验四 8255 并口控制器 47 实验五 A D 与 D A 转换实验 53 第二章第二章 32 位微机原理软件实验位微机原理软件实验 实验一 四则运算实验一 四则运算 一一 实验目的实验目的 1 熟悉汇编语言上机操作过程 2 熟悉 Tddebug 调试环境和 Turbo Debugger 的使用 3 熟悉汇编语言程序的框架结构 掌握顺序结构的编程方法 二 实验内容二 实验内容 无符号数的 32 位加法 32 位减法 16 位乘以 16 位 32 位除以 16 位除法四则运算练习 三 实验源程序实验源程序 略略 DATA SEGMENT DATA ENDS STACK1 SEGMENT STACK STACK1 ENDS CODE SEGMENT ASSUME CS CODE DS DATA CS STACK1 标准序 非标准序 MOV AX DATA MOV DS AX RET 标准序 MOV AX 4C00H INT 21H 非标准序 CODE ENDS END START 四四 实验歩骤实验歩骤 一 一 编辑源程序编辑源程序 1 双击桌面 TdPit 快捷方式 在 文件 下拉菜单中选择 新建 N 如图 1 1 所示 在空 白处编辑源程序 在输入源程序中 大写字母与小写字母相同 空一格与空多格相同 图1 1 文件下拉菜单中选择新建 N 2 在源程序编辑结束后 点击 文件 的下拉菜单中选择另存为 如图 1 2 所示 图 1 2 文件下拉菜单中选择另存为 A 文件窗口 3 在图 1 3 所示的对话框选择保存路径后 输入文件名和扩展名 ASM 图1 3 源程序存盘 二 二 编译源文件 编译源文件 1 1 点击编译的下拉菜单 选中编译 如图 1 4 所示 或单击工具栏 图 1 4 编译窗口 2 2 经编译后岀现的信息如图 1 5 所示 在该窗口信息中显示编译的文件名 源文件岀错的行 岀 错的类型及内容 错误和警告的数量等信息 图1 5 编译信息窗口 3 如有错误和警告 双击信息的错误或警告项 红色标志自动定位在错误或警告行 如图 1 6 所示 逐项修改后存盘 编译直到错误等于 0 为止 注意 有的警告不影响生成目标文件 图 1 6 自动定位在错误行 三 三 连接目标文件 连接目标文件 1 1 点击编译的下拉菜单 选中链接 L 如图 1 7 所示 或单击工具栏 图 1 7 连接目标文件窗口 3 3 连接成功窗口如图 1 8 所示 图 1 8 连接成功 四 四 调试程序 调试程序 点击编译的下拉菜单 选中调试 如图 1 9 所示 或单击工具栏 就可以调试程序 图 1 9 进入实模式调试窗口 在进入调试窗口后 显示为 Turbo C 的调试界面 如图 1 10 所示 该界面分成的三窗口 窗口 1 是蓝底黄字源程序 窗口 2 是灰白底观察窗口 窗口 3 是绿底黑字的存储器窗口 图 1 10 调试窗口选中 CPU 由于指令是在 CPU 内执行 因此点击 View 选中 Cpu 如图 1 11 所示 图 1 11 点击 View 选中 Cpu 此时调试窗口的代码段的指令仍与源程序相同 而指令是在 CPU 内执行 因此在主窗口 点击右键 选择快捷方式的 Mixed No 如图 1 12 所示 图 1 12 选择 Mixed No 1 1 窗口划分窗口划分 窗口划分坷图 1 13 所示 实模式下的实验和大部分接口实验在这个环境下完成 在图中 代码显示区的左边两大列是物理地址 第三大列是机器码 它包含操作码和操作数两部分 其 中前两位是操作码 后几位是操作数 操作数可能为 0 位 1 位 2 位或 3 位 第四大列是指 令 祥见窗口中的注释 图1 13 实模式调试窗口 下面将简要介绍调试程序的方法 其详细说明请查看帮助文档 主菜单中包含了 File Edit View Run Breakpoints Data Options Windows 和 Help 共 9 个菜单项 如图 1 14 所示 其中代码段的高亮条为当前要执行的指令 存储器中 的高亮条为执行此指令前的状态 图 1 14 主菜单窗口 2 2 快捷键快捷键 环境中可以使用热键选择相应的菜单项 在调试过程中也可以使用一些快捷键来实现 一些功能 下面列出常用功能的快捷键及实现功能 主界面功能键 F1F1 在任何下拉菜单中 按 F1 都显示该功能的帮助信息窗口 F2F2 设置 清除断点 移光标到所需处 按 F2 即设置 清除断点 设置 清除断点如图 1 15 所示 图 1 15 设置 清除断点 F3F3查看源代码模式 不常用 F4F4 执行到光标处 移光标到所需处 按 F4 程序即从当前指针地址 CS 0011 执行到 CS 0032 光标处 如图 1 16 所示 图 1 16 执行到光标处 F5F5 放大 缩小窗口 F6F6 窗口切换 F7F7 单步执行 F8F8 单句执行 与单步执行的区别是如果是调用过程也一次执行完毕 F9F9 运行程序 连续运行程序 F10F10 Menu 激活主菜单 Ctrl BreakCtrl Break 终止程序执行 Alt XAlt X 退出 TABTAB 切换激活窗口 高亮条为当前激活的口 A A 窗口在寄存器显示区中时窗口在寄存器显示区中时 Ctrl R 切换 16 位 32 位通用寄存器显示 Ctrl I 使光条指示寄存器的内容 1 Ctrl D 使光条指示寄存器的内容 1 Ctrl Z 使光条指示寄存器的内容清零 Ctrl CCtrl C 手动修改光条指示寄存器的内容 B B 窗口在标志寄存器显示区中时窗口在标志寄存器显示区中时 Ctrl T 翻转光条指示标志的状态 C C 窗口在数据显示区中时窗口在数据显示区中时 Ctrl D 修改数据显示格式 Ctrl GCtrl G 指定需要显示的内存区域首地址 Ctrl S 查找指定的字节值表 Ctrl C 修改光标当前指示存储单元的内容 D D 窗口在代码显示区中时窗口在代码显示区中时 Ctrl G 指定需要显示的代码区域首地址 Ctrl S 查找指定指令 E E 字符字符 修改光标当前指示指令修改光标当前指示指令 3 3 实模式下査数据段的数值实模式下査数据段的数值 点击菜单View 如图1 17所示 在下拉菜单中选中CPU 就可在数据显示区显示数据段或附 加段的数值 图1 17 View的下拉菜单窗口 若在图 1 13 所示的下拉菜单中选中 CPU 则在数据显示区显示原 ES 段的数值转变为 DS 段的数值 4 4 重新运行程序重新运行程序 程序运行结束后 要重新运行选中如下图所示菜单 五五 调试步骤调试步骤 实验中寻址方式寻址方式有 寄存器寻址寄存器寻址 立即数寻址立即数寻址 直接地址寻址直接地址寻址 在代码显示区中 原程序中的变量 如 A B C D 等 在此已均转变成实地址 伪指令 部分不岀现在代码显示区中 这就说明伪指令是不允许执行的指令 本程序从结构上是属于顺序结构 1 单步调试 按 F7 或 F8 物理地址机器码指 令观察对象 cpu 内 reg flage 高亮 CS 01EPUSH DSIP SP 2 SP SS CS 1B8 0000MOV AX 0000IP AX CS 450PUSH AXSP 2 SP SS CS 5B8 XXXXMOV AX XXXXXXXX AX CS 88E D8MOV DS AXDS CS 0AA1 0000MOV AX 0000 AX CS 0D03060400ADD AX 0004 AX flage 的 C A 标志 CS 11A3 0800MOV 0008 AXAX 0008 每按一下 F7 或 F8 IP 总是改变 它总是指向代码段的下一条指令 每执行完一条指令 与本指令有关的单元或标志位会发生变化 执行 PUSH 指行时 注意观察 SP 的变化和堆栈内容的变化 它说明压栈 退栈是以字为 单位操作 且 SP 增减量为 2 当指令执行到 CS 000A 时 点击 Viwe Cpu 查看数据显示区内容 这就体现伪指令的功能 它 说眀数据段是根据伪指令来组织存放数据 高位放在高字节 低位放在低字节 伪指令中预 留的空间为 0 当执行到 ADD ADC SUB SBB 指令时 注意观察标志寄存器显示区标志位的变化 当执行存放计算结果时 注意观察数据显示区相应单元数据的变化 当执行到 MUL DIV 指令时 应知悉目标操作数在那个寄存器 执行执指令后其结果放在 那些寄存器中 记录数据显示区相关的数据 2 用执行到光标处调试 点击 Run Program reset 将光标移到 CS 000A 处 按 F4 查看数据显示区内容 将光标移到 CS 001E 处 按 F4 查看数据显示区两 32 位相加之和 将光标移到 CS 0032 处 按 F4 查看数据显示区两 32 位相减加差 将光标移到 CS 0040 处 按 F4 查看数据显示区 16 位乘 16 位之积 将光标移到 CS 0052 处 按 F4 查看数据显示区 16 位乘 16 位之积 查看数据显示区相关的数据 3 连续执行 点击 Run Program reset 按压 F9 查看数据显示区相关的数据 六六 实验报告内容实验报告内容 1 记录数据段存放的原始数据 和程序执行结束后的数据 DS 0000 DS 0008 DS 0010 DS 0018 DS 0020 DS 0028 2 写岀和 差 积 商 余数 如 56781234H 123AFEDCH 68B31110H 3 心得体会和建议 实验二 均值滤波实验二 均值滤波 一一 实验目的实验目的 1 掌握在数据表中找最大最小数的方法 2 学会子程序的使用方法 参数传递的方法 掌握分支程序 循环程序的设计方法 3 熟悉 Tddebug 调试环境和 Turbo Debugger 的使用 二 实验内容实验内容 均值滤波算法 对 N 2 N 256 个无符号数 去掉一个最大值 最小值 然后求其平均值 其中最大值 最小值的査找通过分别调用子程序 SMAX 和 SMIN 实现 三 程序流程图三 程序流程图 主程序流程图如图 1 2 1 所示 SMAX 子程序流程图如图 1 2 2 所示 SMIN 子程序流程 图与 SMAX 类似 图 2 2 2 SMAX 子程序流程图 图 2 2 1 主程序流程图 是 否 N 否 是 开始 找最大值 找最小值 CALL SMAX SMIN 求 N 个数之和 减去最大值 最小值 除以 N 2 求平均值 结束 初始化 AL SI 保存最大值 CX 1 0 SI SI 1 AL SI 返回 四 四 参考源程序参考源程序 略略 五 实验歩骤五 实验歩骤 1 输入源程序 单击文件 新建 在光标处输入源程序 输完源程序后 单击工具栏或文 件 另存为 选择存放路径 输入文件名 ASM 2 编译程序 单击工具栏 链接程序 在屏幕下方的信息栏窗口显示编译信息 若有语 法错误 逐一双击该行 系统将自动定位错误行 並用红箭头指向错误行 逐一修改后存盘 再编译 直到错误为零 3 连接程序 单击工具栏 在屏幕下方的信息栏窗口显示连接信息 4 调试程序 单击工具栏 单击 View Cpu 在代码显示区单击右键 点击 Mixed Both 为 Mixed No 按 F7 单歩执行 当执行完 MOV DS AX 后 单击 View Cpu 使屏幕下方的数据 显示区为 DS 的内容 5 修改源程序 用同一个子程序求出最大值 最小值 六 调试步骤六 调试步骤 1 1 单步调试 按 F7 或 F8 物理地址机器码指 令观察对象 cpu 内 reg flage 高亮 CS 09 BE 0100MOV CX 000A 数据段存放的原始数据 CS 12E8 3500CALL XX SMAX IP SP 内容 CS 15BE 0100MOV SI 0001 原始数据中的最大值 CS 1EE8 3700CALL 0058 IP SP 内容 CS 21B9 0A00MOV CX 000A 原始数据中的最小值 CS 49CBRETF 原始数据中的平均值 最大值 最小值 XX SMAX CS 4AB0 00MOV AL 00 IP SP 内容 它是返回的主程序地址 CS 4C3A 04CMP AL SI AL DS SI IP CS 4E73 02JNB 0052 C Z 标志 CS 508A 04MOV AL SI AL CS 5246INC SISI CS 53E2 F7LOOP 004CCX CS 5588 05MOV DI AL DI 中的值 CS 57C3RETIP SP 当指令执行完 MOV DS AX 后时 点击 Viwe Cpu 查看数据显示区内容 这就体现伪指 令的功能 它说眀数据段是根据伪指令来组织存放数据 预留的平均值 最大值和最小值空间 为 0 在执行 CALL SMAX 前 后 注意观察 IP SP 的内容 执行后 IP 指向入口地址 原 IP 内容压入堆栈 故 SP 变化 这是子程序调用的关键之处 在执行 CMP AL SI 后 注意观察标志寄存器 C Z 标志位的变化 在执行 JNB 0052 后 注意观察程序运行转向 这是分支结构的关键之处 在执行 LOOP 004C 后 注意观察 CX 的变化及和程序运行转向 这是循环结构的关键 之处 当执行到 MOV DI AL 后 数据显示区相应单元数据的变化 在执行 求最大值的 RET 后 注意观察 SP IP 的变化 这是子程序返回的关键之处 2 用执行到光标处调试 点击 Run Program reset 将光标移到 CS 0009 处 按 F4 查看数据显示区内容 将光标移到 CS 0015 处 按 F4 查看数据显示区和最大值 将光标移到 CS 0021 处 按 F4 查看数据显示区最小值 将光标移到 CS 0049 处 按 F4 查看数据显示区平均值 3 连续执行 点击 Run Program reset 按压 F9 查看数据显示区相关的数据 七 实验报告实验报告 1 记录主程序 子程序 SMAX 子程序 SMIN 的起始地址和结束地址 主程序子程序 SMAX子程序 SMIN 起始地址 结束地址 2 记录数据段中存放的的 10 个数据 最大数 最小数及平均数 DS 0000 DS 0008 3 记录执行 CALL SMAX 前 后 的 IP SP 值 执行 CALL SMAX 的 RET 前 后 IP SP 值 执行 CALL SMAX 前 IP SP 执行 CALL SMAX 后 IP SP 执行 RET 前 IP SP 执行 RET 后 IP SP 4 最大值 最大值 平均值 5 心得体会和建议 实验三 代码转换实验三 代码转换 一一 实验目的实验目的 1 掌握代码转换的基本方法 2 学会 INT21 功能调用 掌握人机对话的设计方法 3 进一歩熟悉 Tddebug 调试环境和 Turbo Debugger 的使用 二 实验内容实验内容 制从键盘输入小写字母 最多 20 个 以 号作为结束标志 在屏幕上输岀相应的大写字 母 用 INT21 中的 09H 号功能实现输出对话 0AH 号功能实现输入对话 输入小写字母后 用 INT21 的 0AH 号功能 将读入的数据存放在缓冲区 SMALL 中 其中 SMALL 的笫一个字节指 岀缓冲区能容纳的字符数 不能为 0 程序暂定为 50 第二个字节保留 以用作存放实际键 入的输入字符的个数 从笫三个字节开始存放从键盘上接受的字符 所以转换时要从 SMALL 的笫三个字节 即 SMALL 2 开始 SMALL 中存放的是小写字母的 ASSII 码 将此值减去 20H 即为大写字母的 ASSII 码 将其依次存放在名为 CAPITAL 的数据段中 然后用 INT21 中的 09H 功能输出 三 程序流程图三 程序流程图 主程序流程图如图 1 3 1 所示 否 否 是 输岀提示信息 从键盘输入小写字母 回车换行 CX 20 字符 变换成大写字母 存入输岀缓冲区 CX 1 0 输岀缓冲区以 结尾 显示大写字母 返回 DOS 是 图 1 3 1 主程序流程图 四 源程序四 源程序 略略 五五 实验步骤实验步骤 1 输入源程序 单击文件 新建 在光标处输入源程序 输完源程序后 单击工具栏或文 件 另存为 选择存放路径 输入文件名 ASM 2 编译程序 单击工具栏 链接程序 在屏幕下方的信息栏窗口显示编译信息 若有语 法错误 逐一双击该行 系统将自动定位错误行 並用红箭头指向错误行 逐一修改后存盘 再编译 直到错误为零 3 连接程序 单击工具栏 在屏幕下方的信息栏窗口显示连接信息 4 调试程序 单击工具栏 单击 View Cpu 在代码显示区单击右键 点击 Mixed Both 为 Mixed No 按 F7 单歩执行 当执行完 MOV DS AX 后 单击 View Cpu 使屏幕下方的数据 显示区为 DS 的内容 5 修改源程序 对输入的非法字符进行处理 六 调试步骤六 调试步骤 1 注意 源程序中的结构不完善 需要自我完善 才能生成执行文件 主要是程序的框架结 构不完整 可参考实验一找出存在的问题 2 程序正常运行应按流程图执行 但生成的执行文件无法实现 故需调整 DOS 功能调用 才 能实现流程图的功能 DOS 功能调用 是根据 INT 21H 之前的 AH 的值来决定 在本程序中 键盘输入字符串是 10 号调用 显示字符串是 9 号调用 3 3 执行到笫二个宏调用时 鼠标移到数据区后点击 激活数据区 査看由 INT21 的 0AH 号功 能 将读入的数据存放在缓冲区 SMALL 中予留缓冲区长度 键入的字符个数 键盘上接受的 字符及输入的小写字母的 ASCII 码 4 执行到笫三个宏调用时 鼠标移到数据区后点击 激活数据区 根据 di 査转换成大写字 母的 ASCII 码 七七 实验报告实验报告 1 显示 MES1 的信息修改后的部分源程序 2 数据段存放的键盘输入的小写字母的 ASCII 码和转换成大写字母的 ASCII 码 DS 040 DS 048 DS 050 DS 058 DS 078 DS 080 DS 088 DS 090 4 在屏幕显示相应的大写字母 5 心得体会和建议 实验四 字符串冒泡排序实验四 字符串冒泡排序 一一 实验目的实验目的 1 进一歩掌握主子程序设计方法 2 掌握人机对话的设计方法 3 进一歩熟悉 Tddebug 调试环境和 Turbo Debugger 的使用 4 掌握冒泡排序的一种方法 二 实验内容实验内容 试设计名为 TITLE BOBBLE SORT 冒泡程序 当屏幕上显示一行 PLESAE ENTRY STR1NG 提示信息 屏幕上立即在下一行输入字符串 程序用冒泡法对字符串以 ASCII 码 的值按升序来排序 屏幕在下一行显示这个排序好的字符串 三三 程序思路 冒泡法排序有多种算法 本程序采用的是循环次数固定法 设有 N 个元素串 首先把笫一 个元素送入 AL 並设定其为 当前最小值 单元 然后和剩下的 N 1 个元素值比较 若有一 个元素比它小 则两个元素互换 经 N 1 次比较 当前最小值 单元是 N 个元素的最小值 之 后再把它写回到笫一个元素的位置 即冒出了一个最轻的泡 如此下去 顺序冒出 N 1 个泡 后 N 个元素就排序好了 四四 程序清单程序清单 五五 实验步骤实验步骤 1 输入源程序 单击文件 新建 在光标处输入源程序 输完源程序后 单击工具栏或文 件 另存为 选择存放路径 输入文件名 ASM 2 编译程序 单击工具栏 链接程序 在屏幕下方的信息栏窗口显示编译信息 若有语 法错误 逐一双击该行 系统将自动定位错误行 並用红箭头指向错误行 逐一修改后存盘 再编译 直到错误为零 3 连接程序 单击工具栏 在屏幕下方的信息栏窗口显示连接信息 4 调试程序 单击工具栏 单击 View Cpu 在代码显示区单击右键 点击 Mixed Both 为 Mixed No 按 F7 单歩执行 当执行完 MOV DS AX 后 单击 View Cpu 使屏幕下方的数据 显示区为 DS 的内容 六六 实验报告实验报告 1 数据段存放的键盘输入的 ASCII 码和屏幕显示的字符串 2 在屏幕显示排好序的字符串 3 心得体会和建议 实验五 描述符和描述符表实验实验五 描述符和描述符表实验 一一 实验目的实验目的 1 熟悉保护模式的编程格式 2 掌握描述符的声明方法 3 掌握使用选择符访问段的寻址方法 二 实验内容实验内容 实现在一个 0 级代码段中将源数据段中的一段数据复制到目标数据段中 其中所有段的 段描述符均放置在 GDT 中 1 实验分析 为了实现在 0 级代码段中完成数据传输 实验程序中需要安排一个 0 级代码段和两个 0 级数据段 可以是 0 3 级任一级别的数据段 在程序开始声明一个数据段 DSEG 来描述这三个段的描述符 其中有代码段描述符 Scode 源数据段描述符 DataS 和目标数据段描述符 DataD 将它们相应的选择子分别定义 为 Scode Sel DataS Sel DataD Sel 按照实验程序编写格式的约定及描述符的格式定义 参看附录 为这三个段分别定义描述符 1 代码段描述符 Scode Desc 段属性说明 G 0 以字节为段界限粒度 D 0 是 16 位的段 P 1 描述符对地址转换有效 该描述符对应的段存在 DPL 0 0 级段 DT 1 描述符描述的是存储段 TYPE 0 x8 只执行段 段基地址说明 定义代码段的标号为 CSEG 则在段基地址处填写 CSEG 为调试器提供重定 位信息 段界限说明 段界限定义为 Clen 2 源数据段描述符 DataS Desc 段属性说明 G 0 以字节为段界限粒度 D 0 是 16 位的段 P 1 描述符对地址转换有效 该描述符对应的段存在 DPL 0 0 级段 DT 1 描述符描述的是存储段 TYPE 0 x2 可读写段 段基地址说明 定义源数据段标号为 DSEG1 则在段基地址处填写 CSEG 为调试器提供重 定位信息 段界限说明 定义段界限为 DLEN 3 目标数据段描述符 Datad Desc 目标数据段描述符的内容基本与源数据段的内容相同 只要修改段基地址和段界限的 定义即可 为了给装入程序提供重定位信息 三个存储段描述符中地址的低 16 位用每个描述符对 应段的标号来填写 在程序装入内存时 调试系统会根据地址的低 16 位重定位该段对应的 真实物理地址 并将该地址写入描述符中 系统没有使用分页机制 线性地址等价于物理 地址 在实验中可查询 GDT 表来确定每个段的真实物理地址 在程序定义过程中 首先 使用一个全 F 的描述符作为定义的开始 然后定义代码段描述符 Scode 源数据段的描 述符 DSEG1 和目标数据段描述符 DSEG2 为了区分 LDT 表和 GDT 表的定义 再使用一个全 F 的描述符作为界限 由于本实验中不使用 LDT 表 则再使用一个全 F 的描述符结 束描述符的声明 本程序可实现将一个数据段中数据搬移到另一个数据段的过程 传输过程中可使用 DS ES 两个段寄存器 其中 DS 装入源数据段的选择符 DataS Sel ES 装入目标数据段的 选择符 DataD Sel 在实验程序的最后使用 INT 0FFH 指令 正常结束程序运行 三三 实验步骤实验步骤 1 进入纯DOS环境 运行Tddebug集成操作软件 2 运行Tddebug软件 使用Alt E选择Edit菜单项进入程序编辑环境 按实验要求编 写程序 实验参考流程图如图1 5 1 3 程序编写完后保存退出 使用Alt C选择Compile菜单中的Compile和Link命令对实 验程序进行编译 连接 4 编译输出信息表示无误后 使用Alt P选择Pmrun命令装入实验程序 如果装入成 功 屏幕上会显示 Load OK 否则 会给出相应的错误提示信息 5 若程序装入成功 则进入保护模式调试环境 在命令输入行使用GDT命令查询系统 的GDT表 并且查看实验程序中声明的代码段 数据段描述符在GDT表中的位置以及对应段 的物理地址 段属性 段界限等 6 使用F7单步执行程序 执行LLDT AX语句后 使用LDT命令查看LDT局部描述符表的 内容 7 根据LDT内容使用D命令查看源数据区的数据和目的数据区数据内容 8 按F9运行程序 如果程序正常运行结束 命令显示区中将显示 Correct Running 9 运行结束后 再次查看目的数据区内容 观察数据传输是否正确 四四 程序流程图程序流程图 全局描述符表实验参考流程图见图 1 5 1 描述 GDT 表项 声明各数据段描述符 输在 0 级代码段中实现数据传输 调用 INT0FFH 返回调试系统 结束 图 1 5 1 全局描述符表实验参考流程图 五 参考实验程序五 参考实验程序 略略 实验六 局部描述符表实验实验六 局部描述符表实验 本实验与上一实验所完成的功能相同 但要求将代码段安排在全局描述符表中 而将 数据段安排在局部描述符表中 一 实验分析一 实验分析 本实验需要为代码段和数据段分别声明描述符 由于要求将数据段的描述符放入 LDT 表中 所以实验程序需要建立一张局部描述符表 并在 GDT 表中声明 LDT 表对应的描述符 描述符声明完成 还需要为它们定义相应的选择子 实验程序在 DSEG 段中描述 GDT 表中的描述符 先用一个全 F 的描述符作为定义的 开始 然后定义主程序段和 LDT 表描述符 然后使用一个全 F 的描述符作为区分于 LDT 表的界限 在 DSEG 段后 用 DSEG1 段来描述 LDT 表中的描述符 其中包括源数据段描述符 目标数据段描述符 在 DSEG1 段的末尾再使用一个全 F 描述符作为描述符声明的结尾 由于主代码段需要访问的段是在 LDT 表中声明的 所以在程序的初始需要执行装载 LDTR 的指令 装载 LDT 表使用的指令如下 MOV AX LDT Sel LLDT AX 1 LDT 表对应段描述符 LDTable Desc 段属性说明 G 0 以字节为段界限粒度 D 0 是 16 位的段 P 1 描述符对地址转换有效 该描述符对应的段存在 DPL 0 0 级段 DT 0 描述符描述的是系统段或门描述符 TYPE 0 x8 LDT 表 段基地址说明 需要在重定位后确定 但可以知道 该描述符对应的数据段是 DSEG1 段界限说明 段界限为 LDTLen 1 ATLDT EQU 82h 局部描述符表段类型值 2 数据段选择子 实验中的两个数据段均在 LDT 表中声明 则描述符对应的段选择符应该标记出来 TIL EQU 04h DataS Sel DataS LDT TIL DataD Sel DataD LDT TIL 二 实验步骤二 实验步骤 1 进入纯DOS环境 运行Tddebug集成操作软件 2 运行 Tddebug 软件 使用 Alt E 选择 Edit 菜单项进入程序编辑环境 按实验要 求编写程序 实验参考流程图如图 1 6 1 所示 3 程序编写完后保存退出 使用Alt C选择Compile菜单中的Compile和Link命令对实 验程序进行编译 连接 4 编译输出信息表示无误后 使用Alt P选择Pmrun命令装入实验程序 如果装入成 功 屏幕上会显示 Load OK 否则 会给出相应的错误提示信息 5 若程序装入成功 则进入保护模式调试环境 在命令输入行使用GDT命令查询系统 的GDT表 并且查看实验程序中声明的代码段 数据段描述符在GDT表中的位置以及对应段 的物理地址 段属性 段界限等 6 使用F7单步执行程序 执行LLDT AX语句后 使用LDT命令查看LDT局部描述符表的 内容 7 根据LDT内容使用D命令查看源数据区的数据和目的数据区数据内容 8 按F9运行程序 如果程序正常运行结束 命令显示区中将显示 Correct Running 9 运行结束后 再次查看目的数据区内容 观察数据传输是否正确 三三 程序流程图程序流程图 描述符 GDT 表项 描述符 LDT 表项 声明各数据段描述符 在 0 级主代码段中装载 LDT 在 0 级代码段中实现数据传输 调用 INT0FFH 返回调试系统 结束 图 1 6 1 局部描述符表实验参考流程图 五 参考实验程序五 参考实验程序 略略 第三章第三章 32 位微机接口硬件实验位微机接口硬件实验 实验箱简介实验箱简介 概述概述 TD PIT 实验系统硬件主要由 PCI 总线扩展卡和 TD PIT 实验平台构成 其 硬件系统的连接接如图 1 1a 所示 USB 总线 PCI 总线 内存总线 总线 AGP 总线 C P U 北桥芯片显卡 显示器 内存 PCI 槽PCI 槽 南桥芯片IED 接口硬盘 键盘鼠标Flash BIOS USB 设备 PCI 卡 微机实验箱 有 键 按 下 吗 图1 1a 硬件系统的连接 PCI 总线扩展卡包括PCI 总线接口电路和系统配置电路以及扩展总线插座 主要实现 PCI 总线接口以及将32 位高速总线从PC 机引出 PCI 总线扩展卡结构如图1 1 所示 图 1 1 PCI 总线扩展卡结构 TD PIT 实验平台上的电路结构主要分两部分 系统总线单元电路和实验单元电路 是 32 位微机接口实验的主要操作平台 实验平台结构如图 1 2 所示 图 1 2 实验平台结构 准系统总线单元实现了面向80 x86 微机系统的32 位系统总线 符合80 x86 总线时序标 的接口电路均可以直接连接到该总线上 总线信号说明如表1 1 所示 表1 1 总线信号 实验系统向 PC 机申请了接口实验所需的配置资源 其中包括 16MB 的存储地址空间 255 字节的 I O 地址空间和一个中断请求线 中断请求线是映射到 PC 机内 15 个中断线中 的一个 系统总线单元将地址空间进行了译码 各提供 4 个片选信号 片选信号同偏移地 址空间对应关系如表 1 2 所示 表1 2 片选信号同偏移地址空间对应关系 用PC 机分配的I O 或存储器空间始地址加上这个偏移地址 就是实验系统中端口占用 的实际地址 I O 和或存储器地址电原理如图1 2A所示 PC 机分配的起始地址可以在 Tdpit 软件中查看或由实验系统附带的配置资源检查程序CHECK EXE 获得 图 1 2A I O 和存储器地址电原理图 实验一实验一 地址译码电路与地址译码电路与 I OI O 接口接口 一 实验目的一 实验目的 1 学习 3 8 译码器在接口电路中的应用 2 掌握地址译码电路的一般设计方法 二 实验设备二 实验设备 PC 微机一台 TD PIT 实验系统一套 三 实验内容三 实验内容 1 用 74LS138 译码器设计地址译码电路 Y7 作为基本输入 输出单元的片选信号 1 读入 74LS245 输入的八位数据 在 74LS574 上输出 用八位 LED 显示开关状态 D0 D31 A0 A31 B B A A E E DIR DIR 74245 X 4 74245 X 4 A6 A7 A22 A23 IOY0 00H 3FH IOY1 40H 7FH IOY2 80H 0BFH IOY3 0C0H 0FFH MY0 00H 3FFFFFH MY1 400000H 7FFFFFH MY2 800000H 0BFFFFFH MY3 0C00000H 0FFFFFFH BE0 BE1 BE2 BE3 XIOR XIOW XMER XMEW 20V8 12 20V8 13 20V8 13 制制制制制 74245 制制制制 2 3 4 5 6 7 8 911 12 13 14 15 16 17 18 XD0 XD7 XD8 XD15 XD16 XD23 XD24 XD31 XA2 XA9 XA10 XA17 XA18 XA25 XA26 XA31 A 2 B 3 E 1 Y0 4 Y1 5 Y2 6 Y3 7 74139A A 14 B 13 E 15 Y0 12 Y1 11 Y2 10 Y3 9 74139B 2 当有键按下 且读入的数字量为 1 则八位 LED 从右向左依次循点亮 否则重读数字量 3 再有键按下 且读入的数字量为 2 则八位 LED 交替亮 否则重读数字量 4 再有键按下返回 四 四 实验原理实验原理 微机接口电路中 常采用 74LS138 译码器来实现 I O 端口或存储器的地址译码 74LS138 有 3 个输入引脚 3 个控制引脚及 8 个输出引脚 其管脚信号如图 2 1 1 所示 当 3 个控制信号有效时 根据输入信号 A B C 的状态 来确定那个输出端为低电平 该信号 即可作为片选信号 图 2 1 1 74LS138 译码器管脚 32 位扩展系统总线上有一个 IOM 信号 该信号为低电平时指示当前操作为 I O 操作 为高电平指示当前操作为存储器操作 它和译码器不同的连接可以用来区分是 I O 端口译 码还是存储器端口译码 32 位总线地址是由 A2 开始 所以地址是以 4 字节边界对齐的 实验系统的 I O 地址空间共有 256 字节 偏移地址一般从 00H FFH 起始地址由 PC 机 系统分配 可以用 CHECK 程序读出 所以设计地址译码电路 主要是针对低 8 位地址线译 码 得到偏移在 00H FFH 之间的端口 本实验要求不使用总线上的片选信号 自行设计端 口偏移地址分别为 C0H DFH 和 E0H FFH 的译码电路 然后用译码输出作为基本输入输出 单元的片选 编写程序 完成 I O 数据操作 实验电原理框图如图 2 1 2 所示 连线图如 表 2 1 1 所示 74LS13874LS138 口地址的计算方法口地址的计算方法 XA7XA7 XA6XA6XA5XA5XA4XA4XA3XA3XA2XA2XA1XA1XA0XA0 地址地址 0 0 0 0 0 0 X X X X X X X X X XY0 00HY0 00H 0 0 0 0 1 1 X X X X X X X X X XY1 20HY1 20H 0 0 1 1 0 0 X X X X X X X X X XY2 40HY2 40H 0 0 1 1 1 1 X X X X X X X X X XY3 60HY3 60H 1 1 0 0 0 0 X X X X X X X X X XY4 80HY4 80H 1 1 0 0 1 1 X X X X X X X X X XY5 0A0HY5 0A0H 1 1 1 1 0 0 X X X X X X X X X XY6 0C0HY6 0C0H 1 1 1 1 1 1 X X X X X X X X X XY7 0E0HY7 0E0H 图 2 1 2 地址译码设计实验电原理框图 表 2 1 1 地址译码设计实验连线表 I OI O 单元单元连接连接其他端其他端74LS13874LS138 端端连接连接其他端其他端 CSCSY7Y7 74LS138 74LS138 A B CA B CXA5 XA6 XA7XA5 XA6 XA7 IORIORXIORXIOR G GGNDGND IOWIOWXIOWXIOW BE0 BE1BE0 BE1BE0 BE1BE0 BE1 I0 I7I0 I7K0 K7K0 K7 O0 O7O0 O7D0 D7D0 D7 四 流程图及实验步骤四 流程图及实验步骤 地址译码电路与 I O 接口设计流程图如图 2 1 4 所示 A 1 B 2 C 3 E1 4 E2 5 E3 6 Y0 15 Y1 14 Y2 13 Y3 12 Y4 11 Y5 10 Y6 9 Y7 7 74LS138 A0 2 A1 3 A2 4 A3 5 A4 6 A5 7 A6 8 A7 9 B0 18 B1 17 B2 16 B3 15 B4 14 B5 13 B6 12 B7 11 E 19 DIR 1 74LS245 5v OC 1 CLK 11 1D 2 2D 3 3D 4 4D 5 5D 6 6D 7 7D 8 8D 9 1Q 19 2Q 18 3Q 17 4Q 16 5Q 15 6Q 14 7Q 13 8Q 12 74LS574 I0 I1 I2 I3 I4 I5 I6 I7 O0 O1 O2 O3 O4 O5 O6 O7 K0 K1 K2 K3 K4 K5 K6 K7 D0 D1 D2 D3 D4 D5 D6 D7 1 2 3 4 5 6 7 8 16 15 14 13 12 11 10 9 SW DIP 8 1K 1K XIOW XIOR XA5 XA6 XA7 GND G XD0 XD7 CS 1 2 3 4 5 6 7 8 16 15 14 13 12 11 10 9 4 7 k 8 1 2 3 A 8 9 10 C 11 12 13 D 4 5 6 B 5v BE0BE0 IOW IOR Y N Y N Y N N N N Y N N Y N N 初始化 读入八位开关量 输岀八位数据 有键按下吗 结束 读入八位开关量 有键按下吗 AL 1 AL 2 读入八位开关量 八位 LED 左循环点亮 Y N 图 2 1 4 地址译码电路与 I O 接口设计流程图 实验步骤 1 按图 3 1 1 所示连接实验线路 2 32 位 I O 接囗单元自检 1 点击工具栏 c 2 C TangDu PitPP Asm1 DEBUG I I 30E030E0 读入当前八位开关状态 改变八位开关状态 开关量亦不同 O O 30E030E0 FFFF 八位 LED 全亮 Q Q 退岀自检 3 返回 WINDOWS C TangDu PitPP Asm1 EXITEXIT 3 编译链接 4 运行程序 拨动开关 观看 LED 显示是否正确 五 参考程序五 参考程序 六 实验报告六 实验报告 实验二实验二 82548254 定时定时 计数器计数器 一一 实验目的实验目的 1 掌握 8254 的工作方式及应用编程 2 掌握 8254 的典型应用电路接法 二二 实验设备实验设备 PC 微机一台 TD PIT 实验系统一套 三三 实验内容实验内容 1 计数器 0 工作在方式 3 初值为 4800H OUT0 分两路输出 一路外接 2 位 LED 使其以亮 0 5 秒灭 0 5 秒闪亮 另一路作为计数器 1 的计数脉冲 CLK1 2 计数器 1 工作在方式 2 初值为 4 OUT1 的输出外接 2 位 LED 使其以亮 3 秒灭 1 秒闪亮 3 计数器 2 工作在方式 0 初值为 0FH 按压开关产生的脉冲作为计数器 2 的计数脉冲 按压 开关的次数将在屏幕上显示 当按压开关到 17 次时 观察 OUT2 电平的变化 四四 实验原理实验原理 8254 是 Intel 公司生产的可编程间隔定时器 是 8253 的改进型 比 8253 具有更优良 的性能 8254 具有以下基本功能 1 有 3 个独立的 16 位计数器 2 每个计数器可按二进制或十进制 BCD 计数 3 每个计数器可编程工作于 6 种不同工作方式 4 8254 每个计数器允许的最高计数频率为 10MHz 8253 为 2MHz 5 8254 有读回命令 8253 没有 除了可以读出当前计数单元的内容外 还可以读出状 态寄存器的内容 6 计数脉冲可以是有规律的时钟信号 也可以是随机信号 计数初值公式为 n fCLKi fOUTi 其中 fCLKi 是输入时钟脉冲的频率 fOUTi 是输出波形的频率 图 2 2 1 是 8254 的内部结构框图和引脚图 它是由与 CPU 的接口 内部控制电路和三 个计数器组成 8254 的工作方式如下 1 方式 0 计数到 0 结束输出正跃变信号方式 2 方式 1 硬件可重触发单稳方式 3 方式 2 频率发生器方式 4 方式 3 方波发生器 5 方式 4 软件触发选通方式 6 方式 5 硬件触发选通方式 图 2 2 1 8254 的内部接口和引脚 8254 的控制字有两个 一个用来设置计数器的工作方式 称为方式控制字 另一个用 来设置读回命令 称为读回控制字 这两个控制字共用一个地址 由标识位来区分 控制 字格式如表 2 2 1 所示 读回控制字格式如表 2 2 2 所示 当读回控制字的 D4 位为 0 时 由该读回控制字 D1 D2 位指定的计数器的状态寄存器内容将被锁存到状态寄存器中 状态 字格式如表 2 2 3 所示 表 2 2 1 8254 的方式控制字格式 表 2 2 2 8254 读出控制字格式 表 2 2 3 8254 状态字格式 五五 实验说明及流程图实验说明及流程图 根据计数初值公式 n fCLKi fOUTi 可计算计数器 0 1 2 的初值如下 计数器 2 的 CLK2 18 432KHZ OUT2 2 所以 N2 18432 2 9216 576H 计数器 0 的 CLK0 184 32KHZ OUT0 5KHZ 所以 N0 184 32 5 36 8 37 计数器 1 的 CLK1 5KHZ OUT1 1KHZ 所以 N1 5 1 5 8254 定时 计数器一电原理框图如图 2 2 2 所示 连线图如表 2 2 1 所示 流程图如图 2 2 4 所示 图 2 2 2 8254 定时 计数器电原理框图 12 A 74LS04 34 B 74LS04 CLK 1 Q0 3 Q1 4 Q2 5 Q3 6 MR 2 A 74LS393 CLK 13 Q0 11 Q1 10 Q2 9 Q3 8 MR 12 B 74LS393 1 8432MHZ D0 8 OUT0 10 D1 7 GATE0 11 D2 6 CLK0 9 D3 5 D4 4 D5 3 D6 2 OUT1 13 D7 1 GATE1 14 CLK1 15 CS 21 RD 22 W R 23 OUT2 17 A0 19 GATE2 16 A1 20 CLK2 18 8254 1K 3 6K3 6K 102102 18 432MHZ 184 32KHZ 18 432KHZ XD0 XD7 XIOW XIOR XA2 XA3 IOY0 5V 4 5 6 B74LS00 1 2 3 A 74LS00 4 7k 4 7k 5V 5V KK1 KK1 5V 1K 1K 5V 表 2 2 1 8254 定时 计数器连线表 82548254 端端连接连接其他端其他端82548254 端端连接连接其他端其他端
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 入职安全教育培训记录卡课件
- 桂林医学院口腔门诊部扩建项目环评报告
- 保育员理论知识培训体会课件
- 长城经销商管理办法
- 《内部资料管理办法》
- 数学与生活:探秘概率起源
- 机场保安考试题库及答案
- 烟草投诉举报管理办法
- 特种药品药店管理办法
- 企业安全知识培训台账课件
- T/CECS 10026-2019绿色建材评价建筑门窗及配件
- 企业往来款协议书
- 2025山东中考:生物高频考点
- DB65T 4815-2024 清洗消毒中心内畜禽及其产品运输车辆消毒技术规范
- 《儿童癫痫护理指南》课件
- 数学三年级上册二 观察物体1 看一看(一)教学设计
- 2025-2030中国PEM水电解槽行业现状调查与发展前景规划研究研究报告
- 2025年中国人保财险全系统黑龙江分公司招聘笔试参考题库含答案解析
- 施工阶段全过程造价咨询管理办法
- 新编物业设施设备台账表格模板
- 美术中的秘密课件
评论
0/150
提交评论