汇编语言中怎样比较两个字符串的大小,返回大于,小于或都是等于,请各位帮忙了...

lovexin1314520 2010-05-14 08:35:21
汇编语言中怎样比较两个字符串的大小,返回大于,小于或都是等于,请各位帮忙了...
...全文
859 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovexin1314520 2010-05-18
  • 打赏
  • 举报
回复
谢谢哈...[Quote=引用 6 楼 longzhi89727 的回复:]
逻辑上,可以先求两者的字符串长度;若不等长,自然地可以认为长者为大;等长度,可以 repe cmpsb 串指令进行比较,看最后的 ZF 和 CF:ZF=1 相等,否则若CF=0源串大,CF=1目的串大
[/Quote]
「已注销」 2010-05-17
  • 打赏
  • 举报
回复
逻辑上,可以先求两者的字符串长度;若不等长,自然地可以认为长者为大;等长度,可以 repe cmpsb 串指令进行比较,看最后的 ZF 和 CF:ZF=1 相等,否则若CF=0源串大,CF=1目的串大
lovexin1314520 2010-05-15
  • 打赏
  • 举报
回复
非常感谢...[Quote=引用 4 楼 dz216 的回复:]
DATAS SEGMENT
STR1 DB 0AH,0DH,'input X:$'
STR2 DB 0AH,0DH,'input Y:$'
STR3 DB 0AH,0DH,'X=Y$'
STR4 DB 0AH,0DH,'X>Y$'
STR5 DB 0AH,0DH,'X<Y$'
BUF1 DB 20
DB ?
DB 20 DUP(0)
BUF2 DB 20
DB ?
……
[/Quote]
品瑜 2010-05-14
  • 打赏
  • 举报
回复
DATAS SEGMENT
STR1 DB 0AH,0DH,'input X:$'
STR2 DB 0AH,0DH,'input Y:$'
STR3 DB 0AH,0DH,'X=Y$'
STR4 DB 0AH,0DH,'X>Y$'
STR5 DB 0AH,0DH,'X<Y$'
BUF1 DB 20
DB ?
DB 20 DUP(0)
BUF2 DB 20
DB ?
DB 20 DUP(0)
X DW ?
Y DW ?
DATAS ENDS

STACKS SEGMENT
DB 200 DUP(0)
STACKS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX

LEA DX,STR1
MOV AH,9
INT 21H

LEA DX,BUF1
MOV AH,10
INT 21H

LEA DX,STR2
MOV AH,9
INT 21H

LEA DX,BUF2
MOV AH,10
INT 21H

MOV SI,2
MOV DI,2
L1:
MOV AL,BUF1[SI]
CMP AL,BUF2[DI]
JE L2
JG L3
JL L4
L2:
MOV AL,BUF1[SI]
CMP AL,0DH
JE L5
INC SI
INC DI
JMP L1
L3:
LEA DX,STR4
MOV AH,9
INT 21H
JMP EXIT
L4:
LEA DX,STR5
MOV AH,9
INT 21H
JMP EXIT
L5:
LEA DX,STR3
MOV AH,9
INT 21H
JMP EXIT

EXIT:
MOV AH,4CH
INT 21H


CODES ENDS
END START
zara 2010-05-14
  • 打赏
  • 举报
回复
逻辑上,可以先求两者的字符串长度;若不等长,自然地可以认为长者为大;等长度,可以 repe cmpsb 串指令进行比较,看最后的 ZF 和 CF:ZF=1 相等,否则若CF=0源串大,CF=1目的串大
pandazhong 2010-05-14
  • 打赏
  • 举报
回复
data segment
msg1 db '999', 0
msg2 db '998', 0
samemsg db 'same','$'
diffmsg db 'diff', '$'
data ends

stack segment stack para 'stack' stack
s db 1000 dup( 0 )
stack ends

code segment
assume cs:code, ds:data, ss:stack

start:
mov ax, data
mov ds, ax
mov es, ax

mov si, offset msg1
mov di, offset msg2
cld
mov cx, offset msg2
repz cmpsb

cmp cx, 0
jz same
mov dx, offset diffmsg
mov ah, 9
int 21h
jmp exit

same:
mov dx, offset samemsg
mov ah, 9
int 21h

exit:
mov ah, 4ch
int 21h

code ends
end start
lovexin1314520 2010-05-14
  • 打赏
  • 举报
回复
能否具体点呢?谢谢...[Quote=引用 2 楼 zara 的回复:]
逻辑上,可以先求两者的字符串长度;若不等长,自然地可以认为长者为大;等长度,可以 repe cmpsb 串指令进行比较,看最后的 ZF 和 CF:ZF=1 相等,否则若CF=0源串大,CF=1目的串大
[/Quote]

21,496

社区成员

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

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