您当前的位置:首页 > 计算机 > 编程开发 > 汇编

汇编中02h和09h的区别

时间:03-11来源:作者:点击数:

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
		  

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门