Re: [問題] 請問8051 組合語言 怎麼把兩組PORT的值 …

看板ASM (組合語言)作者 (呆呆小狼)時間15年前 (2009/09/25 03:07), 編輯推噓2(201)
留言3則, 2人參與, 最新討論串2/2 (看更多)
我來龜毛一下好了,這個比ruemann的方法沒效率,但是可以只使用A :P B T MOV A,P0 ;A=P0.7.6.5.4.3.2.1.0 2 1 MOV C,P1.3 2 1 RLC A ;A=P0.6.5.4.3.2.1.0 P1.3 1 1 MOV C,P1.2 2 1 RLC A ;A=P0.5.4.3.2.1.0 P1.3.2 1 1 MOV C,P1.1 2 1 RLC A ;A=P0.4.3.2.1.0 P1.3.2.1 1 1 MOV C,P1.0 2 1 RLC A ;A=P0.3.2.1.0 P1.3.2.1.0 1 1 14 9 總共14BYTE 9個執行週期,ruemann的程式碼只需要11個BYTE跟7個執行週期 所以,效率比較差 :P ※ 引述《ruemann (樹海游魂)》之銘言: : 總之因為推文很麻煩,推錯了又不能改,所以… : 我的方法一向是以簡單直覺為主,大家可能會覺得方法有點笨,不過應該很好理解 : mov a, P1 ; a = P1[7..0] : swap a ; a = P1[3..0]P1[7..4] : anl a, #0xF0 ; a = P1[3..0]0000 : mov R0, a ; R0= P1[3..0]0000 : mov a, P0 ; a = P0[7..0] : anl a, #0x0F ; a = 0000P0[3..0] : orl a, R0 ; a = P1[3..0]P0[3..0] : 大概就是這樣 : ※ 引述《nicebluesky (最長的電影)》之銘言: : : 請問各位大師 : : 我想寫一個程式 : : 有關於感測器的 : : 因為有兩組感測器 : : 一組裡面有四個CYN70 : : 由於硬體的關西 : : 第一組感測器所用到的腳位是 : : P0.0 P0.1 P0.2 P0.3 : : 第二組是 : : P1.0 P1.1 P1.2 P1.3 : : 想把兩組的值 : : 都放進累積器A裡面 : : 變成 : : P1.3 P1.2 P1.1 P1.0 P0.3 P0.2 P0.1 P0.0 : : 這樣子擺放在A理面來執行其他動作指令 : : 不知道該怎模樣才可以同時存入 -- 作別人不願作的事,是好人!。 作別人不敢作的事,是壞人!。 作別人不能作的事,是天才!。 作別人不會作的事,是…腦殘!! WolfLord -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.46.178.209

09/25 03:14, , 1F
嗯嗯…果然還是有可以不用到額外的暫存器……GJ
09/25 03:14, 1F

09/25 03:17, , 2F
mov c, bit 這個指令我幾乎沒在使用……忘了它的存在
09/25 03:17, 2F

09/25 14:36, , 3F
我倒常常在用,因為常常暫存器大爆炸 >"<
09/25 14:36, 3F
文章代碼(AID): #1AkyDeHv (ASM)
文章代碼(AID): #1AkyDeHv (ASM)