2012-11-16 80 views
0

我試着編譯並執行下面的彙編代碼。INT 21H函數#9 win xp

.model small 
.stack 2000H 
.data 
msg db 'Enter $'; 
.code 
.startup 
main: 
call readeq; 
jmp exitl; 
readeq proc near 
mov ah,9; 
mov dx,0; 
lea dx,msg; 
int 21H; 
ret; 
readeq endp 
exitl: 
end; 
.exit 

結果是:

Enter ê♦FGÇ= u⌠░ eê♦F_X├PS.Ç>‼m☺t♠eí δ╕ ♥ΦyïHe☼╢]☺♥√;╟~ eâ= t♦Gδ≤∙GG[X├S3  e9E☻tTïï╪X.Ç>‼m☺t♠eï↔â╟&;√}Φº r☻δ∩∙δ☺°[├QRS3█3 .Ç>‼m☺t♥â╟&e8♣tΦâ r♂δ⌠CYQ;┘t♣δ≡∙δ☺°[ZY├Φ╬ ╦Φÿ ╦Φ. ╦ΦH ╦Φ[ ╦╦ ...等

如何解決這個問題,知道我使用TASM和TLINK在Windows XP?

+0

jmp exitl不會**終止您的程序。它繼續前進,執行垃圾。 –

+0

那麼如何終止它? – Wazani

+1

Int 21h/0或Int 21h/ah = 4c和al =返回碼 – Seki

回答

1

要正確終止你的程序,如果它是一個COM,你可以做一個RETINT 20h(舊的CP/M方式)。如果您是EXE,請使用AX=4C00(0代表退出代碼),然後使用INT 21h

+0

謝謝:) :) :) :) :) :) – Wazani