Mam / Sir有人可以帮助我!!!!
输入单个字符后我做了水平位置显示的格式,因此这是输出的要求
所以这是预期的输出
输出应该是这样的: 即便
输入: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
答案 0 :(得分:1)
假设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提供了较短的代码和错误修复。
您还可以使用查找表。