2016-04-21 53 views
0

作为项目的一部分,我被要求编写一个程序来从P1输入并输出到P2。最明显的方法是只说在程序集中递增端口位

ORG 000H 

MOV C, P1.0 
MOV P2.0, C 
MOV C, P1.1 
MOV P2.1, C 

...

等。但我想通过递增端口位来做到这一点。我会怎么做?

+2

如果你只需要把所有的数据转发到P2,为什么不一次全部读取它们并立即写入? –

+0

我对此很陌生,你的意思是可以做一些像 MOV P2,P1? 也许有不同的指导? – Goblinette

+2

你可以做'MOV C,P1'然后'MOV P2,C',它会一次复制所有的位。 –

回答

2

有'MOV direct,direct'指令。在手册中,我有OP 0x85是MOV直接寻址的数据到一个直接寻址的位置......即MOV P0,P1

2

8051指令集不提供具有中间源/目标的位移指令。 MOV <dest-bit>, <srcibit>指令只允许固定值。请参阅:8051 MOV instruction

您当然可以直接将P1的完整(字节)内容复制到P2。此外,8051字节移动指令确实通过@ R1或@ R2提供了一个中间移动,如果您想要复制多个端口,则可以在循环中递增。