当前位置:首页 > MCS51 单片机实验指导书
━━━━━━━━━┳━━━━━━━━━━━━━┯━━━━━━━━━━━━
3000H单元输入值 ┃ 12 54 83 97 60 │ ━━━━━━━━━╋━━━━━━━━━━━━━┿━━━━━━━━━━━━ 3001H单元输出值 ┃ │ ━━━━━━━━━╋━━━━━━━━━━━━━┿━━━━━━━━━━━━ 3002H单元输出值 ┃ │ ━━━━━━━━━┻━━━━━━━━━━━━━┷━━━━━━━━━━━━
⑶ 该程序是否能完成两位十六进制数的分解? 输入数据,执行程序,记录结果。
3. 把需要转换成 BCD 码的 8 位二进制数存放在片外 RAM 3000H 单元中,转换后的BCD 码从高位到低位分别存放在 R6 和 R5 中。 参考程序3: 单字节二进制数转换成用 BCD 码表示的数。 ORG 1260H 1260 BTOBCD: MOV DPTR,#3000H 12 MOVX A,@DPTR
12 MOV B,#100
12 DIV AB ;除100
12 MOV R6,A ;存放百位数 12 MOV A,#10
12 XCH A,B 12 DIV AB ;余数除10,A中为十位数 12 SWAP A ;把十位数移到高4位 12 ADD A,B ;把B中的个位数放低4位 12 MOV R5,A ;存放十位数和个位数 12 NOP 12 NOP 12 NOP
12 LOOP: SJMP LOOP
⑴ 完成人工汇编后,再把程序的机器码输入到实验系统中。
⑵ 按下表要求分别用键盘向片外RAM 3000H单元输入用 8 位二进制数,分别执行该程序后作记录。 ━━━━━━━━━┳━━━━━━━━━━━━━━ 3000H单元输入值 ┃ 7FH FFH 64H 80H 40H ━━━━━━━━━╋━━━━━━━━━━━━━━ R6输出值 ┃ ━━━━━━━━━╋━━━━━━━━━━━━━━ R5输出值 ┃ ━━━━━━━━━┻━━━━━━━━━━━━━━
4. 自编程序: 请自编一个两字节无符号数加法程序。 要求:被加数存放在片内 RAM 的 60H、61H 单元中,加数存放在 62H 和 63H 单元中,计算结果存放在 62H、63H 和 64H 单元中。
⑴ 按要求编写好源程序,并完成人工汇编和分配好存储单元地址:
- 17 -
ORG 1280H
1280 SUM:
END
⑵ 手工输入该程序的机器码,在输入后还需仔细地检查,确认输入无误。 ⑶ 用键盘在指定单元输入不同的被加数和加数;分别执行程序并记录执行结果。
━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━ 被加数(61H和60H) ┃ 00A8H 5623H FD4AH 86E5H ━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━ 加数(63H和62H) ┃ 007BH 432DH E30FH 7F80H ━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━ 和(64H,63H和62H) ┃ ━━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━
四、 实验报告内容
1. 在实验指导教师验核实验结果数据记录并认可后,才能算完成实验。 2. 附上自编程序的源程序和目标程序的清单。
3. 谈一谈在实验过程中所遇到的问题和解决办法以及心得体会。
- 18 -
实验三 一般程序设计(二):分支程序
一、 实验目的
1. 通过分支程序的设计,学会合理使用分支的条件。
2. 掌握多分支程序的编写方法;通过多分支程序的设计,了解键盘功能程序的实现原理。
3. 学会相对转移指令中偏移量的计算方法。 3. 学会绝对转移指令指令代码形成的方法。
4. 掌握程序调试的手段和基本方法。
二、 实验前的准备工作 1. 读懂给出的程序。
2. 补充未完成的代真机器码。
3. 根据要求修改给出的程序,并完成机器码代真。
三、 相对转移指令中偏移量的计算方法
在 MCS-51 指令系统的相对转移指令的操作码后面,紧跟一个字节的偏移量,它用 8 位带符号数的对 2 的补码来表示,其范围是(80H~7FH),即十进制的(-128~+127)。
若现行PC中是该相对转移指令操作码的地址,而希望转移的目标地址为D,因为实际上只有在该相对转移指令执行后,才能获得指令中给出的偏移量,所以这时PC中存放的是该相对转移指令下一条指令操作码存放单元的地址,即在原PC存放地址的基础上加上该相对转移指令的字节数2或3。若以2字节指令为例,则 D = [(PC)+2] + 偏移量 所以 偏移量=D - [(PC)+ 2]
- 19 -
例如
┃ ┃
┣━━━━━━━┫ (PC)=224CH, D=2230H ┏━→ 2230H┃ × × ┃
┃ ┣━━━━━━━┫ 偏移量= 2230H - (224CH + 2) ┃ ┃ × × ┃ = E2H ┃ ┣━━━━━━━┫
┃ ┃ · ┃ 当偏移量大于等于 80H 时,表示转移方 ┃ ┃ · ┃ 向为负向转移,即向上转移(向小地址方向 ┃ ┃ · ┃ 转移)。 ┃ ┣━━━━━━━┫ ┗━━ 224CH┃转移指令操作码┃ ┣━━━━━━━┫ ┃ 偏 移 量 ┃ ┣━━━━━━━┫
┣━━━━━━━┫ (PC)=224CH, D=2258H ┏━━ 224CH ┃转移指令操作码┃ ┃ ┣━━━━━━━┫ 偏移量= 2258H - (224CH + 2) ┃ ┃ 偏 移 量 ┃ = 0AH ┃ ┣━━━━━━━┫ ┃ ┃ · ┃ 当偏移量小于等于 7FH 时,表示转移方 ┃ ┃ · ┃ 向为正向转移,即向下转移(向大地址方向 ┃ ┃ · ┃ 转移)。 ┃ ┣━━━━━━━┫ ┗━→ 2258H ┃ × × ┃ ┣━━━━━━━┫ ┃ × × ┃ ┣━━━━━━━┫
四、 实验内容和步骤 1. 简单分支程序 要求:自编一个简单分支程序,在片内 RAM 的两个存储单元 60H 和 61H中存放两个无符号数,将其中的一个大数存放到 62H 存储单元。
⑴ 按要求编写好源程序,并完成人工汇编和分配好存储单元地址: ORG 2300H ONE EQU 60H TWO EQU 61H MAX EQU 62H
2300
END
⑵ 手工输入该程序的机器码,在输入后还需仔细地检查,确认输入无误。 ⑶ 用键盘在指定单元分别输入 2 个不等的无符号数,执行程序并记录执行结果。
- 20 -
共分享92篇相关文档