这是8086的示例汇编语言代码,用于以相反的顺序打印字符串
.model small
.STACK 100H
.DATA
MSG DB 'HELLO!$'
.CODE
MOV CL,0
AGAIN:
MOV DL,DS:[SI]
; MOV AH,2
; INT 21H
INC CL
INC SI
CMP DL,'$'
JNE AGAIN
DEC SI
DEC CL
REV:
DEC SI
MOV DL,DS:[SI]
MOV AH,2
INT 21H
DEC CL
CMP CL,0
JNE REV
.EXIT
END
它的输出是!OLLEH。但如果我写
MOV AH,2
INT 21H
在低于MOV DL的AGAIN级别,DS:[SI]。我认为答案应该是HELLO !! OLLEH,但它显示了' ='字符和以前的输出。为什么会这样?
答案 0 :(得分:1)
我认为答案应该是HELLO !! OLLEH
校正。由于您在使用DOS功能02h输出 后仅检查“$”字符,屏幕应显示:
function DoSomething(DirectoryEntry de){
// Do some work here against the directory entry
if (de.Children != null) {
foreach (DirectoryEntry child in de.Children) {
using (child) {
DoSomething(child);
}
}
}
}
只有DOS函数09h才能写出“$”字符。
由于emu8086以某种默认方式初始化寄存器,因此可以获得半正确的结果,但最好在使用之前手动设置寄存器:
HELLO!$!OLLEH