Loading

【汇编语言】统计字符个数,二进制显示

【汇编语言】统计字符个数,二进制显示

微机原理实验题目

题目

解答

.486
DATAS SEGMENT USE16
	BUF   DB  'I AM A STUDENT'	;含有B,C,D的个数为2
	NUM   DB  0               	;统计42H至45H的个数
	LEN   EQU $-BUF           	;获得BUF的长度
DATAS ENDS

CODES SEGMENT USE16
	      ASSUME CS:CODES,DS:DATAS
	START:
	      MOV    AX,DATAS
	      MOV    DS,AX
	      MOV    AH,BUF
	      MOV    BYTE PTR [BX],AH
	      MOV    CX,LEN	;遍历字符串,循环1的次数为字符串长度
	AGAIN1:
	      MOV    SI,CX
	      CMP    BYTE PTR [BX+SI-1],42H ;基址加变址寻址,利用CX--的特性
	      JC     NEXT
	      CMP    BYTE PTR [BX+SI-1],45H
	      JA     NEXT
	      INC    NUM;NUM++的条件是42H<x<45H,即x=B,C,D
	NEXT: 
	      LOOP   AGAIN1
	      MOV	 CX,8   ;循环2的次数为8,因为显示为8位二进制数
	AGAIN2:
		  SHL	 NUM,1
		  MOV    DL,30H     ;先默认DL为30H,即显示0
		  JNC	 ShowZero	;如果C标志为0,那么接下来就不将DL+1
		  ADD	 DL,01H			
    ShowZero:
	      MOV    AH,02H  
	      INT 	 21H  	  
		  LOOP	 AGAIN2      

	      MOV    AH,4CH
	      INT    21H
CODES ENDS
    END START


posted @ 2022-04-24 20:58  Baiyug  阅读(126)  评论(0编辑  收藏  举报