我正在使用emu8086。该程序旨在将小写句子转换为大写。
int 21h/09h表现得很奇怪,它只是删除了整行。我知道它应该输出存储在 dx 中的字符串,但在这里它的行为很奇怪。我不知道为什么在执行那部分代码时会发生这种情况。其余代码工作正常。谁能解释一下?如果问题不清楚,请告诉我,我会尽力解决。
mov ah,09h
mov dx,offset str
int 21h
这是完整的代码:
.model large
.data
str db 99,?,99 dup(?)
nl db 10d,13d,'$'
m1 db "Enter a sentence in lowercase: $"
m2 db "Your sentence in uppercase is: $"
.code
;//NEWLINE
newline proc
mov ah,09h
mov dx,offset nl
int 21h
ret
endp
main proc
;//MAIN CODING
mov ax,@data
mov ds,ax
mov es,ax
;//STRING INPUT
mov ah,09h
mov dx,offset m1
int 21h
mov ah,0Ah
mov dx,offset str
int 21h
CALL newline
;//CHARACTER COUNT
mov dx,offset str
mov bx,dx
mov ah,00h
mov al,[bx+1]
mov bp,ax
mov cx,ax
;//CONVERTING LOWERCASE INTO UPPERCASE
mov si,offset str
add si,2
mov bx,0000h
mov ax,0000h
repeat:
mov bl,[si]
mov al,bl
sub al,32d
xchg bl,al
mov [si],bl
inc si
loop repeat
;//PRINTING THE RESULT
mov ah,09h
mov dx,offset m2
int 21h
;//PROBLEM OCCURS HERE
mov ah,09h ;THE PROBLEMATIC LINES
mov dx,offset str ;THE PROBLEMATIC LINES
int 21h ;THE PROBLEMATIC LINES
;//ENDING THE PROGRAM
mov ah,4ch
int 21h
main endp
end main