打印字母大写

时间:2013-12-14 21:29:57

标签: assembly x86

我写了一个x86汇编程序,当用户输入一个小写字母时,以大写字母打印前面的字母。例如,如果输入p,则输出应为O

不幸的是,代码不起作用。它会打印不同的ASCII字符。

以下是我的代码的一部分:

LEA DX,MSG1
    MOV AH,9
    INT 21H

    MOV AH,1
    MOV CHAR,AL
    INT 21H


    SUB CHAR,33

2 个答案:

答案 0 :(得分:0)

您在尝试将字符存储在CHAR之前尝试将其存储起来。

此:

MOV AH,1
MOV CHAR,AL
INT 21H

应该是:

MOV AH,1
INT 21H
MOV CHAR,AL

答案 1 :(得分:0)

错误是

MOV AH,1
MOV CHAR,AL ;<------before character read
INT 21H ;character read

这是有效的代码:

  ;character read
    MOV AH,1
    INT 21H
     MOV CHAR,al

    ; check range {our range begins from b}:
    lea bx,CHAR
    cmp byte ptr [bx], 'b'
    jb skip
    cmp byte ptr [bx], 'z'
    ja skip

    mov dl,[bx]
    sub dl,33 
    mov ah,2
    int 21h
     skip: