Assembly emu8086不';我认不出我的标签

Assembly emu8086不';我认不出我的标签,assembly,microprocessors,emu8086,Assembly,Microprocessors,Emu8086,我试图编写一个汇编代码来确定28是否是一个完美的数字。但我有个问题。当我运行代码时,emu8086无法识别我的标签。 例如,在本代码中: mov dl,1ch mov bl,00h ;sum mov cl,1ch ;counter dec cl HERE : mov ax,00h mov al,dl div cl ;ax/dl ah=remainder cmp ah,00h je SUM ; if ah=0 jump the label SUM loop HERE mov dh,00h c

我试图编写一个汇编代码来确定28是否是一个完美的数字。但我有个问题。当我运行代码时,emu8086无法识别我的标签。
例如,在本代码中:

mov dl,1ch
mov bl,00h ;sum
mov cl,1ch ;counter
dec cl

HERE : mov ax,00h
mov al,dl
div cl ;ax/dl ah=remainder
cmp ah,00h
je SUM ; if ah=0 jump the label SUM 
loop HERE

mov dh,00h
cmp dl,bl
je PERFECT
hlt

SUM :
add bl,cl
jmp HERE   

PERFECT :
mov dh,01
hlt
loop HERE
指令应该运行时,emu8086运行我的代码的第一条指令(
mov dl,1ch
)。我能做什么?有什么问题


提前感谢…

删除标签名和冒号之间的空白:

     space
       ▼
PERFECT :
应该是:

    no space
       ▼
PERFECT:

我想知道为什么emu8086会这样。为什么在冒号前添加空格会导致冒号发出不同的代码?@WayneConrad:emu8086以拒绝错误输入而闻名。我没有用过它,只是看到了它组装了完全伪造的代码的问题(比如
mov al,bx
或者类似的,最近OP声称组装的SO问题的IIRC)。我猜
在这里:
破坏了它的符号表或其他东西,因此它将分支组装到它,作为段的第一个字节。这实际上是一个很好的问题,因为OP似乎已经使用了调试器来查看它在运行时实际分支的位置。我假设emu8086甚至未能警告语法错误。请注意此错误:
此处的循环
取决于
CX
中的值,但您从未初始化此寄存器的上半部分!您只写了
mov cl,1Ch
(CX的下半部分)