鱼C论坛

 找回密码
 立即注册
查看: 4728|回复: 43

求助大神帮我解决此题

[复制链接]
发表于 2012-9-28 00:20:15 | 显示全部楼层 |阅读模式
5鱼币
比较两个输入的字符串是否完全相同,是则显示YES,否则显示NO。
要求:提示输入字符串1;
      输入字符串1,Enter键结束输入并换行;
      提示输入字符串2;
      输入字符串2,Enter键结束输入并换行;
      显示判断结果。



求大神们帮帮忙

最佳答案

查看完整内容

修改了下你自己看下满意不 补充内容 (2012-9-29 23:29): 嗯。清屏用INT 10 也可以实现好像,具体你自己改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-9-28 00:20:16 | 显示全部楼层

修改了下你自己看下满意不
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 [si],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 [di],al
        inc di
        jmp do2
        
bijiao:
        call newline
        mov ch,0
        mov si,0
        mov di,100
s:
        mov cl,[si]
        cmp cl,[di]
        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:[si],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:[si]
   mov byte ptr [bx],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:[si]
   mov byte ptr [bx],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 也可以实现好像,具体你自己改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-9-28 00:21:48 | 显示全部楼层
什么问题啊啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-9-28 00:27:19 | 显示全部楼层

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

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

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

      提示输入字符串2;

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

您能帮帮忙吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-9-28 01:14:32 | 显示全部楼层
#include <stdio.h>
#include <string.h>
int main()
{
char str_1[20], str_2[20];
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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-9-28 01:18:44 | 显示全部楼层
//可以使用 strcmp() 函数来比较字符串string1和string2大小.
//返回值< 0, 表示string1小于string2;
//返回值为0, 表示string1等于string2;
//返回值> 0, 表示string1大于string2.


 
#include <stdio.h>
#include <string.h> // strcmp() 函数
int main()
{
        char str_1[20], str_2[20];
        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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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++代码。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-9-28 08:56:31 | 显示全部楼层

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


您这用的是C语言啊,我想要的是用汇编语言做出此题,不过还是谢谢你了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-9-28 08:57:31 | 显示全部楼层

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

贝壳 发表于 2012-9-28 03:20
补充内容 (2012-9-28 03:23):
以上为C++代码。

是啊,你能帮我用汇编做一下吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-9-28 15:51:56 | 显示全部楼层
鱼丸醋面 发表于 2012-9-28 08:57
是啊,你能帮我用汇编做一下吗

不好意思。我不会。VC++可以反汇编,你可以参考一下反汇编的结果。不过那个结果不能直接用。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-9-28 16:21:22 | 显示全部楼层
来人呀帮帮他吧。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-9-28 20:00:09 | 显示全部楼层
哦,WIN32汇编倒是可以,你等等,我写写
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-9-28 20:48:32 | 显示全部楼层
WIN32汇编实现,16位的我没时间了。

Dialog.rar

6.78 KB, 下载次数: 3

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-9-28 21:04:01 | 显示全部楼层
对了,我相同就弹窗显示“相同”,忘了楼主的要求,你自己改成YES和NO吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-9-28 23:51:42 | 显示全部楼层
贝壳 发表于 2012-9-28 15:51
不好意思。我不会。VC++可以反汇编,你可以参考一下反汇编的结果。不过那个结果不能直接用。

好的,还是谢谢你了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-9-28 23:52:21 | 显示全部楼层
橙子 发表于 2012-9-28 16:21
来人呀帮帮他吧。

好人啊,还是个美女啊……嘿嘿
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-9-28 23:53:16 | 显示全部楼层
メ㊣逆ご帅☆ 发表于 2012-9-28 21:04
对了,我相同就弹窗显示“相同”,忘了楼主的要求,你自己改成YES和NO吧

好人会有好报的,太感谢你了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-9-29 12:37:06 | 显示全部楼层
メ㊣逆ご帅☆ 发表于 2012-9-28 20:48
WIN32汇编实现,16位的我没时间了。

这个用的好像不是汇编语言吧,不过还是谢谢你了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-9-29 12:37:37 | 显示全部楼层
继续求助中……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-9-29 12:59:37 | 显示全部楼层
鱼丸醋面 发表于 2012-9-29 12:37
这个用的好像不是汇编语言吧,不过还是谢谢你了

32位的汇编,大小6KB,如果用其他语言随便一个指令都会20K以上
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 14:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表