微机实验课件 典藏版 实验报告必备_第1页
微机实验课件 典藏版 实验报告必备_第2页
微机实验课件 典藏版 实验报告必备_第3页
微机实验课件 典藏版 实验报告必备_第4页
微机实验课件 典藏版 实验报告必备_第5页
已阅读5页,还剩74页未读 继续免费阅读

下载本文档

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

文档简介

汇编语言与接口技术 西北工业大学计算机学院计算机硬件实验室 汇编语言调试环境使用说明 利用Editplus和汇编相关软件建立起基于Windows XP平台的汇编语言集成调试环境 对我们学习汇编语言 开发汇编软件将十分方便 它将我们学习汇编程序时的编辑 编译 调试等工具集成于一体 一 Editplus的安装和必要设置 1 将压缩软件 EDITPLUS RAR 解压到c EDitPLUS目录下2 用鼠标点击图标 安装EDITPLUS到C EDITPLUS目录下 3 用鼠标点击图标 完成注册码的输入 4 将压缩软件 MASM615 RAR 解压到c EDitPLUS目录下 即完成安装 5 用鼠标双击桌面上的图标 或选 开始 程序 EDITPLUS EDITPLUS2 出现如下界面 文件夹下的源程序列表 汇编程序文件的后缀为ASM或SRC 选择用户编程文件夹 用户程序编辑区 输出窗口 文件列表中文件名后缀 每个窗口的大小可由鼠标进行缩放 输出窗口可由鼠标控制进行缩放 其他窗口同样 安装Editplus主要菜单的设置 第一次安装Editplus必须进行必要的设置 首先对 文件 中的 设置与语法 规则进行设置 汇编程序文件名的后缀一般为 asm 或 src 为 汇编语言 添加文件类型 其次对 文件 中的 模板 进行设置 为 汇编语言 添加模板 汇编语言模板的文件名 设置用户工具 用户工具应添加 编译 汇编 工具调试工具帮助文件 可选 请记住 编译 汇编 工具的参数设置 请记住 调试工具的参数设置 帮助文件根据需要颗可选 以上设置完成后关闭Editplus 重新启动Editplus 即可以对汇编语言程序进行编辑 编译 调试及运行 从源程序列表中打开要编辑 调试的文件 主要菜单的使用 对源程序的编译和连接 对目标程序的调试 帮助文件 源程序调试软件的使用 源程序窗口 寄存器窗口 命令行窗口 源程序调试工具常用命令介绍 窗口介绍 源程序调试工具的窗口共有十个 0 HelpALT 01 LocalsALT 12 WatchALT 23 Source1ALT 3 4 Source2ALT 45 Memory1ALT 5 6 Memory2ALT 67 RegisterALT 7 8 8087ALT 89 CommandALT 9 用鼠标点击Windows菜单可看到这10个窗口 要打开某个窗口 用鼠标选择对应项即可 激活窗口 将鼠标移动到当前窗口并点击鼠标左键 此时该窗口边框变亮 表明当前窗口被激活 移动窗口 将鼠标放在被激活窗口左边框线或上边框线上 并按住鼠标左键移动鼠标 则可移动当前窗口的位置 关闭窗口 将鼠标放在被激活窗口的左上方边框 处 单击鼠标左键则关闭当前窗口 功能键 F2 寄存器窗口的开 关F3 在源程序方式和汇编方式之间切换F4 切换到输出屏幕F5 执行到下一个断点或到程序结束 没断点 F6 激活各调试窗口F7 在光标所在行设置一个临时断点 并执行到该行F8 执行跟踪命令F9 在光标所在行设置或清除一个断点 双击鼠标左键功能相同 F10 执行ProgramStep命令PgUp 上卷一页PgDn 下卷一页Home 上卷到文件或命令缓冲区顶部End 下卷到文件或命令缓冲区底部命令行常用命令的使用 T 相当于F8P 相当于F10G 相当于F5D type 显示内存内容E type 修改内存内容R 寄存器名 显示并修改寄存器内容Q 退出调试工具 实验一BCD码的运算 一 实验目的1 熟悉在Ediplus集成环境下编辑 编译 调试编语言程序的全过程 2 掌握汇编语言程序结构中数据段 堆栈段 代码段定义及内存分配方法 3 学会源程序调试工具主要命令的使用方法 4 掌握用组合BCD码表示数据的方法 并熟悉其加 减 乘 除运算 二 实验内容1 多位十进制数加法 2 两位十进制数乘法 三 实验要求1 多位十进制数加法 在内存中以DATA1和DATA2为首址 各分配5个字节单元 分别存入两个8位组合BCD码数据 低位在前 将两数相加 结果送回到DATA2处 2 两位十进制数乘法 将被乘数和乘数以组合BCD码形式分别存放于DATA1和DATA2定义的字节单元中 经乘法运算 乘积存入DATA3定义的两个内存单元中 3 用汇编调试工具查看运算结果 进行手工验证 并且用汇编调试工具中的相关修改DATA1和DATA2 并重新执行 关于BCD码扩充知识 Intel助记符使用术语 ASCII 称作不压缩的BCD码 而使用 十进制数 则称为压缩BCD码 不压缩的BCD码不压缩的BCD码由在每一个字节的低四位包含一个十进制数字的字节组成 Intel系列处理器提供了调整不压缩值的四种算术操作指令 加法操作后调整 AAA AsciiAdjustforAddition减法操作后调整 AAS AsciiAdjustforSubtraction乘法操作后调整 AAM AsciiAdjustforMultiply除法操作后调整 AAD AsciiAdjustforDivision压缩的BCD码压缩的BCD码由包含两个十进制数字的字节组成 一个在高四位 另一个在低四位 Intel系列处理器提供了对进行加和运算的压缩BCD数调整指令 加法操作后调整 DAA DecimalAdjustforAddition减法操作后调整 DAS DecimalAdjustforSubtraction今天实验所讲的 BCD码的运算 是指压缩BCD码的运算 搞清计算机中压缩BCD码 十六进制码的概念举例 在内存中定义了两个数据 分别为data1 78H data2 78H 其中data1为组合的BCD码 data2为16进制数 则有 data1的十进制 十六进制为 78 十进制 4EH 十六进制 data2的十进制 十六进制为 120 十进制 78H 十六进制 多位十进制数加法 modelsmall datadata1db11h 22h 33h 44h 00hdata2db99h 88h 77h 66h 00h code startupmovsi offsetdata1 设指针movdi offsetdata2clc 清进位movcx 5 设加法次数lop moval si 取第一加数adcal di 取第二加数daa 十进制调整mov di al 结果存入指定单元incsi 指针加1incdilooplop 循环 exitend 流程图 开始 清进位 设加法次数 十进制调整 部分和回送 指向下单元数 ALAL 第二加数 CX 1 0 结束 Y N 两位十进制数乘法 如34 56 编程思路 1 把56循环叠加34次 每叠加一次进行一次BCD码的加法调整 2 34为组合的BCD码 在计算机中的存放形式为 00110100b3 必须将组合BCD码34H转换成十六进制才可进行循环叠加 34H BCD码 30H 4 30H 10H 0AH 4 34 d 22H 两位十进制数乘法流程图 开始 分离出第一乘数的 个位 分离出第一乘数的 十位 第一乘数的 十位 移到 个位 后 再乘10 合成得到16进制的第一乘数 BCD码转换成16进制数 1 1 清进位 第二乘数做加法次数 十进制调整 AL与AH内容交换 AL与AH内容交换 十进制调整 CX 1 0 N Y 存储结果 结束 一 实验目的掌握循环结构程序的设计 调试 二 实验内容1 多字节无符号数加法 2 设计一软件延时器 并在屏幕上显示软件延时倒计时及正计时过程 3 试编写一个程序 延时大约1秒 在屏幕上按99 98 97 96 00的顺序显示倒计时的全过程 可选作 实验三循环结构程序 三 实验要求1 多字节无符号加法 在DATAS中存放10个双字节无符号数 用循环结构设计程序 通过程序运算 把这10个双字节无符号数相加 其和存入RESULT定义的四个字节单元当中 要求用16位寄存器完成编程 范例为用32寄存器实现 2 设计一软件延时器 并在屏幕上显示16进制 F 0 倒计时及正计时及 0 F 过程 范例 做一延时约1秒的软件延时器 在屏幕上按9 8 0顺序显示软件延时倒计时过程 对于 学号 为奇数的同学在计算机屏幕上的显示如图1所示 对于 学号 为偶数的同学在计算机屏幕上的显示如图2所示 3 可参考实验2的编程完成编程 FEDCBA98765432100123456789ABCDEF 0FEDCBA9876A5B4C3D2E1F0 图1 图2 补充知识 关于循环语句的高级语法 目前的MASM中引入了一系列的伪指令 涉及条件测试 分支和循环语句 有了它们 汇编语言有了和高级语言一样的结构 关于循环语句的伪指令有 while条件测试表达式指令 break if退出 while条件 continue endw repeat指令 break if退出 while条件 continue until条件测试表达式 或 untilcxz 条件测试表达式 通过今天的实验应顺便掌握子程 过程 序的编写及调用 子程序结构 procedure namePROC 距离 USES寄存器列表 LOCAL局部变量列表 汇编语言指令 RET 子程序的返回procedure nameENDP 子程序的结束距离 NEAR FAR NEAR16 NEAR32 FAR16 FAR32 缺省为NEARUSES寄存器列表 由编译器在子程序指令开始前自动安排PUSH这些寄存器的指令 并在RET前自动安排POP指令 用于保护执行环境 注意在子程序中也可用80386以后的指令PUSHA POPA PUSHAD POPAD也十分方便 LOCAL局部变量列表 局部变量列表必须放到子程序中所有汇编语句的最前面 常用的局部变量类型有 byte word dword等 扩充知识 关于空操作 NOP 指令空操作 NOP 是所有指令中最简单的 正如它的名字所暗示的那样 无论在情况下它什么也不操作 NOP不影响标志 寄存器及存储单元 它仅仅让指令指针 IP 增加 NOP有许多用途 如 在你不想重新汇编程序而删除一条指令时 可以用90H NOP 来填充相应的单元 又如我们本实验所用到的 在你要测试程序的最后一条指令后加入一条NOP指令 然后在此设置一条断点 以次方便用户程序的调试 当然随着编程水平的提高 还有其他用途 这里不做深入讲解 了解DOS下的系统功能调用系统功能调用 系统功能调用是DOS为方便汇编语言编写而提供的一组约80个功能调用的常用子程序 它分为设备管理 文件管理和目录管理等几类 DOS规定用软中断指令INT21H进入各功能调用子程序的总入口 再为每个功能调用规定一个功能号 以便进入相应各用子程序的入口 系统功能调用的使用方法 EX1 从键盘输入单字符MOVAH 01H 1号功能调用INT21H将键盘输入字符的ASCII码送到AL EX2 从键盘输入字符串BUFDB10DUP LEADX BUFMOVAH 0AH 0A号功能调用INT21H将键盘输入的字符串写到RAM中去 击回车键表示字符串结束 字符数与予留空间的关系为 少补零多丢失 EX3 输出单字符MOVDL M MOVAH 02H 2号功能调用INT21H将DL中字符从屏幕上显示出来 EX4 输出字符串BUFDB Thankyou MOVDX OFFSETBUFMOVAH 09H 9号功能调用INT21H将指定RAM缓冲区中的字符串从屏幕上显示出来 为字符串结束符 EX5 直接控制台输入 输出单字符MOVDL 0FFH DL 0FFH时 MOVAH 06H 6号功能调用INT21H 将键盘输入字符送到AL中 MOVDL M DL 0FFH时 MOVAH 06H 6号功能调用INT21H 将DL中字符送到屏幕上显示 多字节无符号数加法 MODELSMALL 586 DATADATASDW1111H 2222H 3333H 4444H 5555HDW6666H 7777H 8888H 9999H 0AAAAHRESULTDD CODE STARTUPMOVSI OFFSETDATAS 设指针MOVCX 10 累加次数MOVEAX 0 清累加器CLC 清进位LOP MOVBX SI 取加数到BXMOVZXEBX BX 将BX扩展成32位ADCEAX EBX 带进位加INCSI 改指针INCSILOOPLOP 循环加MOVRESULT EAX 存结果 EXITEND 开始 清进位 将BX扩展为32位 SI指向下一加数 CX 1 0 N Y 存结果 结束 软件延时器 modelsmall datamydatadb10dup 20h numdb39h 0dh 0ah code startupmovcx 0ah 设循环次数lop movah 09h 显示功能调用leadx mydataint21hcallnearptrdelay 调用延时子程序decnum 修改显示数字looplopnop exitnopDelayprocnearusescx 延时子程序movbx 06ffh 设第二时常数Delay1 movcx 0hloop 自身循环CX次decbx 第二时常数减1jnzdelay1 不为零循环retDelayendpend 开始 字符串显示功能调用 延时子程序调用 显示数字修改 CX 1 0 N Y 结束 主程序流程 延时子程序流程 实验四排序程序 一 实验目的1 学习无符号数比较大小指令 2 掌握多重循环编程方法 3 掌握汇编语言编写排序程序的思路和方法 二 实验内容1 单字节无符号数排序 2 去极值滤波 三 实验要求1 单字节无符号数排序 在DATANUM单元存放双字节无符号数 表示要排序数据的个数 而从DATAS单元开始存放要排序的单字节无符号数据 数据个数至少10个 程序运行之后 这些数据按照由大到小的顺序仍然存放于DATAS单元开始的单元 2 去极值滤波 某控制系统为了抗干扰 采用去极值滤波法处理采集数据 取连续6个A D采样值 12位 双字节 低12位 要求去掉最大值和最小值 将余下4个数求平均值 用该平均值代表当前时刻系统状态的真值 试编一程序完成这个滤波过程 单字节无符号数排序 流程图 开始 数据指针SI置0 前数与后数比较 前数 后数 前 后数交换 数据指针SI指向下一数 Y N CX 1 0 N Y Y BX 1 0 N 结束 CXBX BX数据个数 1 modelsmall datadatanumdw10datasdb21h 13h 4h 5h 7h 6h 0F9h 20h 9h 11h code startupmovbx datanum 取数据的个数到BXdecbx BX 1为循环次数lop0 movcx bx 设内循环次数movsi 0 设置寻址的偏移量SI 0lop moval datas si 取一个数Acmpal datas si 1 取下一个数B 比较A和Bjbejh 若A B 转到JHxchgal datas si 1 若A B 交换A Bmovdatas si aljh incsi 偏移量SI 1looplop CX 1 0 继续内循环decbx CX 1 0 内循环结束 外循环次数BX 1jnzlop0 BX 0 继续外循环 exit BX 0 排序结束end 去极值滤波 注意与前面程序排序笔筒的地方 此排序为字的排序 16位 所以比较为16位数据比较 指针的移动为两个字节 modelsmall 586 datadatanumdb6datasdw0123h 0abch 0234hdw0345h 0456h 0567h code startupcallpx 排序movsi offsetdatas 2 掐头去尾送指针movcx 4 送累加次数clc 清进位movax 0 取首数qh adcax si 累加incsiincsiloopqhshrax 2 除4mov datas ax 存结果到DATAS首位nop exitnop pxprocnearmovbl datanum 取字长decblmovbh 0lop0 movcx bx 送比较次数movsi 0lop movax datas si 送前数cmpax datas si 2 与后数比较jbejh 若大于则跳转到jhxchgax datas si 2 交换movdatas si axjh incsiincsilooplopnext decbl 修改比较次数jzfinishjmplop0finish nop 结束retpxendpend 实验五分支程序 一 实验目的掌握分支程序编程方法 复杂分支程序的查表法等 二 实验内容1 学生课程成绩分段统计 2 键盘及屏幕显示功能调用 三 实验要求1 学生课程成绩分段统计 用一个字节表示每个学生的学号 另一个字节存放压缩BCD码 表示学生的课程成绩 最低0分 最高99分 规定当课程成绩为0F0H表示作弊 当课程成绩为0F1H表示缺考 当学生的学号为0FFH时表示学生成绩统计的结束符 学生成绩在内存的存放形式为 学号 成绩 每个学生占两个字节 从内存SCORE为首址开始存放 要求学生人数不少于10个 试编程序 按0 9 10 19 20 29 80 89 90 99及作弊 缺考等12种情况把学生的课程成绩进行分段统计 将统计结果存入以COUNT为首址的12个单元中 2 试编一程序扫描键盘 当B键按下时 在屏幕上显示0 9循环计数 S键按下时停止计数 再按B键继续计数过程 E键按下时退出程序 3 定义三个字节的正数 A B C 判断是否能构成三角形 如能 则显示 Yes 不能 则 No 要构成三角形 必须满足两边之和大于第三边 即 B C A或A C B或A B C 定义三组字节的正数 A1 B1 C1 A2 B2 C2 A3 B3 C3 请编程序判断这三组数据能否构成三个三角形 将三组数据判断的结果用 Yes 或 No 显示出来 用来表示能否构成三角形 4 用DEBUG调试程序预置数据和查看程序运行结果 以验证程序正确性 分支程序常由比较指令 CMP 和条件转移指令共同实现 条件转移分带符号转移和不带符号转移 转移指令的记忆技巧 字母含义J转移G大于 带符号比较 L小于 带符号比较 A高于 无符号比较 B低于 无符号比较 E等于N不应注意的问题 条件转移的跳转范围为 128 127 选择合适的转移指令 否则不能转移到一定的程序分支 特别要注意区分有符号数和无符号数的使用条件 要为每个分支安排的出口 否则导致程序运行混乱 在分支较多时 编程时各个分支的先后次序应与流程图一致 以减少编程出错的机会并便于检查 在调试分支程序时 要假设各种可能的输入数据 并沿每个分支走一边 以检查程序的正确性 学生课程成绩分段统计 开始 设置学号 成绩指针 取学号 取成绩 是结束标志 取十分位 并将十分值扩展为16位送DI 对DI所指统计区段统计值加1 是作弊 是缺考 修改指针 CX 1 0 作弊统计区段统计值加1 缺考统计区段统计值加1 结束 Y Y Y Y N N N N modelsmall 586 datascoredb1 10h 2 20h 3 30h 4 40h 5 50h 6 77h 7 70hdb8 80h 9 90h 10h 08 11h 0f0h 12h 0f1h 0ffhcountdb12dup code startupmovcx 20 送统计上限movsi 0 SCORE统计指针statistic moval score si 取学号cmpal 0ffh 判是否为结束jesta end 转统计结束movbl score si 1 取成绩cmpbl 0f0h 是否作弊jefake 是 转作弊处理cmpbl 0f1h 是否缺考jemiss 是 转缺考处理shrbl 4 取十分位movzxdi bl 将十分值扩展为16位送DIinccount di 相应区段统计值加1down incsi 改指针incsiloopstatistic 循环sta end nop 结束 exit fake inccount 10 作弊处理jmpdownmiss inccount 11 缺考处理jmpdownend 键盘及屏幕显示功能调用 开始 显示提示信息 置处理指针为 停止 调延时 键盘扫描程序 有键动 转处理指针处 B键 S键 E键 转处理指针处 结束 置处理指针为 计数 置处理指针为 停止 N Y Y Y Y N N N 处理指针为 计数 处理指针为 停止 计数显示 延时 键盘扫描程序 子程序定义 CX 1 0 N Y 监测键动 有键动 做键动标志bx 1 N Y modelsmall dataMess1db pressbbutton count 0dh 0ahmess2db presssbutton stop 0dh 0ahMess3db pressebutton exit 0dh 0ah countdb20h 20h 20h 20h 20h 30h 0dh code startupmovah 09h 显示提示信息movdx offsetmess1int21hleasi stop 设处理指针scan callnearptrdelay 调延时 键扫程序orbx bx 判有无键动jnzscan1 有键动 转键处理jmpsi 无键动 转当前处理程序scan1 cmpal b 键处理程序jeb proccmpal s jes proccmpal e jee proccalldelayjmpsib proc leasi count B键处理jmpscans proc leasi stop S键处理jmpscane proc nop E键处理nop exit count inccount 5 修改显示数字moval 3ah 比较超限cmpal count 5jadown 若不超限 调显示movcount 5 30h 超限 设启始值down movah 09h 显示功能调用leadx countint21hjmpscanstop jmpscannopDelayprocnearusescx 延时子程序movbx 380h 设第二时常数delay1 movcx 0hloop 自身循环CX次movdl 0ffh 监测键动movah 06hint21hjnzkey ret 若有键动 延时终止 转键处理decbx 第二时常数减1jnzdelay1 不为零循环jmpdelay retkey ret movbx 1 做键动标志delay ret retDelayendpend 硬件实验部分 本部分共进行3次实验 实验内容如下 1实验六并行接口技术实验2实验七8254定时 计数器实验3实验九A D转换实验 下面根据实验台实物介绍实验台 特别说明 为了方便实验 实验台设计时已将除片选信号线 CS 外的所有相关总线全部连好 并在每一个实验电路附近予留有实验内容要求的连线插孔 实验时只要将相应插孔用单股导线对应相连即可组成完整的实验电路 在给出的实验电路图中 线路所带小圆圈即表示连线插孔 硬件实验注意事项 1 在实验台确保断电的条件下 方可连接电路 2 线路连接完成 检查确认没有错误后 再开通实验台电源 3 用单股导线连接电路时 要将单股导线线头整直 并确认线头没有断裂 以防单股导线端头断裂在插孔内 影响下次试验的进行 4 实验完成后 首先关断实验台电源 再用手捏住导线的根部 一根一根拔出 并把导线整好放入实验箱右边的线盒内并盖好实验箱才可离开 5 实验报告必须画出原理框图 并概述其工作原理 实验六并行接口技术实验 一 实验目的1 掌握8255A并行接口的基本使用方法 2 理解数码管扫描显示原理 学习数码管扫描显示方法 二 实验内容1 用8255A作为并行接口 从8255A的A口的PA4 PA7输入四个开关量 B口通过74HC573与数码管的段位相连 a b c d e f g dp分别对应B口的PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 试编写一个程序 从8255A的A口读入将这四个开关量的值 并根据其值的大小 通过8255A的B口连接的数码管显示出相应的十六进制值 即当A口输入为 0000 xxxx 时 B口输出所数码管显示 0 当A口输入为 1111xxxx 时 B口输出所数码管显示 F 2 设8255A的A口B口均为输出方式 A口通过ULN2003驱动器接数码管的位选端 B口通过74HC573与数码管的段位相连 a b c d e f g dp分别对应B口的PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 试编一动态扫描程序 让6个数码管 同时 点亮 显示每位学生自己的学号 参考程序显示 123456 3 参考程序2 编写一个倒计时程序 延时约1秒 2秒 的软件延时器 用两位LED动态显示出2F 2E 00倒计时过程 三 实验电路及设计1 实验电路图 2 实验连线 1 逻辑电平开关输出孔K1 K6对应连接到8255A的PA0 PA5 2 8255A的PB0 PB5对应连接到数码管的位选端JM1 JM6 3 数据总线D0 D1 D2 D3 D4 D5 D6 D7对应连接到数码管的字划端a b c d e f g dp 4 8255A的片选端CS8255连到译码控制单元的0E200H 0E203H 3 8255A的端口地址PA口 0E200H PB口 0E201H PC口 0E202H 控制寄存器 0E203H4 数码管编码表 0 3FH 1 06H 2 5BH 3 4FH 4 66H 5 6DH 6 7DH 7 07H 8 7FH 9 6FH A 77H B 7CH C 39H D 5EH E 79H F 71H 有关问题的说明 数码管 共阴 DP DP 共阴 地 不闭合 数码管就点不亮 多个数码管扫描显示 多个数码管扫描显示 限流电阻 锁存器 JM3 JM2 JM1谁为 谁连接的数码管就显示锁存器当前锁存的值 所谓扫描显示是 对 个数码管 给锁存器送第 个数码管显示内容 而后第 个数码管公共端接低 延时 给锁存器送第 个数码管显示内容 而后第 个数码管公共端接低 延时 给锁存器送第 个数码管显示内容 而后第 个数码管公共端接低 延时第 步后 再从 开始 周而复始 那么 JM3 JM2 JM1是互斥的了 连接数据总线D7 D0 驱动器 实验6 1电路示意图 B口8255PA3PA2PA1PA0 SK4SK3SK2SK1开关 74HC573锁存器 限流电阻 D busD7 D0 SMGLT CS8255 PB0 PB7 K CPU 开始 初始化8255 点亮一位数码管 读键盘 有键按下否 读8255A的A口数据 屏蔽高4位 查表 得到相应的字型码 通过8255A的B口输出字型码到LED显示 结束 modelsmallCs8255equ0E200h 片选地址CS1p ctlequ90h 8255控制字 A口入 B口出 datatabledb3fh 6h 5bh 4fh 66h 0 1 2 3 4 字型表db6dh 7dh 07h 7fh 6fh 77h 5 6 7 8 9 Adb7ch 39h 5eh 79h 71h B C D E F code startupmovdx cs8255 3 8255初始化movax p ctloutdx axlop movah 06h 键入任意结束程序的执行movdl 0ffhint21h jnzscan endmovdx cs825 读开关inal dxandal 0fhmovbx offsettable 读字型码xlatmovdx cs8255 1 B口输出outdx aljmplop 循环扫描scan end exitend 实验6 1源程序 实验6 2 限流电阻 ULN2003驱动器 DbusD7 D0 CS573 CS8255 74HC573锁存器 ABCDEFGDP A口 B口 PB0 PB7 K1 K3 K4 K5 K6 K2 开始 初始化 查表取显示数字字型码 显示字型码送锁存器 输出 扫描位数 调延时 读键盘 有键动 结束 延时子程序流程 略 取对应数码管字位 并输出 下一扫描位置 modelsmallCs8255equ0E200h 片选地址CS1p ctlequ80h 8255控制字 A口输出 B口输出 datatabledb3fh 06h 5bh 4fh 66h 0 1 2 3 4 字型表db6dh 7dh 07h 7fh 6fh 5 6 7 8 9 code startupmovdx cs8255 3 发控制字moval p ctloutdx almovcl 1 设扫描位置lop moval cl 取显示数字movbx offsettable 读字型码xlatmovdx cs8255 1 输出字型码outdx almoval 80hIncclroral clmovdx cs8255 输出字位outdx alcmpcl 6jbedown 若显示位置大于6 返回启始位置movcl 1 down calldelaymovah 06 判有键动 跳出循环movdl 0ffhint21hjnzscan endjmplop 循环扫描scan end nop exitnopdelayprocnear 延时子程序pushcxmovbx 02hdelay1 movcx 0hloop decbxjnzdelay1popcxretdelayendpend 实验七8254定时 计数器实验 一 实验目的1 掌握8254定时 计数器的基本使用方法 2 了解8254定时 计数器利用级连扩大计数范围的方法 3 了解多I O芯片协同工作的原理和方法 二 实验内容1 将8254定时器0设置为方式2 分频 定时器1设置为方式3 方波 定时器0的CLK0端接1M或2M时钟 定时器0的输出脉冲作为定时器1的时钟输入 将定时器1的输出脉冲接在一个LED灯上或风鸣器上 编程使8254工作 观察灯的状态或风鸣器声响 2 用8254做秒信号源 用8255A控制交通灯的红绿变化 完成一交通灯控制系统 使每10秒切换一次通行方向 三 实验电路及设计1 实验电路图 2 实验内容1 实验连线 1 8254的GATE0 GATE1接高电平 2 8254T0的CLK0接1M或2M时钟孔 3 8254T1的CLK1接T0的OUT0 4 8254的片选端CS8254连到译码控制单元的0E204H 0E207H 5 8254T1的OUT1接LED灯 3 实验内容2 实验连线以下连线假设8255A的A口为输入方式 B口为输出方式 8255A的PA1连接8254T1的OUT1 8255A的B口控制交通灯的八只LED灯 1 连线同 实验内容1 的 1 4 2 8254T1的OUT1接8255A的PA1孔 3 8255A的PB7 PB0对应连接到dp g f e d c b a 它们对应交通灯的Wr Er Wg Eg Nr Sr Ng Sg灯 4 交通灯八只LED发光管的公共控制端JTD孔接高电平 5 8255A的片选端CS8255连到译码控制单元的CS1 0E200H 4 8254和8255A的端口地址8254的端口地址 CS2 定时器0分频系数寄存器 0E204H 定时器1分频系数寄存器 0E205H 控制寄存器 0E207H 8255A的端口地址 CS1 PA口 0E200H PB口 0E201H PC口 0E202H 控制寄存器 0E203H 实验 1 开始 初始化T0 初始化T 装T0低字节计数初值 结束 装T0高字节计数初值 装T 低字节计数初值 装T 高字节计数初值 cs8253 CS2 0E204H 0E207H clk0 1M out0 CLK1 out1 BJ或DL1 gate0 K1 令k1 1 gate1 K2 令k2 1 MODELSMALLCS8253EQU0E204HT0 CTLEQU00110100B 对T0两次读写 先低后高 T0为方式2 分频 T1 CTLEQU01110110B 对T1两次读写 先低后高 T1为方式3 方波 DATAT0 DATADB0FFH 040HT1 DATADB0FFH 0 CODE STARTUPMOVDX CS8253 3 初始化T0MOVAL T0 CTLOUTDX ALMOVDX CS8253 给T0低字节装计数初值MOVAL T0 DATAOUTDX ALMOVAL T0 DATA 1 给T0高字节装计数初值OUTDX AL MOVDX CS8253 3 初始化T1MOVAL T1 CTLOUTDX ALMOVDX CS8253 1MOVAL T1 DATA 给T1低字节装计数初值OUTDX ALMOVAL T1 DATA 1 给T1高字节装计数初值OUTDX AL EXITEND 开始 8254T0初始化 给8254T0装初值 8254T 初始化 给8254T 装初值 8255初始化为A口入 B口出 8255B口输出方向初值 读8255PA1 测试8255PA1 PA1 1 读8255PA1 测试8255PA1 PA1 0 控制换向8255B口输出方向值 检查键盘 有键盘动 结束 实验7 2 cs8254 CS2 0E204H 0E207H clk0 1M out0 clk1 out1 8255 PA1 gate0 k1 gate1 k2 JTD 5V CS8255 CS1 0E200H 0E203H 8255芯片的片选信号 即片选地址 PB7 PB0 RE RS RW RN GE GS GW GN MODELSMALLCS8254EQU0E204H 计数器0寄存器地址 CS2T0 CTLEQU00110101B 控制字 选择计数器0 读 写双字节 先低后高 方式2 十进制计数T1 CTLEQU01110111B 控制字 选择计数器1 读 写双字节 先低后高 方式3 十进制计数CS8255EQU0E200H 8255的A口地址 CS1P CTLEQU90H 8255的方式控制字A B口均工作在方式0 A口输入 B口输出 DATAT0 DATADB00H 50H 计数器0的计数值为5000HT1 DATADB00H 20H 计数器1的计数值为2000Hdir datadb01011010b 交通灯方向初值 0表明灯熄灭 1表明灯点亮 高半字节为红 低半字节为绿 顺序为东南西北 D7 东红 D6 南红 D5 西红 D4 北红 D3 东绿 D2 南绿 D1 西绿 D0 北绿 CODE STARTUP MOVDX CS8254 3 写控制字 8254控制寄存器地址0E204H 即T8254 3 MOVAL T0 CTLOUTDX AL MOVDX CS8254 写计数器0的计数值MOVAL T0 DATA 写低字节OUTDX AL MOVAL T0 DATA 1 写高字节OUTDX AL MOVDX CS8254 3 写8254控制字 8254控制寄存器地址0E204H 即T8254 3 MOVAL T1 CTLOUTDX AL MOVDX CS8254 1 写计数器1的计数值MOVAL T1 DATA 写低字节OUTDX AL MOVAL T1 DATA 1 写高字节OUTDX AL movdx CS8255 3 8255初始化 A入moval p ctloutdx al movdx cS8255 1 设方向初值moval dir dataoutdx al high level 若8255A口的PA1为 1 则转high level继续检测等待 直到高电平结束 或者说是扫描OUT1脉冲上升沿 判定时器输出的高电平周期movdx CS8255inal dxtestal 2jzlow level 若8255芯片的PA1为 1 说明OUT1输出的为高电平周期 若8255芯片的PA1为 0 说明OUT1输出为低电平周期 movah 0bh Ob功能调用 看有无键动 有键动 则AL 0FFH 无键动 则AL 00H int21h 目的 任意敲一键程序结束 oral aljnzdir endjmphigh level low level 若8255芯片的PA1为 0 则转low level继续检测等待 直到低电平结束 判定时器输出的低电平周期movdx CS8255inal dxtestal 2jnzdir ctlmovah 0bh Ob功能调用 看有无键动 有键动 则AL 0FFH 无键动 则AL 00H int21h 目的 任意敲一键程序结束 oral aljnzdir endjmplow leveldir ctl 测量出8255A口的PA1一个完整的周期moval dir data 交通灯方向控制单元数据取反 即改变方向notalmovdir data almovdx cs8255 1 送出新的红绿灯方向outdx almovah 0bh Ob功能调用 看有无键动 有键动 则AL 0FFH 无键动 则AL 00H int21h 目的 任意敲一键程序结束 oral aljnzdir endjmphigh level dir end EXITEND 实验九A D转换实验 一 实验目的学习模 数转换器使用方法 理解模 数转换原理 二 实验内容1 给A D转换器输入一可调节的电压信号 假设该输入信号为一水塔的水位高度信号 请结合应用8255A接口芯片 编程完成以下功能 当水位低于PL时开报警 并打开水泵 点亮一指示灯 水位在PL PH之间时关闭报警 水位高于PH时开报警 并关闭水泵 指示灯熄灭 设PH 0B4H 约3 5V PL 66H 约2 0V 2 用A D转换器对电压信号Vdc连续采集4次 求出均值 放入指定单元 并把采集均值转换为电压 通过8255在数码管上显示 三 实验电路及设计1 ADC0809引脚图 实验9 1电路示意图 PA7PA6PA5PA4PA3PA2PA1PA0 8255 ADC0809 IN7IN6IN5IN4IN3IN2IN1IN0 水塔 水泵开关 报警开关 CS8255 AD OE AD S PL 66h约2 0V PH 0B4h约3 5V 入口 出口 D busD7 D0 CPU 1 实验内容1 实验连线以下连线假设8255A的A口为输出方式 1 A D转换单元的AD S连接译码控制单元的AD S 0E228H 2 A D转换单元的AD OE连接译码控制单元的AD OE 0E228H 3 A D转换器的IN0输入端连接到直流电压单元的Vdc孔 直流电压单元的旋钮顺时针旋转Vdc输出电压增大 逆时针旋转输出电压减小 4 8255A的片选端CS8255连到译码控制单元的CS1 0E200H 0E203H 5 8255A的PA6连接到逻辑电平指示单元任意LED上 表示电机 6 8255A的PA7连接到逻辑电平指示单元任意LED上 表示报警 2 实验内容2 实验连线以下连线假设8255A的A口 B口均为输出方式 8255A的B口连接数码管的字划端 8255A的A口连接数码管的位选端 1 连线同 实验内容1 的 1 5 2 8255A的PB7 P

温馨提示

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

评论

0/150

提交评论