Это пример кода на языке ассемблера для 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
на уровне AGAIN ниже MOV DL, DS: [SI]. Я думаю, что ответ должен быть HELLO !! OLLEH, но он показывает символ «=» и предыдущий результат. Почему это происходит?
Это скорее совпадение, что код работает вообще, так как вы никогда не потрудитесь инициализировать 'SI'. –
emu8086 есть отладчик встроенный. Вы должны быть в состоянии проверить, какая память читается, какой контент читается в каждом цикле и т. Д. Можно с уверенностью сказать, что новый 'int 21h' делает то, что должен, выводит символ' DL' ... вещь вокруг, вероятно, не то, что вы ожидали. – Ped7g