0
我想創建一個Z80偏移指針轉換器,但是當我編譯程序並測試它時,輸出變量會變爲零。指針轉換器返回不正確的值
其背後的數學是這樣的:
- 採取偏移要指向。
- 取出偏移量的最後四位數字,然後切除其餘部分。
- 如果偏移的範圍& H4000外 - & H7FFF,必須將其轉換是這樣的:(偏移%& H4000)+ & H4000。換句話說:
- 如果偏移量爲& H0000到& H3FFF,加& H4000的偏移。
- 如果偏移量是從& H4000到& H7FFF,不要對偏移量做任何事情。
- 如果偏移量是從& H8000到& HBFFF,則從偏移量中減去& H4000。
- 如果偏移量是從& HC000到& HFFFF,則從偏移量中減去& H8000。
對於被稱爲對轉換按鈕的點擊事件中的代碼是像這樣:
Private Sub ConvertButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ConvertButton.Click
If GetOffsetRadioButton.Checked Then
If OffsetTextBox.TextLength > 0 Then
CoreActions.OffsetToPointer()
PointerTextBox.Text = CoreActions.NewOffset
PointerBankTextBox.Text = CoreActions.NewBank
End If
End If
End Sub
而且,這裏的轉換後面的代碼中,CoreActions模塊
Module CoreActions
Friend HexOffset As String = CoreForm.OffsetTextBox.Text
Friend PointerOffset As UInteger
Friend PointerBank As UInteger
Friend NewBank As String
Friend NewOffset As String
Friend Sub OffsetToPointer()
Dim DecOffset As Integer = Val("&H" & HexOffset)
PointerBank = DecOffset Mod 16384 ' 16384 = &H4000
PointerOffset = DecOffset Mod 65536 ' 65536 = &H10000
NewBank = Convert.ToString(PointerBank, 16)
NewOffset = Convert.ToString(PointerOffset, 16)
End Sub
End Module
究竟是什麼地方出現錯誤的地方輸出結果什麼都沒有?我在運行時沒有得到任何例外或警告......
你想要做的是按位操作和位移,對吧? – Fredou 2013-04-07 21:32:39
是的,基本上。 – AlexTheRose 2013-04-07 22:07:20
什麼是PointerOffset?它看起來像你只是想採取'PointerBank'並增加4000h。如果你真的想'PointerOffset',那麼你可能希望劃分4000h,因爲我不認爲你的模數實現了任何東西。你也有兩種與正常慣例相反的名字。 – Tommy 2013-04-08 04:05:58