如何在汇编语言8086中将大写字符转换为小写字符

问题描述 投票:1回答:1

妈妈/先生,有人可以帮助我!!!!

输入单个字符后,我做了显示水平位置的格式,因此这是输出的要求

所以这是预期的输出

输出应该是这样的:即使是

输入: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
assembly x86-16 tasm
1个回答
0
投票

假设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提供了较短的代码和错误修复。

您也可以使用查找表。

© www.soinside.com 2019 - 2024. All rights reserved.