1
這是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
它的輸出!2009東海生日賀的輸出。但是,如果我寫
MOV AH,2
INT 21H
在繼續等級低於MOV DL,DS:[SI]。我認爲答案應該是HELLO !! OLLEH,但它顯示'='字符和以前的輸出。爲什麼會發生?
這是相當巧合的是,代碼完全可以工作,因爲你永遠不會初始化'SI'。 –
emu8086內置調試器。你應該能夠檢查,讀取什麼內存,在每個循環中讀取什麼內容等......可以肯定地說,新的「int 21h」做它應該做的事情,輸出「DL」字符......周圍的事情可能不是你所期望的。 – Ped7g