私は、キーボードから3つの文字列を読み込み、2つの文字列を小文字で、最後の文字列を大文字で表示しようとしています。私は今まで何を得ているのですか?私は文字列を読むことができますが、すべてを大文字に変換します。最後の文字列だけを変換する方法はありますか?事前に感謝アセンブリのx86上の文字列を分割する16ビット
.MODEL SMALL
.DATA
MSG DB 0DH,0AH, 'ENTER A STRING: $'
MSG2 DB 0DH,0AH, ' YOUR STRING IS :-----> : $'
STR1 DB 255 DUP(?)
.CODE
BEGIN:
MOV AX,@DATA
MOV DS,AX
LEA DX,MSG
MOV AH,09H
INT 21H
LEA SI,STR1
MOV AH,01H
READ:
INT 21H
;MOV BL,AL
CMP AL,0DH
JE DISPLAY
SUB AL,20H
MOV [SI],AL
INC SI
;CMP BL,0DH
JMP READ
DISPLAY:
MOV AL,'$' ;caracter '$'
MOV [SI],AL ;
LEA DX,MSG2
MOV AH,09H
INT 21H
LEA DX,STR1
MOV AH,09H
INT 21H
; MOV AH,4CH
; INT 21H
.EXIT
END BEGIN
私はTASMを使用しています。
*最後の文字列のみを変換する方法はありますか?*はい、もちろんあります。 1つの方法は、最初の2つの文字列の最後の位置を追跡することです。入力を読み終えたら最後の文字列だけをループすることができます。 –
申し訳ありませんが、あなたは私の皮肉を激しく誘発します... "いいえ、コンピュータのすべての文字列は現在大文字でなければなりません"のように。あなたは基本的にあなた自身の質問に答えます。最初の2つの文字列を変換しないと、3つ目の文字列だけが変換されます。それを計算として考えて、数式、カウンタ、数値操作に問題を壊してください...文字列さえASCIIコードで連続したバイト値(0-255)のストリームです。だから、特定の文字列だけで何かをしたいのであれば、最初に文字列の開始/停止を決める方法を定義してください(スペースごとに?)。それらを数える。 3番目に大文字を実行する – Ped7g
'' sub al、20h'は "大文字"に少し不十分ですが、 '' A''のように既に大文字にするのでしょうか? '' AND''を '' A 'OR 0x20'とした理由は '' AND''をチェックし、それがどのように動作しているかを確認してから、ASCIIテーブルを見てください。 'Z' + 1 '。 – Ped7g