四、实验过程
本实验主要应用与语句ANL对高四位进行屏蔽,利用SWAP语句将2000H低四位交换到高四位,再用或ORL语句将2000H和2001H的高低四位组合在一起送入2002H中,从而实现两个数低四位组合。
五、实验结果及分析
拼字前 拼字后
问题回答:本实验运行程序后2002h的最终内容是45H,即2000H单元中低四位“4”作为2002H的高四位,2001H的低四位“5”作为2002H的低四位。
六、实验源程序
ORG 0000H AJMP S03 ORG 0680H S03: MOV DPTR, #2000H MOVX A, @DPTR ANL A, #0FH SWAP A MOV B, A INC DPTR MOVX A, @DPTR ANL A, #0FH ORL A, B INC DPTR MOVX @DPTR, A END
-4-
实验四 数据区传送子程序
一、实验目的
掌握RAM中的数据操作。
二、实验内容
把R2、R3源RAM区首址内的R6、R7字节数据传送到R4、R5目的RAM区。
三、程序框图
四、实验过程
实验要求将一段内存中数据移动到另一段内存中,本次实验通过寄存器内容截图显示,是把0000H单元开始FFH个字节的内容送到3000H开始的连续数据单元中。先把初始地址分别放入源地址寄存器和目的地址寄存器,然后利用一组寄存器作为需转移数据区长度计数器,开始数据转移循环。每进行一次转移地址寄存器向下加一,计数寄存器内容减一,计数寄存器内容为0退出循环移动结束。由于计数以及地址寄存器是由两个八位寄存器组成,需要在加一减一时对其高字节和低字节进行判断。加一时若低字节加一变为0,则高字节加一,否则低字节加一高字节不变。减一时若低字节已是0则高字节减一,同时低字节变为0FFH,否则低字节减一高字节不变。
五、实验结果及分析
源内存段中内容 目的内存段中移动前内容
-5-
目的内存段中移动后内容
问题回答:R4、R5所定义的目的地址单元内容在转移之前为随机数,转移后内容与以R2、R3开始的的源地址单元中256个字节内容相同,即实现了数据的传送。
六、实验源程序
ORG 0000H AJMP S04 ORG 07B0H S04: MOV R3, #00H MOV R2, #00H MOV R4, #30H MOV R5, #00H MOV R6, #01H MOV R7, #00H LOOP: MOV DPL, R3 MOV DPH, R2 MOVX A, @DPTR MOV DPL, R5 MOV DPH, R4 MOVX @DPTR, A CLR C MOV A, R3 ADD A, #01H MOV R3, A MOV A, R2 ADDC A, #00H MOV R2, A
-6-
CLR C MOV A, R5 ADD A, #01H MOV R5, A MOV A, R4 ADDC A, #00H MOV R4, A DJNZ R7, LOOP DJNZ R6, LOOP SJMP $ END
实验六 查找相同数个数
一、实验目的
熟悉汇编语言编程。
二、实验内容
在2000~200Fh中查出有几个字节是零,把个数放在2100h中。
三、程序框图
四、实验过程
实验中利用R0放置需查找段长度,即从2000H单元开始,每次检查完一个单元R0减一,指针下移,直到R0等于0结束循环。R1存放等于零数据的个数,程序中利用等于零跳转指令JZ,实现找到0则R1加一计数的功能。循环终止后,将R1内容存入2100H中即可。
五、实验结果及分析
-7-