【问题标题】:ADD operation in assembly在汇编中添加操作
【发布时间】:2017-09-23 16:39:34
【问题描述】:

自从我停止使用某些代码语言以来已经有一段时间了,自从几天前我在学校开始学习汇编以来,我想开始了解一些代码行工作背后的一些逻辑。
实际上,我尝试的是两个变量之间的简单 ADD 操作。我使用 emu8086 来模拟我的代码,现在我将向您展示为什么我无法理解它。

代码如下:

stack segment
  dw 128 dup(0)
ends

data segment

  x DB 3
  y DB 5
  r DB 0

ends

code segment

   mov ah,x  
   mov al,y
   add ah,al
   mov r,ah   

ends

现在,我刚刚初始化了三个变量,其中两个是 8 位的,我想将第一个添加到第二个。

问题如下:当我模拟代码时,我一步一步去看看会发生什么,第一步应该是AH=03,但它似乎输出了CDh(那不是我的x var)和我不明白为什么。 AL 也一样。

我的意思是,为什么我在 AHAL 寄存器中写入了其他内容,而不是 x 和 y 变量?

【问题讨论】:

  • 您可能忘记设置DS 指向您的数据段。
  • 抱歉,请问,我该怎么做?

标签: variables assembly add x86-16 emu8086


【解决方案1】:

您的所有mov 指令地址变量在DS 段寄存器引用的内存中。你需要提前设置!只需添加以下几行:

code segment
    mov ax, @data    <- Add this
    mov ds, ax       <- Add this
    mov ah, x  
    mov al, y
    add ah, al
    mov r, ah   
ends

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-12
    • 2011-08-06
    • 1970-01-01
    • 1970-01-01
    • 2012-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多