鱼C论坛

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

求助大神帮我解决此题

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



求大神们帮帮忙

最佳答案

查看完整内容

修改了下你自己看下满意不 补充内容 (2012-9-29 23:29): 嗯。清屏用INT 10 也可以实现好像,具体你自己改
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-9-28 00:20:16 | 显示全部楼层

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

  2. dseg segment               
  3.                                    db 100 dup (0)
  4.                    db 100 dup (0)
  5.         szyes        db 'Yes',0dh,0ah,'$'
  6.         szno        db 'NO',0dh,0ah,'$'
  7. szText1 db 'Please input first string and press Enter';提示信息
  8. szText2 db 'Please input Second string and press Enter';提示信息   
  9. dseg ends

  10. cseg segment
  11. start:
  12.                 call QP
  13.                 call XS1
  14.         mov ax,dseg
  15.         mov ds,ax
  16.         mov si,0
  17.         mov di,100

  18. do:        
  19.         mov ah,1
  20.         int 21h
  21.         cmp al,0dh                ;判断是否为回车键
  22.         je str_next
  23.         mov [si],al
  24.         inc si
  25.         jmp do
  26.         
  27. str_next:
  28.         call newline
  29.                 call QP
  30.                 call XS2
  31. do2:
  32.         mov ah,1
  33.         int 21h
  34.         cmp al,0dh
  35.         je bijiao
  36.         mov [di],al
  37.         inc di
  38.         jmp do2
  39.         
  40. bijiao:
  41.         call newline
  42.         mov ch,0
  43.         mov si,0
  44.         mov di,100
  45. s:
  46.         mov cl,[si]
  47.         cmp cl,[di]
  48.         jne no
  49.         jcxz yes
  50.         inc si
  51.         inc di
  52.         jmp s
  53.         
  54. no:
  55.         mov dx,offset szno
  56.         mov ah,9h
  57.         int 21h
  58.         jmp over
  59.         
  60. yes:
  61.         mov dx,offset szyes
  62.         mov ah,9h
  63.         int 21h
  64.         
  65. over:
  66.         mov ah,1
  67.         int 21h
  68.         mov ax,4c00h
  69.         int 21h

  70. ;换行子程序
  71. ;说明:直接引用即可
  72. newline proc
  73.      push ax
  74.      push dx         
  75.      mov dl,0dh
  76.      mov ah,2h
  77.      int 21h
  78.      mov dl,0ah
  79.      mov ah,2h
  80.      int 21h
  81.           pop dx
  82.      pop ax         
  83.      ret
  84. newline endp
  85. ;清屏子程序
  86. QP proc
  87.         push cx;虽然这一系列保存没什么用,但是可以增加子程序独立性
  88.         push ax
  89.         push ds
  90.         push si
  91.        
  92.          mov cx,4000;字符串个数
  93.          mov ax,0b800h;显存地址
  94.          mov ds,ax
  95.          mov si,0
  96. lls:
  97.         mov byte ptr ds:[si],0;放入显存
  98.         add si,2;指向下一个显存
  99.         loop lls
  100.        
  101.         pop si
  102.         pop ds
  103.         pop ax
  104.         pop cx
  105.         ret
  106. QP endp
  107. XS1 proc
  108.    push ax
  109.    push ds
  110.    push bx
  111.    push es
  112.    push si
  113.    push cx

  114.    mov ax,0b800h
  115.    mov ds,ax
  116.    mov bx,0
  117.    mov ax,dseg
  118.    mov es,ax
  119.    mov si,offset szText1
  120.    mov cx,41;字符数
  121. ss1:
  122.    mov al,es:[si]
  123.    mov byte ptr [bx],al;放入显存
  124.    add bx,2;指向下一个显存
  125.    inc si;指向下一个字符串
  126.    loop ss1
  127.    
  128.    pop cx
  129.    pop si
  130.    pop es
  131.    pop bx
  132.    pop ds
  133.    pop ax
  134.    ret
  135. XS1 endp
  136. XS2 proc
  137.    push ax
  138.    push ds
  139.    push bx
  140.    push es
  141.    push si
  142.    push cx

  143.    mov ax,0b800h
  144.    mov ds,ax
  145.    mov bx,0
  146.    mov ax,dseg
  147.    mov es,ax
  148.    mov si,offset szText2
  149.    mov cx,42;字符数
  150. ss2:
  151.    mov al,es:[si]
  152.    mov byte ptr [bx],al;放入显存
  153.    add bx,2;指向下一个显存
  154.    inc si;指向下一个字符串
  155.    loop ss2
  156.    
  157.    pop cx
  158.    pop si
  159.    pop es
  160.    pop bx
  161.    pop ds
  162.    pop ax
  163.    ret
  164. XS2 endp

  165. cseg ends
  166. end start
