我写了一个x86汇编程序,当用户输入一个小写字母时,以大写字母打印前面的字母。例如,如果输入p
,则输出应为O
。
不幸的是,代码不起作用。它会打印不同的ASCII字符。
以下是我的代码的一部分:
LEA DX,MSG1
MOV AH,9
INT 21H
MOV AH,1
MOV CHAR,AL
INT 21H
SUB CHAR,33
答案 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: