Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 变量行为异常(英特尔8086)_Assembly_Variables_Intel_X86 16_Code View - Fatal编程技术网

Assembly 变量行为异常(英特尔8086)

Assembly 变量行为异常(英特尔8086),assembly,variables,intel,x86-16,code-view,Assembly,Variables,Intel,X86 16,Code View,编辑:回答了我自己的问题。见下文-_- 我在.data段中定义了一个变量,如下所示: retVal DW 0100h ;stores hex fraction of the intermediate value. Starts at 1.00 这是我加上或减去得到返回值的值 它第一次出现在代码段中是在以下时间点: sub [retVal], ax ; 我已经使用了调试器,并且可以确认在执行此操作时,ax寄存器为:0000h 但是,如果我在其前面添加以下代码行: mov dx, 0

编辑:回答了我自己的问题。见下文-_-

我在.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
设置为什么?首先想到的是,你可能正在改变一个完全不同的记忆位置

除此之外,您还应提供:

  • 展示问题行为的最短可能完整的程序(你可能会发现你在这样做时解决了自己的问题——我经常这样做)
  • 在这两种情况下,
    retVal
    设置的实际值都不正确
如果这是真正的8086(即分段架构),那么在进行减法运算时,
ds
设置为什么?首先想到的是,你可能正在改变一个完全不同的记忆位置

除此之外,您还应提供:

  • 展示问题行为的最短可能完整的程序(你可能会发现你在这样做时解决了自己的问题——我经常这样做)
  • 在这两种情况下,
    retVal
    设置的实际值都不正确

所讨论的程序是子程序吗

如果是,并且您反复调用子例程,您是否正在重置您更改的变量


如果不重新声明变量,则在第二次或以后运行子例程时,不会使用先前声明的值,而是在第一次执行结束时更改的值。

所述程序是否为子例程

如果是,并且您反复调用子例程,您是否正在重置您更改的变量


如果不重新声明变量,则在第二次或以后运行子例程时,您不会使用先前声明的值,而是在第一次执行结束时更改的值。

如果您只向我们显示您认为是导致问题的代码行,我们将无法猜出发生了什么错误。请发布一个简短、完整的示例,演示您所看到的问题。别忘了清楚地说明预期结果和实际结果。如果您只向我们显示您认为是导致问题的代码行,我们将无法猜测出发生了什么问题。请发布一个简短、完整的示例,演示您所看到的问题。别忘了清楚地说明预期结果和实际结果。