| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2109 人关注过本帖
标题:【醒目】win32 汇编 关于输入字符串中字母出现次数统计!(谢谢了求帮忙!) ...
只看楼主 加入收藏
Whiserp
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-11-24
结帖率:0
收藏
已结贴  问题点数:20 回复次数:10 
【醒目】win32 汇编 关于输入字符串中字母出现次数统计!(谢谢了求帮忙!)
要求是请用户输入一个字符串,然后统计并输出字符串中字母出现频率最高的字母。

前面定义都可以用C语言什么的,只要求中间统计部分用汇编。

所以我的问题是:
1、具体思路是什么才能简便快捷的完成这个程序,比如说数组一定是要用到的,那么如何用呢?用在哪里?
2、有哪些指令是要用到的?
3、只求指点,谢谢大神们了!老师不靠谱,教不清楚还是英文的T T帮个忙吧谢谢!
搜索更多相关主题的帖子: 字符串 C语言 如何 
2012-11-24 20:42
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:5 
汇编里还有数组的概念吗

DO IT YOURSELF !
2012-11-24 23:17
Whiserp
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-11-24
收藏
得分:0 
回复 2楼 wp231957
可以在前面部分先用C语言定义一些数组..然后后面用汇编..那不用数组也可以,用其他的方法,求指点!
2012-11-25 03:06
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
没看懂 你要用c+嵌入汇编方式  还是c+DLL方式

DO IT YOURSELF !
2012-11-25 07:30
Alar30
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:10
帖 子:988
专家分:1627
注 册:2009-9-8
收藏
得分:5 
貌似汇编里没有数组一说吧。。。
2012-11-26 20:06
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:5 
在c程序里面声明个48个大小的static char a[]  汇编没有什么类型的说法引用的d到内存就好.对寄存器的操作是用的ax bx al ah的方式。  这个328的方式俺就帮不上了。手机上的。满不好弄的
push a
pop dx
LOP1:
mov ah ,01h
int 21h
CMP 0DAH,AL
JE ECD
cmp al ,'a'
jae yh
yh:
cmp al,'D'
JBE XXX
JMP LOP1
XXX:
SUB AL,'a'
XOR AH,AH
ADD BYTE PTR [dx+AX],1
JMP LOP1
ECD :
MOV AH 4CH
INT 21H
这个怎么找出出现次数最多的 汇编代码就是循环48 次 ax存放cx的值,bx初始值为0存放数组a的大值 满足[dx+cx]大于bx才将ax=cx          最后子母a的ascii码+ax就是出现次数最高的那个了


手机写代码很不方便,有心的话自己实现塞,另外一个很好的学习方法就是高级语言编写 反汇编后,你们懂的

[ 本帖最后由 zhu224039 于 2012-11-27 05:48 编辑 ]

我要成为嘿嘿的黑客,替天行道
2012-11-27 05:00
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
0DAH  我是认为是回车就建的ascii码的

我要成为嘿嘿的黑客,替天行道
2012-11-27 05:04
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
如果是在c里面输入的字符的话 32的代码就好写的很
直接将字符数组首地址PUSH  POP 的方式取得f,那么写个
32码就好写的很了     把寄存器通通换成32的。那个dos中断就不要了
思路是一样的,这么辛苦  这分就都给我了把,手点的酸

[ 本帖最后由 zhu224039 于 2012-11-27 05:45 编辑 ]

我要成为嘿嘿的黑客,替天行道
2012-11-27 05:39
bobo2185355
Rank: 2
等 级:论坛游民
帖 子:81
专家分:43
注 册:2010-4-11
收藏
得分:5 
CSEG SEGMENT
  BUFFER1 DW  8 DUP(?)
  BUFFER2 DW  8 DUP(?)
START:....
这不就相当于一个二维数组吗?
2012-11-27 15:04
bobo2185355
Rank: 2
等 级:论坛游民
帖 子:81
专家分:43
注 册:2010-4-11
收藏
得分:0 
  
 用SCAS进行扫描比较 ,先计算出每个字符出现的次数(其他方法也成啊,方法很多) 放进一个 NAME  DB 26 DUP (0)当中,然后逐一比较 CMP,比较的结果用条件转移将大数的偏移地址存入累加器,这里存的是偏移地址,至于如何将偏移地址转换成你要输出的字符就简单了
 区分大小写的 也只是多了区分大小写的部分而已
2012-11-27 16:34
快速回复:【醒目】win32 汇编 关于输入字符串中字母出现次数统计!(谢谢了求帮 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018601 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved