汇编完成 “输入小写字母,输出大写字母”

data segment
        data_a db 'a'                                      ;左边界标志
        data_z db 'z'                                       ;右边界标志
        info db 'please input the right letter $'             ;输入错误后提示信息
data ends

stack segment
stack ends

code segment
        assume cs:code,ds:data,ss:stack
start:
        mov ax,data
        mov ds,ax
        mov ah,01h                               ;调用系统输入单字符功能
        int 21h
        cmp al,data_a                           ;如果小于 'a' 则提示错误信息
        jb error
        cmp al,data_z                           ;如果大于 'z' 则提示错误信息
        ja error
        sub al,20h                                 ;小写字母比大写字母的ascii值大20h
        mov dl,al                                   ;系统显示单字符功能缓冲区为dl
        mov ah,02h                               ;调用dos的2号功能-显示指定单字符
        int 21h
        jmp exit                                     ;退出,jmp为无条件转移指令
error:
        mov ah,09h
        mov dx,offset info                    ;求得错误提示信息的变量地址并用dx寄存器指定(09号功能显示的是dx指定数据的内容)
        int 21h
        jmp exit
exit:
        mov ah,4ch                              ;退出
        int 21h
code ends
        end start