汇编中02h和09h的区别
MOV AH,02H(mov ah 09h)
INT 21H
02h是输出单个字符,⽽ 09h是输出以‘$’结尾的字符串
例⼦:
02h的输出
DATA SEGMENT
BUF1 DB 'EEEEEENENEN.'
LEN1=$-BUF1
BUF2 DB 'EEEEEENANAN!'
LEN2=$-BUF2
DATA ENDS
CODE SEGMENT
ASSUME  CS: CODE, DS: DATA
START:MOV AX, DATA
MOV DS,AX
LEA SI,BUF1
;MOV CX,LEN1
;CALL CMMP
LEA DI,BUF2
MOV CX,LEN1
CALL CMMP
MOV AH,4CH
INT 21H
CMMP PROC NEAR;⼦程序
;利⽤主程序调⽤⼦程序,⽐较BUF1和BUF2缓冲区中不相等的字符,并将不相等的字符显⽰出来.
L:MOV DL,[SI]
CMP DL,[DI]
JZ L1
MOV AL,'Y'
MOV [SI],AL
MOV AH,02H;单个字符的输出
INT 21H
L1:INC SI
INC DI
LOOP L
调用子程序的例子RET
CMMP ENDP
CODE ENDS
END  START
09h的输出
DATA SEGMENT
BUF1 DB 'DSSSSSSSNNNs',0AH,0DH,'$'
LEN1=$-BUF1
BUF2 DB 'WERTYUGJINNNN!','$ '
LEN2=$-BUF2
DATA ENDS
CODE SEGMENT
ASSUME  CS: CODE, DS: DATA
START:MOV AX, DATA
MOV DS,AX
LEA SI,BUF1
MOV CX,LEN1
CALL CMMP
LEA SI,BUF2
MOV CX,LEN2
CALL CMMP
MOV AH,4CH
INT 21H
CMMP PROC
;⼦程序搜索指定字符缓冲区中是否有N,如果有⽤Y替代。调⽤⼦程序将BUF1,BUF2,BUF3中的N全部⽤Y替代.    MOV DX,SI
L:CMP BYTE PTR[SI],'N'
JNZ L1
MOV AL,'Y'
MOV [SI],AL
L1:INC SI
LOOP L
MOV AH,09H;输出字符串"DSSSSSSSYYYs"和"WERTYUGJIYYY!"
INT 21H
RET
CMMP ENDP
CODE ENDS
END  START

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。