装配小写到大写没有显示

时间:2016-08-06 12:33:39

标签: assembly tasm

我正在尝试编写一个简单的程序,将字符串的小写字符转换为大写,但我根本没有输出。例如:

输入: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

1 个答案:

答案 0 :(得分:0)

在获取输入字符

之前,您忘记将si指向str1
mov ah,01h
lea dx,str1 
mov si,dx    ;point si to str1

并且您忘记将未转换的大写字符保存为输出字符串

nexx: 
mov [si],al
inc si
jmp read