[英]Variables Behaving Oddly (Intel 8086)
編輯:回答了我自己的問題。 見下文。 -_-
我在.data段中定義了一個變量,如下所示:
retVal DW 0100h ;stores hex fraction of the intermediate value. Starts at 1.00
這是我加或減以獲得我的返回值的值。
它是第一次在代碼段中出現在以下位置:
sub [retVal], ax ;
我已經使用了調試器,並且可以確認在執行此操作時,ax寄存器為:0000h。
但是,如果我在其之前添加以下代碼行:
mov dx, 0100h;
mov [retVal], 0100h;
我得到一個完全不同的值(也是錯誤的)。 我很困惑。 我是從根本上濫用變量嗎? 我不明白為什么加載與變量最初初始化時相同的值(並且尚未對其進行修改)會改變結果。
有任何想法嗎? 失敗了,有人可以提醒我如何通過CodeView跟蹤變量的值嗎? (我正在使用的DOSBox調試器)
如果這是真實的8086(即分段體系結構),那么ds
減法運算時, ds
設置為什么? 首先想到的是,您可能正在更改完全不同的內存位置。
最重要的是,您應該提供:
retVal
都設置為實際的不正確值。 該程序是子程序嗎?
如果是這樣,並且您反復調用該子例程,是否要重置您更改的變量?
如果不重新聲明變量,則不會在第二次或以后運行子例程時使用先前聲明的值,而是在第一次執行結束時使用更改后的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.