err:
MOV AH, 0x0E
MOV BX, 0x0007
MOV SI, 6
.loop:
MOV AL, [SI+.msg-1]
INT 0x10
DEC SI
JNZ .loop
JMP restart ;jumps to the start of the program to for all intents and purposes equivalent to a complete reset
.msg db CR, LF, ".rrE"
此代码是较大程序的一部分,并打印消息“Err”。(当然不包括引号)后跟换行符和回车符。这适用于配备Intel Atom N570 64 位双核的笔记本电脑,但不适用于配备Intel Core i5-3570K 64 位四核的 PC 或配备AMD turion 64 X2 64 位双核的笔记本电脑。在后两者上,改为打印一系列六个空白。
该代码只能通过JMP err
命令访问,并且就我能够测试的情况而言,整个程序都可以在所有三个 CPU 上运行。
我为此绞尽脑汁了一段时间,因为我确信这是我忽略的一些非常简单的事情。由于这无济于事,这是我向互联网求助的呼声……这种行为可能是什么原因?