我想列印用戶首先輸入的內容。但是,它會在結果之前顯示已轉換的大寫字母。
這是我的代碼:
org 100h
BEGIN:
LEA DX, DASH1
MOV AH, 9
INT 21H
LEA DX,LOWERCASE
MOV AH,09H
INT 21H
LEA SI,STR1
MOV AH,01H
READ:
INT 21H
MOV BL,AL
CMP AL,0DH
JE DISPLAY
XOR AL,20H
MOV [SI],AL
INC SI
JMP READ
DISPLAY:
MOV AL,"$"
MOV [SI],AL
LEA DX,UPPERCASE
MOV AH,09H
INT 21H
LEA DX, STR1
MOV AH, 09H
INT 21H
MOV DL, BH ; space
MOV AH, 02H
INT 21H
LEA DX, UPPERCASE_
MOV AH, 9
INT 21H
LEA DX,STR1
MOV AH,09H
INT 21H
LEA DX, DASH2
MOV AH, 9
INT 21H
MOV AH,4CH
INT 21H
ret
LOWERCASE DB 0DH,0AH,0AH, " Input a 5-letter string: $"
UPPERCASE DB 0DH,0AH, " The uppercase equivalent of $"
UPPERCASE_ DB "is $"
DASH1 DB 0AH,0DH, " ================================================================= $"
DASH2 DB 0AH,0AH,0DH, " ================================================================= $"
STR1 DB 255 DUP(?)
輸出:
Input a 5-letter string: asdfg
The uppercase equivalent of ASDFG is ASDFG
^ i want this part to print as `asdfg`
進行中 The uppercase equivalent of asdfg is ASDFG
PS還有,如何將字串限制為僅5個?因為用戶可以輸入的字串可以超過5個。有什么提示嗎?
================================================== ============================
uj5u.com熱心網友回復:
您分別顯示字串UPPERCASE, STR1, UPPERCASE_, STR1,難怪STR1保持不變。STRorig在更改大小寫之前,您需要再保留一個字串,用于存盤獲取的字符。
您可以使用DI尋址STRorig然后執行STOSB保存原始 AL到ES:DI和遞增DI。
當您想限制輸入字串的大小時,請與 進行比較SI,STR1 5如果它在上面,則視為AL等于0DH。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/349317.html
