修改下列代码,要求实现:如果字符串2长度大于等于字符串1,则输出字符串1,如果字符串2长度小于字符串1,则补齐字符串2长度到字符串1,补足部分XXXX.DATA SEGMENT TIP1 DB 0DH,0AH, 'PLEASE INPUT STRING1 END BY ENTER:' ,'$' TIP2 DB 0DH,0AH, 'PLEASE INPUT STRING1 END BY ENTER:' ,'$' TIP3 DB 0DH,0AH, 'MATCH','$' TIP4 DB 0DH,0AH, 'NOT MATCH','$' TIP5 DB 0DH,0AH, 'PRESS ENTER TO EXIT ','$' BUFF1 DB 101,0,101 DUP(0) BUFF2 DB 101,0,101 DUP(0) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV ES,AX;数据段和堆栈段初始化 LEA DX,TIP1 MOV AH,9 INT 21H;DISPLAY TIP1 LEA DX,BUFF1 MOV AH,0AH INT 21H;输入第一个字符串到BUFF1缓冲区 LEA DX,TIP2 MOV AH,9 INT 21H LEA DX,BUFF2 MOV AH,0AH INT 21H;输入第二个字符串到BUFF2缓冲区 LEA SI,BUFF1;第一个字符串首址给SI LEA DI,BUFF2;第二个字符串首址给DI MOV CX,53 CLD;地址递增 REPZ CMPSB;字符串比较 JZ MATCH;相等输出MATCH LEA DX,TIP4 MOV AH,9 INT 21H;不等输出NOT MATCH JMP EXIT MATCH: LEA DX,TIP3 MOV AH,9 INT 21H;DISPLAY TIP1 JMP EXIT EXIT: LEA DX,TIP5 MOV AH,9 INT 21H MOV AH,1 INT 21H CMP AL,13 JZ AA JMP START AA: MOV AH,4CH INT 21H CODE ENDS END START
时间: 2023-11-14 18:05:02 浏览: 64
修改后的代码如下:
```
DATA SEGMENT
TIP1 DB 0DH,0AH,'PLEASE INPUT STRING1 END BY ENTER:','$'
TIP2 DB 0DH,0AH,'PLEASE INPUT STRING2 END BY ENTER:','$'
TIP3 DB 0DH,AH,'MATCH','$'
TIP4 DB 0DH,0AH,'NOT MATCH'
TIP5 DB 0DH,0AH,'PRESS ENTER TO EXIT','$'
BUFF1 DB 101,0,101 DUP(0)
BUFF2 DB 101,0,101 DUP(0)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV ES,AX ; 数据段和堆栈段初始化
LEA DX,TIP1
MOV AH,9
INT 21H ; 显示提示信息1
LEA DX,BUFF1
MOV AH,0AH
INT 21H ; 输入第一个字符串到BUFF1缓冲区
LEA DX,TIP2
MOV AH,9
INT 21H ; 显示提示信息2
LEA DX,BUFF2
MOV AH,0AH
INT 21H ; 输入第二个字符串到BUFF2缓冲区
LEA SI,BUFF1 ; 第一个字符串首址给SI
LEA DI,BUFF2 ; 第二个字符串首址给DI
MOV CX,100 ; 设定比较长度为100
CLD ; 地址递增
REPZ CMPSB ; 字符串比较
JZ MATCH ; 相等输出MATCH
; 不相等,判断字符串2长度
MOV CX,0 ; 清零CX
MOV AL,BUFF2[1] ; 获取字符串2长度
SUB AL,30H ; 转换成数字
CMP AL,100 ; 判断长度是否大于100
JGE MATCH ; 如果大于等于100,则直接输出MATCH
; 字符串2长度不足100,补齐长度
MOV CL,AL ; 字符串2长度赋值给CX
MOV CH,0 ; CX的高位清零
MOV AL,' ' ; 空格填充
SUB CX,100 ; 计算需要填充的长度
JZ MATCH ; 如果不需要填充,则直接输出MATCH
; 开始填充
ADD DI,CX ; DI指向需要填充的位置
REP STOSB ; 填充
JMP MATCH ; 输出MATCH
EXIT:
LEA DX,TIP5
MOV AH,9
INT 21H ; 显示提示信息5
MOV AH,1
INT 21H ; 等待用户按下回车键
CMP AL,13
JZ AA
JMP START
AA:
MOV AH,4CH
INT 21H
CODE ENDS
END START
```
修改说明:
1. 将比较长度从53改为100,以适应更长的字符串。
2. 在比较不相等时,判断字符串2的长度,如果小于100,则补齐长度。
3. 填充使用了字符串操作指令STOSB。
阅读全文