【汇编语言】统计字符个数,二进制显示
【汇编语言】统计字符个数,二进制显示
微机原理实验题目
题目
解答
.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