鱼丸醋面 发表于 2012-9-28 00:20:15

求助大神帮我解决此题

比较两个输入的字符串是否完全相同,是则显示YES,否则显示NO。要求:提示输入字符串1;      输入字符串1,Enter键结束输入并换行;      提示输入字符串2;      输入字符串2,Enter键结束输入并换行;      显示判断结果。



求大神们帮帮忙

メ㊣逆ご帅☆ 发表于 2012-9-28 00:20:16

鱼丸醋面 发表于 2012-9-29 22:38 static/image/common/back.gif
加 油!!!^^

修改了下你自己看下满意不assume cs:cseg,ds:dseg

dseg segment               
                                   db 100 dup (0)
                   db 100 dup (0)
      szyes      db 'Yes',0dh,0ah,'$'
      szno      db 'NO',0dh,0ah,'$'
szText1 db 'Please input first string and press Enter';提示信息
szText2 db 'Please input Second string and press Enter';提示信息   
dseg ends

cseg segment
start:
                call QP
                call XS1
      mov ax,dseg
      mov ds,ax
      mov si,0
      mov di,100

do:      
      mov ah,1
      int 21h
      cmp al,0dh                ;判断是否为回车键
      je str_next
      mov ,al
      inc si
      jmp do
      
str_next:
      call newline
                call QP
                call XS2
do2:
      mov ah,1
      int 21h
      cmp al,0dh
      je bijiao
      mov ,al
      inc di
      jmp do2
      
bijiao:
      call newline
      mov ch,0
      mov si,0
      mov di,100
s:
      mov cl,
      cmp cl,
      jne no
      jcxz yes
      inc si
      inc di
      jmp s
      
no:
      mov dx,offset szno
      mov ah,9h
      int 21h
      jmp over
      
yes:
      mov dx,offset szyes
      mov ah,9h
      int 21h
      
over:
      mov ah,1
      int 21h
      mov ax,4c00h
      int 21h

;换行子程序
;说明:直接引用即可
newline proc
   push ax
   push dx         
   mov dl,0dh
   mov ah,2h
   int 21h
   mov dl,0ah
   mov ah,2h
   int 21h
          pop dx
   pop ax         
   ret
newline endp
;清屏子程序
QP proc
        push cx;虽然这一系列保存没什么用,但是可以增加子程序独立性
        push ax
        push ds
        push si
       
       mov cx,4000;字符串个数
       mov ax,0b800h;显存地址
       mov ds,ax
       mov si,0
lls:
        mov byte ptr ds:,0;放入显存
        add si,2;指向下一个显存
        loop lls
       
        pop si
        pop ds
        pop ax
        pop cx
        ret
QP endp
XS1 proc
   push ax
   push ds
   push bx
   push es
   push si
   push cx

   mov ax,0b800h
   mov ds,ax
   mov bx,0
   mov ax,dseg
   mov es,ax
   mov si,offset szText1
   mov cx,41;字符数
ss1:
   mov al,es:
   mov byte ptr ,al;放入显存
   add bx,2;指向下一个显存
   inc si;指向下一个字符串
   loop ss1
   
   pop cx
   pop si
   pop es
   pop bx
   pop ds
   pop ax
   ret
XS1 endp
XS2 proc
   push ax
   push ds
   push bx
   push es
   push si
   push cx

   mov ax,0b800h
   mov ds,ax
   mov bx,0
   mov ax,dseg
   mov es,ax
   mov si,offset szText2
   mov cx,42;字符数
ss2:
   mov al,es:
   mov byte ptr ,al;放入显存
   add bx,2;指向下一个显存
   inc si;指向下一个字符串
   loop ss2
   
   pop cx
   pop si
   pop es
   pop bx
   pop ds
   pop ax
   ret
XS2 endp

cseg ends
end start

补充内容 (2012-9-29 23:29):
嗯。清屏用INT 10 也可以实现好像,具体你自己改

永远前进的人 发表于 2012-9-28 00:21:48

什么问题啊啊

鱼丸醋面 发表于 2012-9-28 00:27:19

wwl 发表于 2012-9-28 00:21 static/image/common/back.gif
什么问题啊啊

比较两个输入的字符串是否完全相同,是则显示YES,否则显示NO。

要求:提示输入字符串1;

      输入字符串1,Enter键结束输入并换行;

      提示输入字符串2;

      输入字符串2,Enter键结束输入并换行;
      显示判断结果

您能帮帮忙吗

向往 发表于 2012-9-28 01:14:32

#include <stdio.h>
#include <string.h>
int main()
{
char str_1, str_2;
printf("请输入字符串1:");
scanf("%s", str_1);
printf("请输入字符串2:");
scanf("%s", str_2);
if (strcmp(str_1, str_2) == 0)
{
printf("Yes\n");
}
else
{
printf("No\n");
}
return 0;
}

