一年没用了 请教:字符串比较

z_l 2007-11-21 04:34:14
实现功能:从键盘输入“yes”,则输出“Y”;如果不是yes(或者说输入“no”),则输出“N”。

程序如下:不知有什么毛病?

datarea segment
string db 10,0
mess1 db 10 dup(?)
mess2 db 'yes'

input db 'Input: ','$'
clrf db 13,10,'$'
datarea ends

prognam segment
assume cs:prognam,ds:datarea,es:datarea
start:
push ds
sub ax,ax
push ax
mov ax,datarea
mov ds,ax
mov es,ax


lea dx,input ; 输入字符串
mov ah,09h
int 21h

mov ah,0ah
lea dx,string
int 21h

lea dx,clrf ; 输出回车换行
mov ah,09h
int 21h

lea si,mess1
lea di,mess2
mov cx,10
repz cmpsb ; 字符串比较
jz link

mov dl,'N'
jmp notlink
link:
mov dl,'Y'
notlink:
mov ah,02h
int 21h

mov ah,4ch
int 21h

prognam ends
end start
...全文
78 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
大熊猫侯佩 2007-11-21
  • 打赏
  • 举报
回复
关键在于你比较的长度cx,最好格式化后再比较。
大熊猫侯佩 2007-11-21
  • 打赏
  • 举报
回复




datarea segment
string db 10,0
mess1 db 10 dup(0)
mess2 db 'yes',13

input db 'Input: ', '$ '
clrf db 13,10, '$ '
datarea ends

prognam segment
assume cs:prognam,ds:datarea,es:datarea
start:
push ds
sub ax,ax
push ax
mov ax,datarea
mov ds,ax
mov es,ax


lea dx,input ; 输入字符串
mov ah,09h
int 21h

mov ah,0ah
lea dx,string
int 21h

lea dx,clrf ; 输出回车换行
mov ah,09h
int 21h

lea si,mess1
lea di,mess2
mov cx,3
repz cmpsb ; 字符串比较
jz link

mov dl, 'N'
jmp notlink
link:
mov dl, 'Y'
notlink:
mov ah,02h
int 21h

mov ah,4ch
int 21h

prognam ends
end start

21,459

社区成员

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

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