Re: [問題] 8051的一些小問題(修正)
※ 引述《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
討論串 (同標題文章)
完整討論串 (本文為第 2 之 5 篇):
6
20
ASM 近期熱門文章
PTT數位生活區 即時熱門文章