资源描述
47.将字符串补齐为某个特定长度 提醒输入字符串;
输入任意字符串string,点击Enter结束输入; 提醒输入数字;
输入任意数字int,点击Enter结束输入; 提醒输入字符; 输入任意字符ch,
点击Enter结束输入 假如字符串string长度大于int,则截取string前int位输出;
假如字符串string长度小于int,则在string后面添加字符ch,直至使字符串长度等于int;
假如字符串string长度等于int,则直接输出字符串。 点击Enter程序退出
DATA SEGMENT
S1 DB 0DH,'ENTER A STRING: $'
S2 DB 0DH,0AH,'ENTER A NUM: $'
S3 DB 0DH,0AH,'ENTER A CHARACTER: $'
S4 DB 0DH,0AH,'THE RESULT IS: $'
BUF DB 100,0,100 DUP(0)
N0 DB 0 ;输入数字
N1 DB 0 ;输入字符串长度
N2 DB 0 ;输入字符
DATA ENDS
CODE SEGMENT
MAIN PROC FAR
ASSUME CS:CODE,DS:DATA
START:
PUSH DS
XOR AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
MOV AH,9 ;提醒输入字符串
MOV DX,OFFSET S1
INT 21H
MOV AH,0AH ;输入字符串
MOV DX,OFFSET BUF
INT 21H
MOV BX,OFFSET BUF ;保留输入字符个数
INC BX
MOV AL,[BX]
MOV N0,AL
MOV AH,9 ;提醒输入数字
MOV DX,OFFSET S2
INT 21H
PUT:
MOV AH,07H ;输入数字
INT 21H
CMP AL,'0'
JB PUT
CMP AL,'9'
JA PUT
MOV DL,AL
SUB AL,30H
MOV N1,AL ;保留输入数字
MOV AH,2 ;显示输入数字
INT 21H
MOV AH,07H ;输入数字(用不回显方法)
INT 21H
CMP AL,0DH ;过滤掉数字外字符
JZ NEXT
NEXT:
MOV AH,9 ;提醒输入字符
MOV DX,OFFSET S3
INT 21H
MOV AH,1 ;输入字符
INT 21H
MOV N2,AL
MOV AH,1 ;输入字符
INT 21H
CMP AL,0DH
JZ NEXT1
;保留输入字符
NEXT1:
MOV AH,9 ;显示输出结果提醒
MOV DX,OFFSET S4
INT 21H
MOV AL,N1 ;输入数字
MOV AH,N0 ;输入字符串长度
MOV CH,0
MOV CL,N1
MOV BX,OFFSET BUF
ADD BX,2
CMP AH,AL
JAE EQU1 ;输入字符串长度 >= 输入数字
SUB AL,AH ;需在字符串尾部补充字符个数
MOV CL,AL ;需填充字符个数
ADD BL,N0 ;BX指向字符串尾部
MOV AL,N2 ;用输入字符填充
RE_FILL:
MOV [BX],AL
INC BX
LOOP RE_FILL
MOV CH,0
MOV CL,N1
MOV BX,OFFSET BUF
ADD BX,2
EQU1:
MOV CH,0
MOV CL,N1
MOV BX,OFFSET BUF
ADD BX,2
CUT:
MOV AH,2
MOV DL,[BX]
INT 21H
INC BX
LOOP CUT
EXIT1:
MOV AH,4CH
INT 21H
RET
MAIN ENDP
CODE ENDS
END
1、字符串长度小于int时运行结果:
2、字符串长度大于int时:
3、字符串长度等于int时:
展开阅读全文