emu8086无法在仿真器屏幕上打印数字

时间:2014-03-22 11:39:36

标签: assembly emulation x86-16

我试图在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
希望你们能帮助我,谢谢。

1 个答案:

答案 0 :(得分:1)

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