[問題] 請問Keil c 8051 轉型問題

看板ASM (組合語言)作者 (小妞)時間11年前 (2013/11/28 10:37), 編輯推噓1(102)
留言3則, 1人參與, 最新討論串1/1
請問一下用keil c 編輯8051遇到轉型問題 unsigned char g_test xdata _at_ 0x5000; void func(void) { unsigned long testaddr = 0; testaddr = &g_test; } 刻意把16bit的位址給32bit的testaddr, 期望testaddr = 0x00005000 結果testaddr = 0x00015000 請問一下為什麼第17bit會是1? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 106.65.21.247

11/28 12:55, , 1F
memory type是xdata就會是0x01 可以去查c51.pdf的第六章
11/28 12:55, 1F

11/28 12:57, , 2F
KEILC的generic pointer分3byte,xdata=0x01, code=0xFF
11/28 12:57, 2F

11/28 12:57, , 3F
所以你如果用CODE去宣告的話,得到的值會是0X00FF5000
11/28 12:57, 3F
文章代碼(AID): #1IbgnK6j (ASM)
文章代碼(AID): #1IbgnK6j (ASM)