当前位置: 代码迷 >> 汇编语言 >> 一年没用了 请问:字符串比较
  详细解决方案

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

热度:3983   发布时间:2013-02-26 00:00:00.0
一年没用了 请教:字符串比较
实现功能:从键盘输入“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

------解决方案--------------------------------------------------------


Assembly code
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
  相关解决方案