我使用的是英特爾處理器的nasm,只是爲了通知您我的情況。將位置存儲在變量中的彙編mov
因此,這裏是我的問題:
我有一個變量命名的POS應存儲記憶ADRESS像3998或這樣的事情。現在我想轉移到存儲在此var中的地址。我該怎麼做呢?它甚至有可能嗎?
,現在這就是我的代碼:
mov ax, 0xb800 ; Go to the adress of the video card
mov ds, ax
printloop:
cmp [pos], byte 0 ; check if the value stored in pos is not 0
je hang
mov [pos], byte 36 ; PROBLEM: what it should do: write the ascii symbol(here $) to the position stored in pos
sub [pos], byte 2 ; decrement address stored in pos by two
jmp printloop
hang: ; just a hang loop when all is done
jmp hang
pos db 3998 ; the var pos with the initialization address 3998, which is the down right corner
是否有可能與一個變種?或者我必須使用註冊?我該怎麼做呢?
感謝您的回覆。
你不能在一個字節中裝入3998。 – Michael 2014-10-27 21:11:02
所以,它工作的很好,當我每次減少pos 6。然後它用一種很酷的模式填滿所有東西。當它變回2時,它在所有顏色變色之前停止。它只是到最後才改變。我發現,當我將ax增加到例如0xb8aa時,它會結束填充它。所以看起來,斧頭的位置會在灌裝結束的地方發生變化,但只有在每次減少兩個位置時纔會發生變化。我不能讓斧頭低於b800,因爲它不在圖形邊界內。這是我的錯誤還是硬件「問題」?還是應該將ds更改爲較低的數字?感謝您的幫助:) – Frozn 2014-10-28 20:27:15
不要重複使用問題發佈新問題。如果您有新問題,請將其作爲單獨問題發佈。 – Michael 2014-10-29 06:17:38