作者learnerQQ (小銓)
看板ASM
標題[問題] 有關 MASM新手的問題 想請教各位前輩
時間Wed Apr 7 15:44:57 2010
學校最近教了 MASM ,小弟有個問題想請問各位前輩
Q: 我想把 一個小整數放入 記憶體位置 00000160h 的地方
這是我的程式碼:
-----------------------------------------------------------------
TITLE test (main.asm)
INCLUDE Irvine32.inc
.data
.code
main PROC
mov esi , 160h ; 儲存 address 00000160h, points to 00000160h
call ReadInt ; input a small integer,放在 al
mov BYTE PTR [esi] , al ; 把 al的數值 移到 記憶體位置esi 的地方
call WriteInt
call WaitMsg
exit
main ENDP
END main
-----------------------------------------------------------------------
結果出現了 錯誤的訊息:
於 0x0040101a 的 Project.exe 中發生未處理的例外狀況: 0xC0000005:
寫入位置 0x00000160 時發生存取違規!
請問這是所謂的 General Protection Fault 嗎?
請問該如何解決呢 @"@? 先謝謝各位了
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.39.27.33
1F:→ techo:一點建議. 你確定0160h沒有東西嗎? 我想比較好的寫法是先宣 04/08 17:06
2F:→ techo:告like "data DB ?" 然後將offset 指向esi 04/08 17:08
3F:→ techo:這樣應該可以解決你的問題 04/08 17:09
4F:推 loveflames:記得最前面有一小段記憶體是不可存取的,忘了是1KB還是 04/08 22:26
5F:推 loveflames:4KB 04/08 22:26
6F:推 loveflames:記錯了,是64K才對,所以是0x00000000~0x0000ffff 04/08 22:41
7F:→ learnerQQ:謝謝 我試試看 THX 04/09 23:32