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

时间:2017-02-18 00:08:02

标签: assembly x86-16 tasm

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

1 个答案:

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

您还可以使用查找表。