Re: [問題] 8051的一些小問題(修正)

看板ASM (組合語言)作者 (ksmrt)時間15年前 (2010/03/22 17:24), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/5 (看更多)
※ 引述《eternal1879 (瘋狂米虫)》之銘言: 可是我只知道用ADD來計算 可是這樣會使A溢位 也想過利用類似邏設的半加法的方法..可是這樣要寫很多迴圈 16BIT是利用這樣寫嗎..? 應該不是吧... =============================================================== C編出來的code是初學ASM時很好的參考. 下面這個C程式: unsigned int a, b, c, d; main() { c = a + b; d = c >> 4; } Keil C 會編譯成下面的ASM code. 2: main() 3: { 4: c = a + b; C:0x0003 E509 MOV A,0x09 C:0x0005 250B ADD A,0x0B C:0x0007 F50D MOV 0x0D,A C:0x0009 E508 MOV A,a(0x08) C:0x000B 350A ADDC A,b(0x0A) C:0x000D F50C MOV c(0x0C),A 5: d = c >> 4; C:0x000F C4 SWAP A C:0x0010 F8 MOV R0,A C:0x0011 54F0 ANL A,#B(0xF0) C:0x0013 C8 XCH A,R0 C:0x0014 68 XRL A,R0 C:0x0015 F50E MOV d(0x0E),A C:0x0017 E50D MOV A,0x0D C:0x0019 C4 SWAP A C:0x001A 540F ANL A,#0x0F C:0x001C 48 ORL A,R0 C:0x001D F50F MOV 0x0F,A 6: } C:0x001F 22 RET -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.68.71.218
文章代碼(AID): #1BfpTYD8 (ASM)
文章代碼(AID): #1BfpTYD8 (ASM)