DATAS SEGMENT
STRING1 DB 10H,?,10 DUP(?)
;STRING1 单元中分配了存储单元(DB代表单位是字节)
;且第一个单元存放的是10H
;然后?代表只是分配了存储单元,但是没有定义初值
;10 dup (?)表示分配了连续10个存储单元(字)
;也就是都只分配了存储单元,但是没有初值
;分配后为:10,?,?????????
STRING2 DB 10H,?,10 DUP(?)
D1 DB 'MATCH$'
D2 DB 'NO MATCH$'
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,ES:DATAS,DS:DATAS ;CODES 代表代码段名字,DATAS代表数据段名字
START:
MOV AX,DATAS ;把数据传给AX
MOV DS,AX ;把AX的数据给DS数据段
LEA DX,STRING1 ;把STRING1的偏移地址放入DX
MOV AH,0AH ;键盘输入至缓冲区,DS:DX=缓冲区首
INT 21H ;结束指令执行
MOV DL,0AH ;这里的0AH是换行符的ASCII码
MOV AH,02H ;把DL的待输出的字符的ASCII码显示出来(一个字符)
INT 21H ;结束指令执行
MOV AX,DATAS
MOV DS,AX
LEA DX,STRING2
MOV AH,0AH ;键盘输入至缓冲区
INT 21H
MOV DL,0AH
MOV AH,02H ;显示一个字符,DL=待输出的字符的ASCII码
INT 21H ;结束指令执行
MOV AX,DATAS
MOV ES,AX
LEA SI,STRING1
LEA DI,STRING2
MOV AL,ES:[SI+1]
MOV BL,DS:[DI+1]
CMP AL,BL
JNZ NO
MOV CL, [SI+1]
MOV CH,0 ;
INC SI
INC DI
CM:
INC SI
INC DI
MOV AL,ES:[SI]
MOV BL,DS:[DI]
CMP AL,BL ;比较两个字符,相同不跳
JNZ NO
LOOP CM
LEA DX,D1
MOV AH,09H ;字符串输出,DS:DX=字符串首
INT 21H ;结束指令执行
JMP EXIT
NO:
LEA DX,D2
MOV AH,09H ;字符串输出,DS:DX=字符串首
INT 21H
EXIT:
MOV AH,4CH ;带返回码结束,AL=返回码
INT 21H
CODES ENDS
END START
2020-10-27
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。