【问题标题】:Error 'Mov wrong parameters'错误“移动错误的参数”
【发布时间】:2014-01-23 18:47:39
【问题描述】:

我开始学习汇编 (ASM x86)。我正在使用模拟器emu8086。我写了以下指令:

mov eax,3

当我试图模拟指令时,emu8086 写道:wrong parameters MOV eax,3. probably it's an undefined var: eax

此外,当我将 eax 替换为 axahal 时 - 效果很好。

为什么会这样?我应该怎么做才能解决这个问题? 谢谢。

【问题讨论】:

    标签: assembly emulation low-level emu8086


    【解决方案1】:

    emu8086 模拟原来的 8086。它是一个 16 位处理器,所以没有 32 位寄存器(eax、ebx 等)

    有关寄存器布局的更多信息,请查看Wikipedia page on the Intel 8086

    【讨论】:

    • 谢谢。你还知道其他适合使用 32 位寄存器的模拟器吗?
    • @Programmer 试试 NASM 汇编器
    • 我不知道有什么像emu8086那样具有交互性。但是,您可以使用 bochs 之类的模拟器并使用 NASM 之类的汇编器来获得 32 位(和 64 位)仿真。
    • @meda & mebob - 非常感谢您的帮助。
    • @Programmer 注意:当您尝试模拟 32 位时,事情会变得更加复杂。您实际上必须经历将(模拟)CPU 切换到 32 位模式的过程,这本身就是一个完整的主题。如果您想要 32 位汇编,最好只为您所在的任何操作系统编写本机汇编程序。
    【解决方案2】:
    db 66h
    mov ax, 3
    db 0, 0
    

    应该在不支持它的汇编程序中模拟mov eax, 3(在 16 位代码中)。使用汇编程序更容易...

    【讨论】:

    • 这当然不会在 8086 或 8088 处理器上运行,并且会在 emu8086 中抛出未知操作码。
    猜你喜欢
    • 2019-12-03
    • 1970-01-01
    • 2016-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多