Intel 8086上的数字基本转换

时间:2013-12-14 17:07:49

标签: assembly x86 x86-16

我正在研究一个数字基本转换程序,我偶然发现代码的一部分存在问题:

    mov ax,36864
    mov bx,ax
    mov dx,0
    sub bx,4096
    jns ustawGr
    mov al,48
    int 29h
    jmp konwerter16

对于高达36863的数字,它可以正常工作,但出于某种原因它不会进入ustawGr并打印0以获得更高的数字,即使寄存器应该能够包含它。

1 个答案:

答案 0 :(得分:3)

36864 - 40960x9000 - 0x1000 == 0x8000。在two's complement representation 0x8000中,最大的负16位数字(-32768)。由于该值为负数,因此不会使用jns