DATAS SEGMENT
str1 DB "Please input a char:",13,10,"$"
str2 DB "The result is:$"
A DB "0"
B DB "0"
input DB '0'
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
L: LEA DX,str1 ;输出str1
MOV AH,9
INT 21H
MOV AH,1;输入
INT 21H
MOV input,AL
CMP input,'a' ;判断是不是小写,不是则重新输入
JL L
CMP input,'z'
JG L
MOV DX,13;换行
MOV AH,2
INT 21H
MOV DX,10
MOV AH,2
INT 21H
MOV AL,input
SUB AL,01H ;前置字母
MOV A,AL
ADD AL,02H ;后置字母
MOV B,AL
CMP input,'a';判断是不是a
JNE L1 ;不是就判断是不是z
MOV A,'z' ;是就将前置字母换为z
MOV B,'b' ;后置字母换为b
JMP L2
L1: CMP input,'z';判断是不是z
JNE L2 ;不是就输出结果
MOV A,'y' ;是就将前置字母换为y
MOV B,'a' ;将后置字母换为a
JMP L2
;L2输出结果
L2: LEA DX,str2 ;输出str2
MOV AH,9
INT 21H
MOV DL,A ;输出前置字母
MOV AH,02H
INT 21H
MOV DL,input ;输出本身
MOV AH,02H
INT 21H
MOV DL,B ;输出后置字母
MOV AH,02H
INT 21H
MOV DX,13;换行
MOV AH,2
INT 21H
MOV DX,10
MOV AH,2
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START
汇编真的很傻,很难,但是很考验逻辑思维