2014单片机实验报告
- 格式:doc
- 大小:421.50 KB
- 文档页数:11
计算机硬件技术基础实验报告二
班级_________姓名__________学号__________成绩_________
在Keil环境下运行以下程序,查看相关内存数据单元,并完成相应的题目。
1.编写程序,两位压缩的BCD码转换成相应的ASCII码
提示:算法1 ANL 拆字、ORL #30H 拼字
算法2 DIV 拆字、 ORL #30H 拼字
存储两位BCD数指压缩的BCD码占一个单元,相应的ASCII码占二个单元。
2.数据块传送程序:
(1)把内部RAM 40H~4FH置初值0A0H~0AFH;
(2)而后把40H~4FH内容传送到外部RAM 9800H~980FH中;
(3)再把 9800H~980FH内容传送到 50H~5FH中。
ORG 0000H
MAIN: MOV R0,#40H
MOV R2,#10H
MOV A,#0A0H
A1: MOV @R0, A
INC R0
INC A
DJNZ R2, A1; [1]解释本条命令含义(在程序中的作用)。
MOV R0, #40H
MOV DPTR, #9800H
MOV R2, #10H
A2: MOV A, @R0
MOVX @DPTR, A
INC R0
INC DPTR
DJNZ R2, A2; [2] 解释本条命令含义(在程序中的作用)。
MOV R0, #50H
MOV DPTR, #9800H
MOV R2, #10H
A3: MOVX A, @DPTR; [3]为什么使用MOVX指令。
MOV @R0, A
INC DPTR
INC R0
DJNZ R2, A3
SJMP $
END
3.多字节十进制加法:
加数放在30H开始的单元中(最低位放在30H,按从小到大的顺序存放),被加数和结果存放在20H开始的单元(最低位在20H中),字节数放在2FH中,最高进位位放在位地址7FH单元中。(需要提前在30H开始的存储单元中存入数据,2FH存储单元中的数据说明了相加的字节数。)
注意:在数据存储器指定的单元中存入数据的方法
方法一:在KEIL环境中,在右下角数据存储器中找到指定的单元,双击,在其中直接输入数据。
方法二:使用MOV为数据存储器指定的存储单元存入数据。
小心:不能使用DB或DW为数据存储器赋值。
DB和DW伪指令只能用于在程序存储器指定的单元中定义常数。
ORG 0000H
MAIN: MOV R0, #30H
MOV R1, #20H
MOV 2FH,#04H
CLR C
DA1: MOV A,@R0
ADDC A, @R1
DA A; [4] 解释本条命令含义(在程序中的作用)。
MOV @R1, A
INC R0
INC R1
DJNZ 2FH, DA1; [5] 解释本条命令含义(在程序中的作用)。
MOV 7FH, C
SJMP $
END
4.字节逻辑运算程序
在片内RAM 的FIRST 和SECOND 单元中各有一符号数X 和Y,要求按下列条件算出Z ,存入RESULT 单元中(设运算结果仍为8位数)。
注意:在程序运行前,首先在数据存储器30H 和31H 存储单元中存入数据,在32H 存储单元中读结果。可参考上一题在数据存储器中存入数据的方法。
FIRST EQU 30H
SECOND EQU 31H
RESULT EQU 32H
ORG 0000H
START :MOV R0,FIRST
MOV A , R0
JB ACC.7, NEG; [6] 解释本条命令含义(在程序中的作用)。 MOV B, #2
DIV AB
MOV A, B
JZ TEMP1; [7] 解释本条命令含义(在程序中的作用)。 MOV A,R0
ADD A, SECOND
SJMP RES
TEMP1: MOV A, R0
ANL A, SECOND
SJMP RES
NEG: CPL ACC.7
MOV B, #2
DIV AB
MOV A, B
JZ TEMP2; [8] 解释本条命令含义(在程序中的作用)。 MOV A, R0
ORL A, SECOND; [9] 解释本条命令作用。
SJMP RES
TEMP2: MOV A, R0
XRL A, SECOND
RES: MOV RESULT, A
SJMP $
END
Z=
5.位操作程序
布尔电路图如下:
注意:程序中00H,01H,02H,03H都是位地址,在片内数据存储器低128字节中的位寻址区中的20H单元中,分别对应20H.0, 20H.1, 20H.2, 20H.3 .
程序运行前需在X,Y,Z中存入数据,用来验证F的输入结果是否正确。即在20H.0, 20H.1, 20H.2,中存入数据,查看20H.3得到的结果是否正确,例如:X,Y,Z分别赋值为1、0、1, 20H 字节地址的其它位默认为0,则在右下角数据存储器20H字节地址中输入05(十六进制数),程序运行后,再次读取20H字节地址的内容,判断20H.3的值就是F对应的运算结果。
X BIT 00H
Y BIT 01H
Z BIT 02H
F BIT 03H
ORG 0000H
START: MOV C, Z
ANL C, /Y
MOV F, C
MOV C, Y
ANL C, /Z
ORL C, F
MOV F, C
MOV C, X
ANL C, Y
ORL C, /F
MOV F, C
SJMP $
END
[10]如果XYZ对应的值为1、1、0。经过运算后,20H字节的内容为______.
变量F的值为______.