妈妈/先生,有人可以帮助我!!!!
输入单个字符后,我做了显示水平位置的格式,因此这是输出的要求
所以这是预期的输出
输出应该是这样的:即使是
输入:X
xyz
要求应该是一个输入字符,第一个问题是,当您输入大写字母时,我没有显示小写字母,最后一个问题是验证,而不是键入转换为显示的单个小写字母大写字母,验证时应输入大写字母,并转换为显示小写字母,当您键入单个小写字母时,不应显示输出,这是问题之一!!!
这是我的代码
.model small
.stack
.data
input db "Input: $"
.code
org 100h
start:
main proc
mov ax,03
int 10h
mov ax,@data
mov ds,ax
mov ah,9
lea dx, input
int 21h
mov ah,01
int 21h
mov dh,al
mov ah,02
mov dl,9
int 21h
mov dl,13
int 21h
mov cx,11
W:
mov dl,10
int 21h
LOOP W
mov al,dh
mov bl,al
cmp bl, 'a'
jb main
cmp bl, 'z'
ja main
mov dl,al
sub dl,20h
mov ah,02
int 21h
mov cx,26
mov dh,dl
letters:
mov bx,cx
mov dl,dh
cmp dl,'Z'
je exit
inc dl
int 21h
mov dh,dl
mov cx,bx
loop letters
mov ah,4ch
int 21h
main endp
down proc
mov dl,13
int 21h
mov dl,10
int 21h
ret
down endp
exit proc
mov cx,12
Q:
call down
LOOP Q
mov ah, 9
mov ah,4ch
int 21h
exit endp
end start
假设edi包含您的角色:
lea edx, [edi - ('A')] ; we substract the value of the letter A
mov eax, edi ; return value set to input value
or edi, 0x20 ; create a lowercase version
cmp edx, 'Z'-'A' ; that we will use only if we were facing an upper case character
cmovb eax, edi ; if it was, we move value from edi to eax
信贷:Peter Cordes提供了较短的代码和错误修复。
您也可以使用查找表。