比较两个字符串,找出他们不相匹配的位置

yyx230 2010-07-11 12:02:39
用汇编语言设计程序,比较两个字符串str1和str2,找出他们不相匹配的位置,可以使用指令repe cmpsb。
例如比较str1:ABCde,str2:ABCge,最终输出结果是3,表示两字符串不同的字符是第3个(字符串是从0开始标号的),该如何实现?
请各位大侠帮忙写一个程序,感激不尽!!
...全文
381 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hrhy256 2010-07-11
  • 打赏
  • 举报
回复 1
DATA SEGMENT
STR1 DB 'ABCde'
STR2 DB 'ABCge'
DATA ENDS

CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA
START:MOV AX,DATA
MOV DS,AX
MOV ES,AX
LEA SI,STR1
LEA DI,STR2
MOV CX,OFFSET STR2-OFFSET STR1
CLD
NEXT: REPE CMPSB
JZ DONE
MOV DX,OFFSET STR2-OFFSET STR1
SUB DX,CX
SUB DX,1
OR DL,30H
MOV AH,2
INT 21H
JMP NEXT
DONE: MOV AH,4CH
INT 21H
CODE ENDS
END START
yyx230 2010-07-11
  • 打赏
  • 举报
回复
急用。。。。自己顶一个先
masmaster 2010-07-11
  • 打赏
  • 举报
回复
小于10个字符的, 要是大于10个字符的还需要HEX到DEC的转换。

assume cs:code
data segment
str1 db 'abcdef'
str2 db 'abcgef'
data ends
code segment
start:
mov ax,data
mov ds,ax
mov si,offset str1
mov di,offset str2
mov cx,offset str2-offset str1
s: mov al,[si]
cmp al,[di]
jz s1
jmp ok
s1: inc si
inc di
loop s

ok: mov dx,si
inc dx
or dl,30h
mov ah,2
int 21h

mov ah,4ch
int 21h
code ends
end start

yyx230 2010-07-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 masmaster 的回复:]
小于10个字符的, 要是大于10个字符的还需要HEX到DEC的转换。

Assembly code

assume cs:code
data segment
str1 db 'abcdef'
str2 db 'abcgef'
data ends
code segment
start:
mov ax,data
……
[/Quote]
你的程序没用到指令repe cmpsb,但功能还是实现了,谢谢
yyx230 2010-07-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hrhy256 的回复:]
DATA SEGMENT
STR1 DB 'ABCde'
STR2 DB 'ABCge'
DATA ENDS

CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA
START:MOV AX,DATA
MOV DS,AX
MOV ES,AX
LEA SI,STR1
LEA DI,STR2
MOV CX,OFFSET ST……
[/Quote]
谢谢你啦 程序写得很好 正是我所需要的

21,496

社区成员

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

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