汇编中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
		  

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读