求助,很简单的问题

saoyu 2002-11-28 12:12:30
我是一个刚学汇编不久的新手,写了一个字符串比较的16位程序,想统计两个字符串不匹配的字符个数并显示,并把这些字符串1中的不匹配的字符在内存中的地址送入一个数组中,但是出错,但是又不知道错在何处,各位帮我看看吧,谢谢了
DATA SEGMENT
STR1 DB 'ABCDEFGHIJKLMNOPQRST'
ADDR DB 20 dup(?)
DATA ENDS
EXTR SEGMENT
STR2 DB 'ABCDEFGHIJKLMNOPQRSI'
EXTR ENDS
CODE SEGMENT
ASSUME DS:DATA,ES:EXTR,CS:CODE
MOV AX,DATA
MOV DS,AX
MOV AX,EXTR
MOV ES,AX
MOV DL,0
LEA SI,STR1
LEA DI,STR2
LEA BX,ADDR
CLD
MOV CX,20
LOP1: REPZ CMPSB
JZ EQU1
TEST CX,1
JZ EXIT
DEC SI
MOV [BX],SI
INC BX
INC DL
INC SI
JMP SHORT LOP1
EQU1: ;MOV ADDR,0FFFFH
EXIT:
ADD DL,30H
MOV AH,02H
INT 21H
CODE ENDS
END
...全文
26 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
clumsy 2002-11-28
  • 打赏
  • 举报
回复
你的程序没有 "结束程序并返回到dos的指令":
mov ah, 4ch
int 21h
saoyu 2002-11-28
  • 打赏
  • 举报
回复
不好意思,我的意思不是程序汇编,连接时出错,是exe文件在执行时某个code segment内的地址指令出错
why_why 2002-11-28
  • 打赏
  • 举报
回复
哦,多了个main endp, 把它删了吧:)
why_why 2002-11-28
  • 打赏
  • 举报
回复
DATA SEGMENT
STR1 DB 'ABCDEFGHIJKLMNOPQRST'
ADDR DB 20 dup(?)
DATA ENDS

EXTR SEGMENT
STR2 DB 'ABCDEFGHIJKLMNOPQRSI'
EXTR ENDS

CODE SEGMENT
ASSUME CS:CODE,DS:DATA ;,ES:EXTR
START: ;添这个
MOV AX,DATA
MOV DS,AX
MOV AX,DATA
MOV ES,AX
MOV DL,0
LEA SI,STR1
LEA DI,STR2
LEA BX,ADDR
CLD
MOV CX,20
LOP1: REPZ CMPSB
JZ EQU1
TEST CX,1
JZ EXIT1
DEC SI
MOV [BX],SI
INC BX
INC DL
INC SI
JMP SHORT LOP1
EQU1: ;MOV ADDR,0FFFFH
EXIT1:
ADD DL,30H
MOV AH,02H
INT 21H
MAIN ENDP
CODE ENDS
END START ;end 后添 start对应前面的 start

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