向往 发表于 2012-9-28 01:18:44

向往 发表于 2012-9-28 01:14 static/image/common/back.gif



//可以使用 strcmp() 函数来比较字符串string1和string2大小.
//返回值< 0, 表示string1小于string2;
//返回值为0, 表示string1等于string2;
//返回值> 0, 表示string1大于string2.



#include <stdio.h>
#include <string.h> // strcmp() 函数
int main()
{
      char str_1, str_2;
      printf("请输入字符串1:");
      scanf("%s", str_1);
      printf("请输入字符串2:");
      scanf("%s", str_2);

      if (strcmp(str_1, str_2) == 0)
      {
                printf("Yes\n");
      }
      else
      {
                printf("No\n");
      }

      return 0;
}

贝壳 发表于 2012-9-28 03:20:00

/**************************************************
*********输入两个字符串并比较它们是否相等********
**************************************************/
#include <string>
#include <iostream>
#include <stdlib.h>
extern "C"
#include "string.h"

using namespace std ;

int main()
{
    string s1, s2;
    int result;
    cout << "请输入s1:\n";
    getline(cin,s1, '\n');             //输入s1,并以回车为结束符。
    cout << "请输入s2:\n";
    getline(cin,s2, '\n');             //输入s2,并以回车为结束符。
    cout << "你输入的s1是: " << s1 << endl;
    cout << "你输入的s2是: " << s2 << endl;

    result = strcmp(s1.c_str(), s2.c_str());    //比较s1和s2是否相等,返回值为0则相等。可参考MSDN里strcmp的用法
    if (result > 0 || result < 0)
      cout << "s1和s2是否相等:NO!\n";
    else
      cout << "s1和s2是否相等:YES!\n";

    system("pause");
    return 0;
}



补充内容 (2012-9-28 03:23):
以上为C++代码。

鱼丸醋面 发表于 2012-9-28 08:56:31

RE: 求助大神帮我解决此题

向往 发表于 2012-9-28 01:18 static/image/common/back.gif


您这用的是C语言啊,我想要的是用汇编语言做出此题,不过还是谢谢你了

鱼丸醋面 发表于 2012-9-28 08:57:31

RE: 求助大神帮我解决此题

贝壳 发表于 2012-9-28 03:20 static/image/common/back.gif
补充内容 (2012-9-28 03:23):
以上为C++代码。

是啊,你能帮我用汇编做一下吗

贝壳 发表于 2012-9-28 15:51:56

鱼丸醋面 发表于 2012-9-28 08:57 static/image/common/back.gif
是啊,你能帮我用汇编做一下吗

不好意思。我不会。VC++可以反汇编,你可以参考一下反汇编的结果。不过那个结果不能直接用。

橙子 发表于 2012-9-28 16:21:22

来人呀帮帮他吧。{:5_92:}

メ㊣逆ご帅☆ 发表于 2012-9-28 20:00:09

哦,WIN32汇编倒是可以,你等等,我写写

メ㊣逆ご帅☆ 发表于 2012-9-28 20:48:32

WIN32汇编实现,16位的我没时间了。

メ㊣逆ご帅☆ 发表于 2012-9-28 21:04:01

对了,我相同就弹窗显示“相同”,忘了楼主的要求,你自己改成YES和NO吧

鱼丸醋面 发表于 2012-9-28 23:51:42

贝壳 发表于 2012-9-28 15:51 static/image/common/back.gif
不好意思。我不会。VC++可以反汇编,你可以参考一下反汇编的结果。不过那个结果不能直接用。

好的,还是谢谢你了

鱼丸醋面 发表于 2012-9-28 23:52:21

橙子 发表于 2012-9-28 16:21 static/image/common/back.gif
来人呀帮帮他吧。

好人啊,还是个美女啊……嘿嘿

鱼丸醋面 发表于 2012-9-28 23:53:16

メ㊣逆ご帅☆ 发表于 2012-9-28 21:04 static/image/common/back.gif
对了,我相同就弹窗显示“相同”,忘了楼主的要求,你自己改成YES和NO吧

好人会有好报的,太感谢你了

鱼丸醋面 发表于 2012-9-29 12:37:06

メ㊣逆ご帅☆ 发表于 2012-9-28 20:48 static/image/common/back.gif
WIN32汇编实现,16位的我没时间了。

这个用的好像不是汇编语言吧,不过还是谢谢你了

鱼丸醋面 发表于 2012-9-29 12:37:37

继续求助中……

メ㊣逆ご帅☆ 发表于 2012-9-29 12:59:37

鱼丸醋面 发表于 2012-9-29 12:37 static/image/common/back.gif
这个用的好像不是汇编语言吧,不过还是谢谢你了

32位的汇编,大小6KB,如果用其他语言随便一个指令都会20K以上
页: [1] 2 3
查看完整版本: 求助大神帮我解决此题