汇编语言的一道题,能帮我看看怎么改吗?
题目是:设有一段英文,其字符变量名为ENG,并以$字符结束。试编写一程序,查对单词SUN在该文中的出现次数,并以格式“SUN:xxxx”显示出次数。
在网上找了一段代码,放到8086里编译时出现两个错误 :1.错误参数 LEA SI,TOP;2.非法指令:TOP LABLE WORD或者参数错误
代码如下:
DATAS SEGMENT
;此处输入数据段代码
ENG DB 'ABCDEFGHIJKLMNOPQRSTUVWXYZ$'
SUN DB 'JKL$'
DB 6 DUP (?)
TOP LABEL WORD
DB '$'
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
MOV ES,AX
XOR AX,AX ;保存出现次数
LEA BX,ENG
CLD
L1: MOV CX,4 ;这里比SUN的长度大1位
MOV SI,BX
LEA DI,SUN
REPE CMPSB
DEC SI ;回退一个字节
JCXZ L3 ;如果比较次数用完,表示匹配
INC BX
L2: CMP BYTE PTR [BX], '$'
JNE L1
JMP SHORT L4
L3: INC AX
MOV BX,SI
JMP SHORT L2
L4: LEA SI,TOP
MOV BX,10
L5: XOR DX,DX ;转换为十进制字符
DIV BX
OR DL,30H
DEC SI
MOV [SI],DL
CMP AX,0
JNE L5
MOV AH,9
LEA DX,SUN
INT 21H
MOV DX,SI
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START