這是群裡某個群友提的問題,就是說呼叫Dos系統功能表,然後輸入一個字元,輸出了兩個字元的結果。
然後我運行了程式碼出來結果發現確實如此
查了系統功能表
彙編程式碼是沒錯的。
群裡有人也看了一下,給出的意見是第一個不是程式顯示的,是模擬器顯示的,第二個顯示的才是程式裡程式碼顯示的。
去掉第二個int 21h就只出現一個字元,剛好是我們想要的結果。
其實也不需要過多糾結於這個,只要充分理解每一句彙編程式碼即可。
mov ah,1 ;1號功能,鍵盤輸入,鍵入的值在al
int 21h
mov ah,2 ;2號功能,顯示一個字元
mov dl,al ;顯示的字元要放入dl,顯示al的值
int 21h
這麼看下來,我覺得是程式碼是沒錯的,至於為什麼顯示兩個字元跟預期的不一致,我個人覺得確實應該是dosbox模擬器的問題,不要因為去掉第二個int 21h就是你想要的結果,然後你就真的把第二個int 21h這句程式碼去掉,我覺得這樣子的話可能就有損學習的那種科學觀。當然如果有人知道原因,或者說感覺是哪個方面的問題,也可聯絡我。