2016-04-21 54 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提供了一箇中間移動,如果您想要複製多個端口,則可以在循環中遞增。