复制代码

补充内容 (2012-9-29 23:29):
嗯。清屏用INT 10 也可以实现好像,具体你自己改
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-9-28 00:21:48 | 显示全部楼层
什么问题啊啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

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

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

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

      提示输入字符串2;

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

您能帮帮忙吗
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-9-28 01:14:32 | 显示全部楼层
  1. #include <stdio.h>
  2. #include <string.h>
  3. int main()
  4. {
  5. char str_1[20], str_2[20];
  6. printf("请输入字符串1:");
  7. scanf("%s", str_1);
  8. printf("请输入字符串2:");
  9. scanf("%s", str_2);
  10. if (strcmp(str_1, str_2) == 0)
  11. {
  12. printf("Yes\n");
  13. }
  14. else
  15. {
  16. printf("No\n");
  17. }
  18. return 0;
  19. }
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-9-28 01:18:44 | 显示全部楼层

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



  5. #include <stdio.h>
  6. #include <string.h> // strcmp() 函数
  7. int main()
  8. {
  9.         char str_1[20], str_2[20];
  10.         printf("请输入字符串1:");
  11.         scanf("%s", str_1);
  12.         printf("请输入字符串2:");
  13.         scanf("%s", str_2);

  14.         if (strcmp(str_1, str_2) == 0)
  15.         {
  16.                 printf("Yes\n");
  17.         }
  18.         else
  19.         {
  20.                 printf("No\n");
  21.         }

  22.         return 0;
  23. }
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-9-28 03:20:00 | 显示全部楼层
  1. /**************************************************
  2. *********输入两个字符串并比较它们是否相等********
  3. **************************************************/
  4. #include <string>
  5. #include <iostream>
  6. #include <stdlib.h>
  7. extern "C"
  8. #include "string.h"

  9. using namespace std ;

  10. int main()
  11. {
  12.     string s1, s2;
  13.     int result;
  14.     cout << "请输入s1:\n";
  15.     getline(cin,s1, '\n');             //输入s1,并以回车为结束符。
  16.     cout << "请输入s2:\n";
  17.     getline(cin,s2, '\n');             //输入s2,并以回车为结束符。
  18.     cout << "你输入的s1是: " << s1 << endl;
  19.     cout << "你输入的s2是: " << s2 << endl;

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

  25.     system("pause");
  26.     return 0;
  27. }
复制代码



补充内容 (2012-9-28 03:23):
以上为C++代码。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

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


您这用的是C语言啊,我想要的是用汇编语言做出此题,不过还是谢谢你了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

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

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

是啊,你能帮我用汇编做一下吗
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

不好意思。我不会。VC++可以反汇编,你可以参考一下反汇编的结果。不过那个结果不能直接用。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-9-28 16:21:22 | 显示全部楼层
来人呀帮帮他吧。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-9-28 20:00:09 | 显示全部楼层
哦,WIN32汇编倒是可以,你等等,我写写
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

Dialog.rar

6.78 KB, 下载次数: 3

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-9-28 21:04:01 | 显示全部楼层
对了,我相同就弹窗显示“相同”,忘了楼主的要求,你自己改成YES和NO吧
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

好的,还是谢谢你了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

好人啊,还是个美女啊……嘿嘿
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

好人会有好报的,太感谢你了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

这个用的好像不是汇编语言吧,不过还是谢谢你了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-9-29 12:37:37 | 显示全部楼层
继续求助中……
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

32位的汇编,大小6KB,如果用其他语言随便一个指令都会20K以上
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-1 10:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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