数据传送类指令是程序设计中使用最多的一类指令,正确灵活地应用它们,是保证程序设计质量的重要环节。下面通过例题说明使用这类指令的方法和技巧。
例3-1 把01H单元内容送02H单元,编程实现。
想一想:还有哪些方法可以实现?
例3-2 改正下列指令中的错误,保证指令功能不变。
分析:从片外把数据传送到片内或者把片内数据传送到片外都不能直接传送,必须通过累加器A。若片内地址单元是特殊功能寄存器的地址,不能采用间接寻址方式。因此可作如下修改:
例3-3 设(70H)=60H,(60H)=20H,(P1)=0B7H,分析执行下列程序后的结果。
结果为(70H)=0B7H,(A)=20H,(R1)=60H,(R0)=70H。
例3-4 将片外2500H单元中的内容压入堆栈后弹出到片内40H单元。
视频:堆栈指令综合调试
参考程序如下:
例3-5 已知外部RAM 2020H单元中有一个数x,内部RAM20H单元有一个数y,试编程使它们互相交换。
参考程序如下:
例3-6 已知片内50H单元中有一个0~9的数,试编程把它转换为相应的ASCII码。(www.xing528.com)
分析:因为0~9的ASCII码为30H~39H。只要将50H单元中的内容低4位不变,高4位变成3即可。
参考程序如下:
例3-7 设(A)=54H,(DPTR)=3F21H,(3F75H)=7FH,执行MOVC A,@A+DPTR指令后(A)=?
分析:因为MOVC A,@A+DPTR的功能是A←((A)+(DPTR))
即变址地址=3F21H+54H=3F75H,而(3F75H)=7FH
故(A)=7FH
例3-8 将片内RAM 20H与30H内容相交换。
利用数据传送指令完成
想一想:还有哪些方法可以实现?
例3-9 用交换指令将片内30H单元的高4位与31H的低4位交换。
参考程序如下:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。