簡體   English   中英

行為異常的變量(Intel 8086)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM