首页 > 解决方案 > 汇编 - 仅显示大写字母

问题描述

所以我想做的是当输入文本时,asdHsExaLzLO 并按下输入输出应该是 HELLO。但是使用我当前的代码没有输出。我做错了什么?我正在尝试将大写字母存储到 OUTPUT 但它似乎无法按我喜欢的方式工作。

.MODEL SMALL
.STACK 100H
.DATA
    MSG1 DB 'Enter txt:  $'
    OUTPUT DB '' ;storing uppercase letters
    NEWLINE DB 10, 13, '$'
.CODE
    MAIN PROC
    MOV AX,@DATA ;DS
    MOV DS,AX
    ;print MSG1

    LEA DX,MSG1
    MOV AH,9
    INT 21H


    ; loop  
    loop_top:
    MOV AH,1   ;read input
    INT 21h

    cmp al,0dh  ; check for Enter?
    je Display1  ; if yes,loop goes to display1

    ; Uppercase check
    sub al, 'A'
    cmp al, 'Z'-'A'
    jbe uppercase ;if uppercase go to uppercase 

    uppercase:
    MOV al, OUTPUT  
    jmp loop_top

    loop_end:
    jmp loop_top

    Display1:
    LEA DX, NEWLINE
    MOV AH,09H
    INT 21H

    LEA DX,OUTPUT
    MOV AH,09H
    INT 21H
    jmp exit_program 

    exit_program:
    MOV AH,4CH  ; DOS
    INT 21H

MAIN ENDP
 END MAIN
ENDF

标签: assemblydosmasmx86-16

解决方案


推荐阅读