bode:
像這種用拼湊方法來存儲數據,以達到節省空間的方法,用匯編指令很容易就做到了,用C語言非常費時間,尤其是這種帶乘法的指令,匯編語言的乘法指令是4個機器周期的,C語言的乘法指令只會更高。比如要把a b c d這四個數據原來存儲在內部ram的0x0002-0x0005這四個地址中,要把它們放在外部ram的0x0200H和0x0201H地址中,存放格式為ab和cd。MOVDPTR,#0200H //設置外部ram地址指針,指向0x0200H地址單元。MOVR0,#0002H //設置內部ram地址指針,指向0x0002H地址單元。MOVA,@R0 //取得第一個數,為0a。SWAPA //累加器A高低半字節互換,變為a0。INCR0 //內部地址指針加1,指向0x0003H地址單元。XCHDA,@R0 //累加器A與0x0003H單元低半字節交換,A變為ab。MOVX@DPTR,A //把累加器A的內容ab存入外部0x0200H單元。INCDPTR //外部ram地址指針加1,指向0x0201H單元。INCR0 //內部地址指針加1,指向0x0004H地址單元。MOVA,@R0 //取得第一個數,為0c。SWAPA //累加器A高低半字節互換,變為c0。INCR0 //內部地址指針加1,指向0x0005H地址單元。XCHDA,@R0 //累加器A與0x0005H單元低半字節交換,A變為cd。MOVX@DPTR,A //把累加器A的內容cd存入外部0x0200H單元。 上面就是存儲數據的過程,里面的指令大都是1個機器周期,除了對DPTR操作的指令是2個機器周期,整個操作過程也就是18個機器周期。讀取數據的過程就是上述過程的逆序。相比用C語言來說,效率要高得多。