求汇编程序一个~

来源:百度知道 编辑:UC知道 时间:2024/05/10 22:53:52
在STRBUF字符串中寻找STRING中指定的两字符出现的个数
数据段定义如下
DSEG SEGMENT PARA 'Data'
STRBUF DB 'ASASAASASSASSAASASAS'
COUNT EQU $-STRBUF
STRING DB 'AS'
MESSG DB "THE NUMBER OF 'AS' IS : "
NUM DB ?
DB 0AH,0DH,'$‘
DSEG ENDS
如果可以还希望解释一下代码~~水平不行啊...

SSEG SEGMENT STACK ;定义堆栈段
STK DB 20 DUP(?)
SSEG ENDS
DSEG SEGMENT PARA 'Data' ;定义数据段

STRBUF DB 'ASASAASASSASSAASASAS'
COUNT EQU $-STRBUF ;COUNT为STRBUF字符串的长度
STRING DB 'AS'
MESSG DB 'THE NUMBER OF 'AS' IS :$ '
NUM DB ? ;NUM用来存储两字符出现的个数
DB 0AH,0DH,'$' ;0AH、0DH为回车、换行
的ASCII码

DSEG ENDS
CSEG SEGMENT ;定义代码段
ASSUME CS:CSEG,DS:DSEG,SS:SSEG
START: MOV AX,DSEG ;装入DS
MOV DS,AX

MOV CH,COUNT ;将STRBUF字符串的长度给CH
MOV CL,00H ; CL作为字符出现次数计数器
MOV DI,OFFSET STRBUF ;使DI指向STRBUF字符串

L0: MOV SI,OFFSET STRING;使DI指向STRING字符串
MOV BX,DI
MOV AL,[SI] ;比较第一个字符,即A
CMP AL,[BX]
JNE L1 ;第一个字符不相等,跳