汇编语言编写程序,把100H号单元开始的连续80H个字节数据传送到150H开始的连续单元中,老师说要倒着取倒着

2025-12-18 06:49:19
推荐回答(2个)
回答1:

100H+80H>150H,如果正着取,会将150H地址处的值覆盖,导致你取出来的值是100H的值,打下比方:
150H原始值:0AAH,
100H原始值0BBH,
数据传送一个字节后,150H=0BBH,当传送到150H时,本想取0AAH,却变成0BBH,这是内存拷贝时尤其要注意。

回答2:

倒着取,是为了防止覆盖操作,其实只能必须倒着取,因为有部分单元重合的。
下面是一些相关代码,你看看:
MOV_Data:
MOV R0,#230H
MOV R1,#180H
Loop:
MOV A,@R1
MOV @R0, A
DEC R0
DEC R1
CJNE R1, #99H, Loop
CJNE R0,#149H,Loop
RET
上面是一个子程序,你可以直接条用就可以实现上述数据搬移的效果,而且是倒着取,不会覆盖的哦。
希望对你有帮助。谢谢