【问题标题】:emu8086 can't print numbers on emulator screenemu8086 无法在模拟器屏幕上打印数字
【发布时间】:2014-03-22 11:39:35
【问题描述】:

我试图在 emu8086 的模拟器屏幕上显示两个数字相乘的结果,当我使用小的 8 位数字时,运行代码时结果打印得很好,但是对于 16 位数字,我得到 0模拟器屏幕,我不确定我的代码或它自己的模拟器有什么问题,我对汇编完全陌生,过去一个小时我一直在尝试解决它,这就是我的代码

    include 'emu8086.inc' 
    name "multiply_two_16_bit_numbers"

    org 100h

    mov ax, 512   ; 
    mov bx, 512   ;

    mul bx 

    call print_num

    ret
    DEFINE_PRINT_NUM
    DEFINE_PRINT_NUM_UNS
    end

希望大家能帮帮我,谢谢。

【问题讨论】:

  • 你还没有向我们展示print_num的代码。
  • @Michael 我不确定我是否理解正确,但我使用了 [call print_num ret DEFINE_PRINT_NUM DEFINE_PRINT_NUM_UNS] 函数

标签: assembly emulation x86-16


【解决方案1】:

请注意 512*512=262144=40000h,这是一个 32 位数字,低 16 位为零,这大概就是您打印的内容。 mul 指令的这种形式将结果的前 16 位放入寄存器 dx,您应该在那里找到 4。如果你想打印整个结果,你当然需要一个 32 位的打印函数,而且你必须正确地传递参数。

【讨论】:

  • 感谢您的回复,请您详细说明一下,什么是32位打印功能,以及如何正确传递参数。
  • 我知道 print_num 函数在 AX 中打印数字,那么在 DX 中打印数字的功能是什么
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多