Assembly 在ASM中调用常量时为零

Assembly 在ASM中调用常量时为零,assembly,x86,Assembly,X86,我在ASM中有代码: mov al, VGA_WIDTH * 2 mov dl, byte [Y] mul dl VGA_WIDTH是常数,等于60,Y是字节,等于3,当我将它们相乘时,我得到零(好的),我可以假设,当我将eax(答案)添加到偏移量时,它根本不会改变偏移量 我有类似的代码,可以很好地工作。我只是不明白为什么不能。以下是一些需要考虑的要点: DS段寄存器是否设置为寻址Y变量 指令mul-dl在AX寄存器中给出一个结果,但您谈论的是“eax(答案)”。误解结果 学习使用调试器。另

我在ASM中有代码:

mov al, VGA_WIDTH * 2
mov dl, byte [Y]
mul dl
VGA_WIDTH是常数,等于60,Y是字节,等于3,当我将它们相乘时,我得到零(好的),我可以假设,当我将eax(答案)添加到偏移量时,它根本不会改变偏移量


我有类似的代码,可以很好地工作。我只是不明白为什么不能。以下是一些需要考虑的要点:

  • DS
    段寄存器是否设置为寻址Y变量

  • 指令
    mul-dl
    AX
    寄存器中给出一个结果,但您谈论的是“eax(答案)”。误解结果


学习使用调试器。另外,生成一个。感谢您回答ds寄存器指向我在例程中为tty设置的gdt表。我修复了它。您可以使用eax访问ax,但前16个bist为零或以前存储在eax中的内容