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

  • 6
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值