主题:求助
zyz6958973
[专家分:0] 发布于 2007-06-04 22:40:00
比较两个字符串的大小,从键盘输入两个字符串,比较两个字符串的大小。如果第一个字符串比第二个字符串大,则显示1;如果两个字符串相等,则显示0;如果第一个字符串比第二个字符串小,则显示-1。拜托,很急的
回复列表 (共2个回复)
沙发
塞北江南 [专家分:1350] 发布于 2007-06-05 13:16:00
.model small
.stack
.data
string1 db 'Please input the first string:$'
string2 db 0ah,0dh,'Please input the second string:$'
str1 db 30,0, 30 dup(?),'$'
str2 db 30,0, 30 dup(?),'$'
.code
dispchar macro char ;定义一个显示字符的宏
mov dl,char
mov ah,2
int 21h
endm
.startup
mov ax,ds
mov es,ax
mov dx,offset string1
mov ah,9
int 21h
mov dx,offset str1 ;输入第一个字符串
mov ah,10
int 21h
mov dx,offset string2
mov ah,9
int 21h
mov dx,offset str2 ; 输入第二个字符串
mov ah,10
int 21h
dispchar 10 ;输出一个换行符
mov al,str1[1] ;第一个字符串的长度
mov bl,str2[1] ;第二个字符串的长度
.if al>bl ;若第一个字符串的长度大,则第一个字符串大于第二个
dispchar '1'
.elseif al<bl ;若第一个字符串的长度小,则第一个字符串小
dispchar '-'
dispchar '1'
.else ;二者长度相等则,从前到后一个个字符逐一比较
lea si,str1[2]
lea di,str2[2]
mov ch, 0
mov cl,str1[1]
repe cmpsb ;找到不同的字符为止
.if zero? ;若没有不同字符,则二者相等
dispchar '0'
.elseif sign? ;符号位SF为1,说明1串小于2串
dispchar '-'
dispchar '1'
.else ;否则1串大于2串
dispchar '1'
.endif
.endif
.exit 0
end
;输入12345678和123459,输出1
;输入12345678和123456789,输出-1
;输入1234和1234,输出0
;输入1234567和1233567,输出1
板凳
zyz6958973 [专家分:0] 发布于 2007-06-05 22:53:00
Thank you!
我来回复