80x86汇编习题
题目描述:编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。
思路:
1,用A号功能一次性输入一个字符串
2,长度存入LENS
3,指针SI移动到字符串首部。字符串首部在BUFF+2的位置
4,逐个读取字符串的内容,如是小写字母,则转换成大写字母再输出显示
DATAS SEGMENT
LENS DW 0
BUFF DB 255,?,255 DUP(?)
DATAS ENDS
STACKS SEGMENT
DW 100H DUP(?)
TOP LABEL WORD
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV AX,STACKS
MOV SS,AX
LEA SP,TOP ;初始化
;输入
LEA DX,BUFF
MOV AH, 0AH
INT 21H ;INT 21H 的0A号功能
MOV SI,DX ;DX是缓冲区首部,DX+1是输入的字符数量,DX+2是字符串首部
MOV AL,[SI+1] ;获取输入缓冲区的字符总个数
XOR AH,AH ;清空AH
MOV LENS,AX ;将长度存入LENS
;输出
ADD SI,2 ;SI到字符串首部
MOV CX,LENS
L1:
MOV DL,[SI]
CMP DL,'a'
JB DISP
CMP DL,'z'
JA DISP ;如果不在a-z之间直接输出
SUB DL,20H
DISP:
MOV AH,2
INT 21H
INC SI
LOOP L1
MOV AH,4CH
INT 21H
CODES ENDS
END START