回 帖 发 新 帖 刷新版面

主题:请问如何把小写字母变大写

我刚接触汇编语言,什么都不会,请大家帮下小弟,谢谢!
问题是:从键盘输入一个小写字母,编程将其变成大写,然后显示出来

回复列表 (共4个回复)

沙发

转换为大写字母

code segment
    assume cs:code
start:
    mov ah,01h
    int 21h
    
    add al,20h
    
    mov dl,10    ;回车
    mov ah,02h
    int 21h
    mov dl,13
    mov ah,02h
    int 21h

    mov dl,al    ;输出
    mov ah,02h
    int 21h

    mov ah,4ch
    int 21h
code ends
    end start

这段代码只是将小写字母转化为大写,并不检查你输入的是否是小写字母
如果你输入的是小写字母则运行正确,否则会出现乱码等情况

板凳

code segment
        assume cs:code
begin:
        mov ah,1
        int 21h

        cmp al,'a'
        jb  stop
        cmp al,'z'
        ja  stop

        sub al,20h
        mov dl,al
        mov ah,2
        int 21h
        jmp begin
stop:   ret
code ends
        end begin

3 楼

data segment
    v1 db 'please input a letter: $'
    v2 db 10,13,'you input a wrong letter!',10,13,'please input a new : $'
    v3 db 10,13,'after switch is:$'
data ends

code segment
    assume cs:code
    assume ds:data
start:
    mov     ax,data
    mov     ds,ax
    
    mov     dx,offset v1
    mov     ah,09h
    int     21h
lab1:
    mov    ah,01h
    int     21h

    mov     bl,al
    sub    bl,61h
    js    lab2
    
    mov     bl,al
    sub     bl,7Bh
    jns     lab2
    
    ;mov     dl,10
    ;mov     ah,02h
    ;int     21h
    ;mov     dl,13
    ;mov     ah,02h
    ;int     21h
    
    mov     dl,al
    mov    dh,00h    
    sub    dl,20h
    push    dx
    
    jmp     lab3
    
lab2:
    mov    dx,offset v2
    mov     ah,09h
    int     21h
    jmp     lab1
    
lab3:    
    mov    dx,offset v3
    mov    ah,09h
    int     21h
    
    pop    dx
    mov     ah,02h
    int     21h
    
    mov     ah,4ch
    int     21h
code ends
    end start

这是一个可以运行的
输入a--z,如果不在这个范围,要重新输入

4 楼

谢谢大家!

我来回复

您尚未登录,请登录后再回复。点此登录或注册