




文档简介
计算机硬件技术基础实验教程答案 实验 简单程序设计实验 1 编写 个 32 位 符号数除法的程序 要求将存放在 NUM1 中的 32 位 符号数与存放 在 NUM2 中的 16 位 符号数相除 结果存放在 NUM3 和 NUM4 中 程序流程图略 参考源程序 DATA SEGMENT NUM1 DD 2A8B7654H NUM2 DW 5ABCH NUM3 DW NUM4 DW DATA ENDS CODE SEGMENT ASSUME DS DATA CS CODE START MOV AX DATA 数据段寄存器初始化 MOV DS AX MOV AX WORD PTR NUM1 MOV DX WORD PTR NUM1 2 DIV NUM2 MOV NUM3 AX MOV NUM4 DX MOV AH 4CH 正常返回DOS系统 INT 21H CODE ENDS END START 2 编写 个拆字程序 要求将存放在 ARY 单元的 2 位 六进制数 X1X2 拆为 X1 和 X2 两 部分 并以 0X1 和 0X2 的形式分别存入 ARY 1 和 ARY 2 单元中 程序流程图略 参考源程序 DATA SEGMENT ARY DB 2AH DATA ENDS CODE SEGMENT ASSUME DS DATA CS CODE START MOV AX DATA MOV DS AX MOV SI OFFSET ARY 取ARY的偏移地址 MOV AL SI 取16进制数 AL MOV BL AL AND AL 0F0H 取16进制数的 四位 即X1 SHR AL 4 MOV SI 1 AL 存0X1 MOV AL BL AND AL 0FH 取16进制数的低四位 即X2 MOV SI 2 AL 存0X2 MOV AH 4CH INT 21H CODE ENDS END START 实验 分 程序设计 实验 1 编写 个字符比较程序 比较 3 个 符号字节数 A B C 的 并根据比较结果 对变量 K 赋值 如果 3 个数不相等 则 K 0 如果 3 个数中有两个相等 则 K 1 如果 3 个数都相等 则 K 2 程序流程图略 参考源程序 DATA SEGMENT 定义待比较数A B C 比较结果K A DB 20H B DB 20H C DB 20H K DB DATA ENDS CODE SEGMENT ASSUME CS CODE DS DATA START MOV AX DATA MOV DS AX MOV AL A CMP AL B 对A B进 比较 不相等则转到COMP2 JNE COMP2 相等则比较A C CMP AL C JNE K1 A C不相等则K 1 JMP K2 A C相等则K 2 COMP2 MOV BL B CMP BL C JE K1 对B C进 比较 相等则K 1 CMP AL C JE K1 对A C进 比较 相等则K 1 K0 MOV K 0 JMP EXIT K1 MOV K 1 JMP EXIT K2 MOV K 2 EXIT MOV AH 4CH INT 21H CODE ENDS END START 2 编写 个能实现下列表达式的程序 N A B A B 设 A B C 为 于 128 的正整数 A B C 程序流程图略 参考源程序 DATA SEGMENT A B A DB 22H 定义 A B C N B DB 10H C DB 01H N DB DATA ENDS CODE SEGMENT ASSUME CS CODE DS DATA START MOV AX DATA MOV DS AX MOV AL A CMP AL B JG CALCUL A 于或等于 B 则 N A B ADD AL B JMP EXIT CALCUL SUB AL B ADC AL C EXIT MOV N AL MOV AH 4CH INT 21H CODE ENDS END START 实验三 循环程序设计 实验 1 将字符串STRN 以 结尾 中的每 个字符均加上偶校验位 并统计有多少个字符 因含有奇数个 1 加上了校验位 统计结果存 于N单元中 程序流程图略 参考源程序 DATA SEGMENT STRN DB What 任意定义 个字串 以 结尾 COUNT EQU STRN N DB BUF DB COUNT DUP DATA ENDS CODE SEGMENT ASSUME CS CODE DS DATA START MOV AX DATA MOV DS AX MOV AX DATA MOV ES AX LEA SI STRN LEA DI BUF MOV CX COUNT MOV AL 0 LP1 MOV BL SI 逐个取字符进 判断 AND BL BL 和 做与运算 JP NEXT 根据 PF 标志位的变化进 跳转 INC AL OR BL 80H NEXT MOV DI BL INC SI INC DI LOOP LP1 MOV N AL MOV AH 4CH INT 21H CODE ENDS END START 2 在 FIRST 开始的 片连续的数据区中存放着 100 个数据 编写 个程序 统计第 1 个数据 0 之前的数据个 数 程序流程图略 参 考源程序 DATA SEGMENT FIRST DB 10H 24H 34H 73H 20H 44H 03H 36H 41H 任取 9 个数做演 COUNT EQU FIRST NUM DB DATA ENDS CODE SEGMENT ASSUME CS CODE DS DATA START MOV AX DATA MOV DS AX MOV DL 0 计数值初始为 0 MOV CX COUNT MOV BX OFFSET FIRST LP1 MOV AL BX 每次取 个数 与 0 比较 CMP AL 00H JNE NEXT JMP EXIT 找到 0 则退出 NEXT INC DL 没找到 0 则计数值加 1 INC BX LOOP LP1 EXIT MOV NUM DL MOV AH 4CH INT 21H CODE ENDS END START 实验四 程序设计实验 将BUF开始的10个单元中两位 六进制数转换成ASCII码 并在屏幕 上显 出来 要求码型 转换通过 程序HEXASC实现 参数传送采 寄存器传送 式 程序流程图略 参考源程 序 1 实现 法 远过 程调 DATA SEGMENT BUF DB 10H 2FH 0D0H 0FEH 33H 0F0H 20H 10H 3DH 0A2H COUNT EQU BUF 定义任意 度的 段 BUF DATA ENDS STACK1 SEGMENT STACK DB 100 DUP 设置 够深度的栈区 STACK1 ENDS CODE SEGMENT ASSUME CS CODE DS DATA SS STACK1 START MOV AX DATA MOV DS AX MOV SI OFFSET BUF MOV CX COUNT AGAIN MOV AL SI 逐个取数 MOV BL AL SHR AL 4 AND AL 0FH 先对 字节部分转换 寄存器 AL 传参 CALL FAR PTR HEXASC 调 程序 MOV DL AL MOV AH 02H 显 字节部分对应的字符 INT 21H MOV AL BL AND AL 0FH 再对低字节部分转换 寄存器 AL 传参 CALL FAR PTR HEXASC 调 程序 MOV DL AL MOV AH 02H 显 低字节部分对应的字符 INT 21H MOV DL 20H MOV AH 02H 显 空格 INT 21H INC SI LOOP AGAIN MOV AH 4CH INT 21H CODE ENDS CODEB SEGMENT ASSUME CS CODEB HEXASC PROC FAR CMP AL 09H 判断是不是数字 JA HEXATOF 是字 则转到 HEXATOF ADD AL 30H 是数字则对应到数字的 ASCII 码 JMP ENDHEX HEXATOF ADD AL 37H 是字 则对应到字 的 ASCII 码 ENDHEX RET HEXASC ENDP CODEB ENDS END START 2 实现 法 近过程调 DATA SEGMENT BUF DB 10H 2FH 0D0H 0FEH 33H 0F0H 20H 10H 3DH 0A2H COUNT EQU BUF 定义任意 度的 段 BUF DATA ENDS STACK1 SEGMENT STACK DB 100 DUP 设置 够深度的栈区 STACK1 ENDS CODE SEGMENT ASSUME CS CODE DS DATA SS STACK1 START MOV AX DATA MOV DS AX MOV SI OFFSET BUF MOV CX COUNT AGAIN MOV AL SI 逐个取数 MOV BL AL SHR AL 4 AND AL 0FH 先对 字节部分做转换 CALL HEXASC MOV DL AL 显 字节部分对应的字符 MOV AH 02H INT 21H MOV AL BL AND AL 0FH 再对低字节部分做转换 CALL HEXASC MOV DL AL 显 低字节部分对应的字符 MOV AH 02H INT 21H MOV DL 20H 显 空格 MOV AH 02H INT 21H INC SI 继续循环或退出 LOOP AGAIN MOV AH 4CH INT 21H HEXASC PROC NEAR CMP AL 09H JA HEXATOF ADD AL 30H JMP ENDHEX HEXATOF ADD AL 37H ENDHEX RET HEXASC ENDP CODE ENDS END START 实验五 DOS 中断调 实验 1 如果从键盘上依次输入的是 个数字和 个字 则输 出 RIGHT 标记后结束程序 否则输出标记 ERROR 后转向原出错 处重做 试编程实现该功能 程序流程图略 参考源程序 DATA SEGMENT MSG DB 0AH 0DH RIGHT 0AH 0DH WRN DB 0AH 0DH ERROR 0AH 0DH DATA ENDS CODE SEGMENT ASSUME CS CODE DS DATA START MOV AX DATA MOV DS AX AGAIN MOV AH 01H 等待 户输入 1 个字符并显 INT 21H CMP AL 39H JA EMSG CMP AL 30H JB EMSG 判断输入是否是数字 不是则报错 MOV AH 01H 等待 户输入 1 个字符并显 INT 21H CMP AL A JB EMSG CMP AL Z 判断输入是否是 写字 不是则继续 JB EXIT 判断是不是 写字 CMP AL a JB EMSG CMP AL z JB EXIT 不是字 则报错 是字 则转到 EXIT EMSG LEA DX WRN MOV AH 09H INT 21H JMP AGAIN EXIT MOV DX OFFSET MSG MOV AH 09H 显 RIGHT 并退出 INT 21H MOV AH 4CH INT 21H CODE ENDS END START 2 编写 程序分类统计字符个数 即接收键入的 串字符 字符个 数不超过50个 该字 符串 回 作为结束 并按数字 字 和其它 字符分类计数 然后将结果存入digit letter 和other 3个存储单元中 并显 结果 程序流程图略 参考源程序 DATA SEGMENT MSG1 DB 0AH 0DH Number of digit 20H MSG2 DB 0AH 0DH Number of letters 20H MSG3 DB 0AH 0DH Number of other characters 20H BUF DB 50 DB 0 DB 50 DUP 设置 够深的栈区 DIGIT DB LETTER DB OTHER DB DATA ENDS STACK1 SEGMENT STACK DB 100 DUP STACK1 ENDS CODE SEGMENT ASSUME CS CODE DS DATA SS STACK1 START MOV AX DATA MOV DS AX MOV AH 0AH 等待 户输入字符串并显 MOV DX OFFSET BUF INT 21H MOV SI OFFSET BUF MOV CL SI 1 MOV CH 00H MOV AL 00H MOV AH 00H MOV BH 00H AGAIN MOV BL SI 2 CMP BL 30H JB OTH ASCII 码 于 30H 则归类为 其它 CMP BL 3AH JB DIG ASCII 码 于等于 30H 于 3AH 则归类为 数字 CMP BL 41H JB OTH ASCII 码 于等于 3AH 于 41H 则归类为 其它 CMP BL 5BH JB LET ASCII 码 于等于 41H 于 5BH 则归类为 字 CMP BL 61H JB OTH ASCII 码 于等于 5BH 于 61H 则归类为 其它 CMP BL 7BH JB LET ASCII 码 于等于 61H 于 7BH 则归类为 字 OTH INC AL 其它 计数 器加 1 DIG JMP ENDLP INC AH 数字 计数 器加 1 LET JMP ENDLP INC BH 字 计数 器加 1 ENDLP INC SI LOOP AGAIN 继续循环 MOV DIGIT AH 统计各类个数 MOV LETTER BH MOV OTHER AL MOV DX OFFSET MSG1 MOV 显 数字 有 多少个 AH 09H INT 21H MOV AL DIGIT CALL DISP MOV DX OFFSET MSG2 MOV AH 09H INT 21H MOV AL LETTER CALL DISP 显 字 有 多少个 MOV DX OFFSET MSG3 MOV AH 09H INT 21H MOV AL OTHER CALL DISP 显 其它 有 多少个 MOV AH 4CH INT 21H DISP PROC NEAR 显 程序 MOV AH 00H MOV DH 0AH DIV DH MOV CH AH ADD AL 30H MOV DL AL MOV AH 02H INT 21H ADD CH 30H MOV DL CH MOV AH 02H INT 21H RET DISP ENDP CODE ENDS END START 实验六 扩展定时器 计数器接 实验 1 计数器0 作于 式3 编写初始化程序 观察其输出OUT0信号 的波形 修改计数初 值 观察OUT0信号的变化情况 硬件连接 法 8254计数器0的CLK0端接规则的脉冲输入 频率 选 OUT0接 波器的 正极 波器负极接地 程序流程图略 参考源程序 DATA SEGMENT DB 100 DUP DATA ENDS CODE SEGMENT ASSUME CS CODE DS DATA START MOV AX DATA MOV DS AX MOV DX 20FH 写入计数器0的控制字 MOV AL 00010110B OUT DX AL MOV DX 20CH 写入计数器0的计数初值 MOV AL 05H OUT DX AL MOV AH 4CH INT 21H CODE ENDS END START 2 将计数器1和计数器0级联起来 者均 作于 式3 编写初始 化程序 观察OUT1 和OUT0信号的波形 说明 者的关系 修改计 数初值 观察OUT0和OUT1输出波形的变 化情况 硬件连接 法 8254计数器1的CLK1端接规则的脉冲输入 频率 选 OUT1接 8254计数 器0的CLK0 计数器0的输出OUT0接 波器正极 波器负 极接地 程序流程图略 参考源程序 DATA SEGMENT DB 100 DUP DATA ENDS CODE SEGMENT ASSUME CS CODE DS DATA START MOV AX DATA MOV DS AX MOV DX 20FH MOV AL 00010110B 写入计数器0的控制字 OUT DX AL MOV DX 20CH 写入计数器0的计数初值 MOV AL 05H OUT DX AL MOV DX 20FH MOV AL 01010110B 写入计数器1的控制字 OUT DX AL MOV DX 20DH 写入计数器1的计数初值 MOV AL 02H OUT DX AL MOV AH 4CH INT 21H CODE ENDS END START 实验七 并 输入 输出接 8255A 简单编 程实验 1 利 8255A 的 B 输出控制两组发光 级管 L1 L3 L5 L7 和 L2 L4 L6 L8 亮灭交替变 化 分析 按照题 要求 当 8255A 的 B 输出为 01010101B 55H 时 发光 极管 L1 L3 L5 L7 会被点亮 当 8255A 的 B 输出为 10101010B 0AAH 时 发光 极管 L2 L4 L6 L8 会被点 亮 因此 通过延时改变 8255A 的 B 输出 即可实现两组发光 极管的亮灭交替变化 由于 LED 随时出于准备好的状态 因此 8255A 的 B 可 作于 式 0 输 出 其它端 未使 需考虑 因此 8255A 的 式控制字 为 10000000B 80H 硬件连接 法 8255A 的 B PB0 PB7 分别连接 L1 L8 程序流程图略 参考源程序 486 DATA SEGMENT PORTA DW 208H 8255A端 A地 址 PORTB DW 209H 8255A端 B地址 PORTC DW 20AH 8255A 端 C地址 PORT CTR DW 20BH 8255A控制端 地址 DATA ENDS STACK1 SEGMENT STACK DB 100 DUP STACK1 ENDS CODE SEGMENT ASSUME CS CODE DS DATA SS STACK1 START MOV AX DATA MOV DS AX MOV DX PORT CTR MOV AL 10000000B 8255A初始化 控制字 OUT DX AL MOV DX PORTB MOV AL 00H OUT DX AL 8255A端 B清零 LED 初始化 全灭 LP0 MOV BL 01010101B MOV AL BL OUT DX AL CALL DELAY NOT AL MOV BL AL MOV AH 01H 调 BIOS的16H功能判断键盘是否有输入 INT 16H JNZ EXIT JMP LP0 EXIT MOV AH 4CH INT 21H DELAY PROC NEAR 延时 程序 可通过修改NOP指令数 量改变延时时间 MOV ECX 0FFFFFFFH LP2 NOP LOOPD LP2 RET DELAY ENDP CODE ENDS END START 2 利 8255A 的 A 读入 8 个开关 K1 K8 的状态 当只有 K1 合上时 L1 L8 显 00000001B 当只有 K1 和 K2 合上时 L1 L8 显 00000010B 当只 有 K1 K2 和 K3 合上 时 L1 L8 显 00000011B 当只有 K1 K2 K3 和 K4 合上时 L1 L8 显 00000100B 直到所有开关合上 时 L1 L8 显 00001000B 并结束程序的运 发光 极管的状态 通 过 8255A 的 B 进 控制 分析 按照题 要求 可以通过查询的 式读取 8255A 的 B 状态 并 根据查询的结果给 A 送出相应数据 A 作在 式 0 的输入状 态 B 作在 式 0 输出状态 C 不需要 考虑 所以 8255A 的 式控制字为 10010000B 硬件连接 法 1 8255A 的 A PA0 PA7 对应连接 K1 K8 2 8255A 的 B PB0 PB7 对应连接 L1 L8 源代码 DATA SEGMENT LIST DB 01H 03H 07H 0FH 1FH 3FH 7FH 0FFH DATA ENDS STACK1 SEGMENT STACK DB 100 DUP STACK1 ENDS CODE SEGMENT ASSUME CS CODE DS DATA SS STACK1 START MOV AX DATA MOV DS AX MOV DX 20BH 8255A初始化 MOV AL 10010000B OUT DX AL MOV DX 209H 8255A的B 清零 LED初 始化 全灭 MOV AL 00H OUT DX AL L0 MOV DX 208H 读8255A的A 获得开关状态 IN AL DX MOV BL 00H MOV CX 8 MOV SI OFFSET LIST L1 INC BL CMP AL SI JZ FIND INC SI LOOP L1 JMP L0 FIND MOV AL BL MOV DX 209H 当前开关状态为表中所 列状态之 显 LED状态 OUT DX AL CMP AL 08H JNZ L0 MOV AH 4CH INT 21H CODE ENDS END START 实验八 并 输入 输出接 8255A 综合应 实验 1 利 8254计数器0 计数器1和8255A的B 实现对发光 极管的 定时控制 让8个发光 极管每隔1s从左到右依次点亮 要求计数 器1的时钟脉冲频率为250kHz 分析 根据题 要求 需要利 8254进 定时1s控制 定时到后 改 变8255A的B 输出 可 以利 中断的 式实现 8254定时到时向CPU申请中断 CPU相应中 断后在中断程序中改变 8255A的B 输出 由于题 要求8254的输入脉冲频率为250kHz 所 以需要级联计数器1和计数器0实现1s 定时 参考程序中利 计数器1进 20ms定时 计数器0进 50次计数 计数次数到时由OUT0 向CPU申请中断 8255A的B 控制LED 可 作在 式0输出 A 未使 为了选通实 验板上的中断输入C 的 PC7须输出低电平 因此C 的 四位 作在 式0输出 综合上述 要 求 8254和8255A的初始化参数为 8254计数器1的计数初值为 N 20ms 4 s 5000D 式控制字 为 01110100B 74H 8254计数器0的计数初值为 N 50D 式控制字为 00010100B 14H 8255A的 式控制字 10000000B 80H C 按位置位 复位 控制字 00001110B 0EH 使PC7复位 允许8254的OUT0中断到达系 统8259的IRQ3端 此外 利 中断 式实现题 要求的功能还需要设置系统8259芯片 的中断屏蔽字和系统 存储器中的中断向量表 修改中断类型号为0BH 的中断向量 硬件连接 法 1 250kHz脉冲输出接8254的CLK1 OUT1接 CLK0 OUT0接IRQ 2 8255A的B PB0 PB7对应连接 L1 L8 程序流程图略 参考源程序 DATASEGMENT PORT0 DW 20CH 8254计数器0端 地 址 PORT1 DW 20DH 8254计数器1端 地 址 PORT2 DW 20EH 8254计数器2端 地 址 PORT3 DW 20FH 8254控制寄存器端 地址 PORTA DW 208H 8255A的A 端 地 址 PORTB DW 209H 8255A的B 端 地 址 PORTC DW 20AH 8255A的C 端 地 址 DATA PORT CTR DW 20BH ENDS 8255A的控制寄存 器端 地址 STACK1 SEGMENT STACK DB 100 DUP 0 STACK1 ENDS CODE SEGMENT ASSUME CS CODE DS DATA ES DATA SS STACK1 START MOV AX DATA MOV DS AX MOV ES AX MOV AL 80H 8255初始化 B 式0输出 C 4位输出 MOV DX PORT CTR OUT DX AL MOV AL 0EH PC7清零 允许8254中断到IRQ3 OUT DX AL MOV AL 00H 发光 极管初始化 全灭 MOV DX PORTB OUT DX AL MOV AX 350BH 保存系统原有0BH号中断的中断向量 堆栈 INT 21H PUSH ES PUSH BX MOV AX SEG INTPROC MOV DS AX MOV DX OFFSET INTPROC MOV AX 250BH 将程序要求的中断向量写入 INT 21H IN AL 21H 设置8259的IMR寄存器 允许IRQ3中断 AND AL 0F7H OUT 21H AL STI 开中断 CPU可以响应外部可屏蔽中断 MOV DX PORT3 8254计数器0初始化 MOV AL 14H OUT DX AL MOV DX PORT0 计数器0写入计数初值50D MOV AL 50D OUT DX AL MOV DX PORT3 8254计数器1初始化 MOV AL 74H OUT DX AL MOV DX PORT1 计数器1写入计数初值5000D MOV AX 5000D OUT DX AL MOV AL AH OUT DX AL MOV BH 80H BH存放当前8255A的B 输出 MOV AL BH MOV DX PORTB 8255A的B 输出 OUT DX AL WAIT0 NOP NOP NOP MOV AH 01H 判断键盘上是否有键按下 若有则结束程序 INT 16H JNZ EXIT JMP WAIT0 EXIT POP DX 恢复中断向量表中的原有0BH号中断向量 POP DS MOV AX 250BH INT 21H MOV AH 4CH INT 21H INTPROC PROC NEAR MOV AL BH ROR AL 1 MOV BH AL MOV DX PORTB 向8255A的B 写出数据 点亮对应LED OUT DX AL MOV AL 20H 向8259发出中断结束命令 OUT 20H AL IRET INTPROC ENDP CODE ENDS END START 2 8255A的A 与8个开关相连 作于 式1下 要求 利 当前 的开关状态通过B 控 制L1 L8的亮或灭 A 的 STBA选通信号由按 键K发出 每按 次K键 读入当前开关状态 分析 8255A的B 来控制LED的亮灭 可 作在 式0下 根据题 意 可以通过查询 式不断读取8255A的C 状态确定K键是否按 下 也可以利 中断 式 当K键按下时 由INTRA PC3 向CPU申请中断 当判 断K键按下后 读取 8255A的A 状态 并通过B 显 到LED上 利 查询 式实现 时 仅需要给定 式选择 控制字 利 中断 式实现时 除控制字 外还需设定INTEA为1 允许INTRA申请中断 因此 8255A的 式控制字为 10110000B 0B0H 使 INTEA PC4 置1 其控制字为 00001001B 09H 注意 利 中断 式实现时还需要置PC7为0 使INTRA能到达8259 的IRQ3 硬件连接与参考源程序 1 利 查询 式实 现 硬件连接 1 8255A的A PA0 PA7与K1 K8对应相连 2 8255A的B PB0 PB7与L1 L8对应相连 3 按键K接8255A的C PC4 参考源程序 CODE SEGMENT ASSUME CS CODE START MOV AL 0B0H 8255A初始化 式控制字10110000B MOV DX 20BH OUT DX AL MOV DX 209H LED初始化 MOV AL 00H OUT DX AL AGAIN MOV AH 01H 判断计算机键盘上是否有键按下 若有 结束程序 INT 16H JNZ EXIT MOV DX 20AH 读入8255A的C 状态 IN AL DX TEST AL 00010000B 判断PC4 1 K键 是否按下 JNZ AGAIN MOV DX 208H 读入8255A的A 状态 IN AL DX MOV DX 209H 将A 状态送8255A的B OUT DX AL JMP AGAIN EXIT MOV AH 4CH INT 21H CODE ENDS END START 2 利 中断 式实 现 硬件连接 1 8255A的A PA0 PA7与K1 K8对应相连 2 8255A的B PB0 PB7与L1 L8对应相连 3 按键K接8255A的C PC4 4 8255A的C PC3 INTRA 接 IRQ 参考源程序 DATA SEGMENT PORTA DW 208H 8255A的A 地址 PORTB DW 209H 8255A的B 地址 PORTC DW 20AH 8255A的C 地址 DATA PORT CTR DW 20BH ENDS 8255A的控制 地址 STACK1 SEGMENT STACK DB 100 DUP 0 STACK1 ENDS CODE SEGMENT ASSUME CS CODE DS DATA ES DATA SS STACK1 START MOV AX DATA MOV DS AX MOV ES AX MOV DX PORT CTR 写入8255A 式控制 字0B0H MOV AL 0B0H OUT DX AL MOV AL 09H 写入C 按位置位控制字 PC4置 1 OUT DX AL MOV AL 0EH 写入C 按位复位控制字 PC7置 0 开IRQ OUT DX AL MOV AX 350BH 保存系统原有中断号为0BH的中断向量到堆 栈 INT 21H PUSH ES PUSH BX MOV AX SEG INTPROC 向0BH号中断写入新的中断向量 MOV DS AX MOV DX OFFSET INTPROC MOV AX 250BH INT 21H IN AL 21H 允许8259的IRQ3中断 AND AL 0F7H OUT 21H AL STI 允许CPU响应可屏蔽中断 WAIT0 MOV AH 01H 判断是否有键按下 若有则结束程序 若 则等待 INT 16H JZ WAIT0 POP DX 恢复系统中断向量表 POP DS MOV AX 250BH INT 21H MOV AH 4CH INT 21H INTPROC PROC NEAR MOV DX PORTA 读入8255A端 A的状态 开关状态 IN AL DX MOV DX PORTB 从8255A的B 输出开关状态 由对应的 LED显 OUT DX AL MOV AL 20H 给8259发中断结束指令 OUT 20H AL IRET INTPROC ENDP CODE ENDS END START 实验九 LED 显 器接 实验 1 编制 个从左到右循环显 字符 8 的程序 要求每个字位的停 留时间约为1s 当从标 准键盘上按下任意键时结束程序 分析 根据题意要求 实验板上的6位8段数码管的段选信号均相同 为字符 8 的段码 80H 为了实现从左到右循环显 且每个字位停留约1s的功能 只需要每隔 秒给位选信号赋值 选通 断开相应的位即可 当循环显 到最右 端时 延时1s再从最左端开始显 为 此 在 该题中我们利 8255A 的A 作为6位LED显 器的段选 地址208H 8255A的B 作为6 位LED显 器的位选 地址209H 8255A的控制字 为 10000000B 80H 硬件连接 1 8255A的A PA0 PA7分别对应连接LED显 器 的段选输入a h 2 8255A的B PB0 PB5分别对应连接LED1 LED6显 器的位选输入 程序流程图略 参考源程序 486 STACK1 SEGMENT STACK DB 100 DUP 0 STACK1 ENDS CODE SEGMENT ASSUME CS CODE SS STACK1 START MOV AL 80H 8255A 作 式初始化 A 式0输 出 B 式0输出 MOV DX 20BH OUT DX AL MOV AL 80H 8255A的A 输出字符 8 的段 码80H MOV DX 208H OUT DX AL L1 MOV BL 20H LED显 器位选信号存放在BL中 20H表 最左边 位 L2 MOV AL BL 将LED位选信号输出到8255A的 B MOV DX 209H OUT DX AL CALL DELAY 调研软件延时程序 MOV AH 01H 判断标准键盘上是否有键按下 若有则结束程 序 INT 16H JNZ EXIT SHR BL 1 LED位选信号右移 位 选中下 位LED JNZ L2 JMP L1 当循环到最右边 位LED时 重新填充BL值 开始 新 轮循环 EXIT MOV DX 208H MOV AL 0FFH OUT DX AL MOV DX 209H MOV AL 00H OUT DX AL 关闭所有LED MOV AH 4CH INT 21H DELAY PROC NEAR MOV ECX 0FFFFFFFH LP LOOPD LP RET DELAY ENDP CODE ENDS END START 2 完成多位LED显 器的显 即设计 个显 字符串1234 56的 程序 当标准键盘上有 任意键按下时结束程序 基本思想 借助动态扫描 分时显 的办法 利 眼视觉的滞留效 应 实现 眼看上去的各位 同 时 显 分 析 利 实验操作 板上引出的8255A的分别A 和B 作为6位8段 LED显 器的位选 和 段选 从段选 依次输出待显 字符的段 码 并选通相应的位实现对多位LED显 器的刷 新 8255A的A 和B 均 作在 式0的输出 式 式控制字为 1000000B 80H 硬件连接 1 8255A的A PA0 PA5对应连接LED1 LED6的位选 2 8255A的B PB0 PB7对应连接段 选a h 程序流程图略 参考源程序 DATA SEGMENT SEGTAB DB 0C0H 0F9H 0A4H 0B0H 定义0 F的段码存储 区 DB 99H 92H 82H 0F8H DB 80H 98H 88H 83H DB 0C6H 0A1H 86H 8EH DISPMEM DB 01H 02H 03H 04H 05H 06H 定义显 缓冲区 DATA ENDS STACK1 SEGMENT STACK DB 100 DUP 0 STACK1 ENDS CODE SEGMENT ASSUME CS CODE DS DATA SS STACK1 START MOV AX DATA MOV DS AX MOV AL 80H 8255A初始化 A 输出 B 输出 MOV DX 20BH OUT DX AL L1 MOV AH 20H 预置位选信号 LEA SI DISPMEM SI指向显 缓冲区 LEA BX SEGTAB BX指向段码存储区 L2 MOV AL SI XLAT CMP AH 04H JNE NEXT AND AL 7FH 第4位LED显 数点 NEXT MOV DX 209H 输出段码 OUT DX AL MOV DX 208H 输出位选信号 MOV AL AH OUT DX AL MOV CX 4000 延时 LP2 LOOP LP2 PUSH AX MOV AH 01H 判断标准键盘上是否有键按下 若有键按下则 结束程序 INT 16H JNZ EXIT POP AX INC SI 修改显 缓冲区指针 SHR AH 1 修改位选信号 JNZ L2 JMP L1 EXIT MOV DX 208H MOV AL 00H OUT DX AL MOV DX 209H MOV AL 0FFH OUT DX AL 关闭所有LED MOV AH 4CH INT 21H CODE ENDS END START 实验 键盘接 实验 编制1个 键盘控制模拟电动机转动的程序 即 非编码键盘上的A和B 两个键作转 停控制 并在数码显 器上显 F表 电机转动 计算机 屏幕上显 笑脸符表 电机停 按回 键结 束程序执 笑脸符的 ASCII码为02H 分析 根据题 的要求 需要不断扫描4 4非编码键盘 判断键盘 上A或B键 控制停转 在屏 幕上显 笑脸 是否按下 若按下A键则在LED上显 F 表 电机转 动 若按下B键则在计 算机屏幕 CRT显 器 上显 笑脸 表 电 机停转 可以 8255A的C 作为非编码键盘的 扫描信号 同时作为LED 的位选信号 B 作为 非编码键盘的列扫描信号 A 作为LED的段 选信号 8255A的C 作在输出 式 B 作在输入 式 A 作在输出 式 8255A的 式控制字为 10000010B 82H 硬件连 接 1 8255A的A 的PA0 PA7接段选信号a f 2 8255A的B 的PB0 PB3接非编码键盘的列扫描端 J9 3 8255A的C 的PC0 PC5接LED的位选信号 同时也是非编 码键盘的 扫描线 程序流程图略 参考源程序 DATA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人教版八年级英语上册单元同步知识点与语法训练 unit5 section B
- 儿童创伤急救核心要点:早期处理的专业路径
- 暑假培优练:连接体模型(学生版)-2025高一物理暑假专项提升(人教版)
- 重卡销售培训知识点总结课件
- 统编版小升初语文专项复习:修改病句(有解析)
- 外研版必修一~必修三词汇(专项训练)解析版
- 老年人养老课件
- 配餐技能培训知识课件
- 老干部业务知识培训课件
- CN120200358A 充放电状态切换控制方法及相关装置
- 移动机器人原理与技术 课件 第1、2章 绪论、移动机器人运动控制系统
- 教师师德师风的培训
- 网约车全国公共科目考试题库与答案(一)
- 优先使用国家基本药物培训
- Unit+2+Topic+2++All+these+problems+are+very+serious作业设计 仁爱版英语九年级上册
- 《人工智能基础第2版》全套教学课件
- DBJ15 31-2016建筑地基基础设计规范(广东省标准)
- 家庭纠纷房产调解协议书
- 新疆大学机械设计基础
- 第2课《树立科学的世界观》第2框《用科学世界观指导人生发展》-【中职专用】《哲学与人生》同步课堂课件
- 消防材料分类明细表
评论
0/150
提交评论