2016-08-06 12 views
0

文字列の小文字を大文字に変換する単純なプログラムを作成しようとしていますが、出力が全く得られません。大文字小文字の大文字の表示なし

入力:AABB 出力:たとえばAABB

私のミスがどこにあるか私は知らないが、とにかく、 私のコードは次のとおりです。

data segment 
prompt db 0dh,0ah,"Your string: $" 
str1 db 15 dup('$') 
msg db 0dh,0ah,"Result after conversion: $" 
data ends 

code segment 
assume cs:code,ds:data 
START: 
mov ax,data 
mov ds,ax 

mov dx,offset prompt 
mov ah,09h 
int 21h 

mov ah,01h 
lea dx,str1 

read: 
int 21h 
mov bl,al 
cmp al,0Dh 
je display1 
cmp al,61h 
jl nexx 
cmp al,7Ah 
jg nexx 

sub al,20h 
mov [si],al 
inc si 
jmp read 

display1: 

lea dx,msg 
mov ah,09h 
int 21h 

lea dx,str1 
mov ah,09h 
int 21h 

mov ah,4ch 
int 21h 

nexx: 
inc si 
jmp read 

code ends 
end start 
+0

あなたは値を格納するのに 'si'を使いますが、アドレスをどこにロードするのか分かりません。 –

+0

ボー、どこにロードすればいいですか? – user3848412

+0

デバッガを使用してコードをシングルステップ実行し、問題を自分で見つけることができます。出力を与えても、どこに問題があるのか​​はほとんど分かりません。 –

答えて

0

あなたが前STR1にSIを指すように忘れてしまいました取得入力文字

mov ah,01h 
lea dx,str1 
mov si,dx ;point si to str1 

、あなたは出力文字列に変換し、非大文字を保存するのを忘れ

nexx: 
mov [si],al 
inc si 
jmp read 
関連する問題