2011-09-26 48 views
0

我正在編寫一個程序來讀寫字符,將小寫字母轉換爲大寫字母。這是我的第一個彙編程序,所以我試圖首先讓程序讀入一個字符並寫出來。這是我已編碼到目前爲止:彙編語言:閱讀(無回聲)並寫入

.model  small 
    .8086 


    .data 

lower db  'a' 


    .code 

start: 
     mov  ax,@data 
     mov  ds,ax 

     mov  ah,8 
     int  21h 
     mov  dl,al 
     mov  ah,2 
     int  21h 

exit: 
     mov  ax,4c00h 
     int  21h 
     end  start 

我是否正確地處理讀/寫?當我運行這個程序並輸入一個字符時,我只看到它的一個實例。難道不是兩個?一個是我打的信,一個是回信?例如,如果我輸入d,我看到:

d 

,但我不應該看到:

d 
d 
or 
dd 

回答

1

DOS詮釋08H從標準輸入讀取一個字符,不回顯它。如果要回顯該字符,請調用int 01h。

+0

謝謝。我們不允許在這個任務中使用echo,所以我只是試圖讀取一個字符,然後將它寫入顯示器。我認爲我正確閱讀角色,但是如果我將角色寫入顯示屏,那麼我的程序是不是應該模仿回聲?也許我的寫入方法有錯誤? – raphnguyen

+0

@raphnguyen:不,你不應該看到兩個字符。你的代碼讀取一個沒有回聲的字符,然後輸出字符。由於你的閱讀沒有回聲,因此角色在輸出之前不會輸出到控制檯。爲了明白我的意思,把把'mov dl,al'改成mov dl,'X''的那一行。當你運行程序時,不管你按什麼鍵,它都會輸出'X'。 –

+0

再次感謝,吉姆。隨着節目多了一些,並取得了很多進展。我想我現在明白它的工作原理。 – raphnguyen