题目要求从键盘上接受一个字符,显示它的前导字符和后继字符
源代码
DATA SEGMENT
MSG1 DB 'Please input a letter :$'
MSG2 DB 'The previous letter is :$'
MSG3 DB 'The next letter is :$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET MSG1;显示提示信息1
MOV AH,09H
INT 21H
MOV AH,01H;等待用户输入
INT 21H
MOV BX,AX
DEC AL;-1计算前导字符
INC BL;+1计算后继字符
PUSH BX;保存BX内容即后继字符
PUSH AX;保存AX内容即前导字符
MOV DL,0DH;回车
MOV AH,02H
INT 21H
MOV DL,0AH;换行
MOV AH,02H
INT 21H
MOV DX,OFFSET MSG2;显示提示信息2
MOV AH,09H
INT 21H
POP AX;AX内容即前导字符出栈
MOV DL,AL;AL内容送入DL(存放的是ASCLL码),准备输出
MOV AH,02H;输出前导字符
INT 21H
MOV DL,0DH;回车
MOV AH,02H
INT 21H
MOV DL,0AH;换行
MOV AH,02H
INT 21H
MOV DX,OFFSET MSG3;显示提示信息3
MOV AH,09H
INT 21H
POP BX;BX内容即后继字符出栈
MOV DL,BL;BL内容送入DL(存放的是ASCLL码),准备输出
MOV AH,02H;输出后继字符
INT 21H
MOV DL,0DH;回车
MOV AH,02H
INT 21H
MOV DL,0AH;换行
MOV AH,02H
INT 21H
JMP START;无条件跳转至start,继续输入
MOV AH,4CH;结束进程,返回DOS
INT 21H
CODE ENDS
END START
注意:
1.栈是先进后出,AX,BX的入栈顺序决定其出栈顺序,进而影响到后面前导字符和后继字符的显示顺序。
2.适当增加提示信息可以增强代码的可读性。
运行结果截图如下
输入f,显示其前导字符为e,后继字符为g;
输入o,显示其前导字符为n,后继字符为p。