| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 635 人关注过本帖
标题:对我来说是难题
只看楼主 加入收藏
紫玄夜
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-12-26
收藏
 问题点数:0 回复次数:7 
对我来说是难题

各位好心的大哥大姐,谁来教教小妹我吧,做题碰到难题了。我只会用C语言编这道题,但作业要求用汇编语言。哥哥姐姐们,谁能给我讲讲该怎样做这道题。玄夜在这里谢过大家了

课程设计要求如下:
1,提交源程序的流程图
2,提交源程序代码
3提交可执行程序的运行结果
题目如下
编制一个程序,从键盘接收一个字符串,然后分别统计出其中大写,小写字母,数字字符及其他字符的个数,并将它们分别存放在GC,SC,NC,和AC单元中,最后显示统计结果

搜索更多相关主题的帖子: 难题 
2006-12-26 14:44
lefttime
Rank: 1
等 级:新手上路
帖 子:162
专家分:0
注 册:2006-10-6
收藏
得分:0 
来一个简单的程序吧,思路简单(比较直观),不过程序有些长

DSEG SEGMENT
String DB 80,0,80 DUP(?)
GC DB 0 ;大写字母
SC DB 0 ;小写字母
NC DB 0 ;数字
AC DB 0 ;其它字符
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
MAIN: MOV AX,DSEG
MOV DS,AX
MOV AH,10
LEA DX,String
INT 21H
MOV CX,0
MOV CL,String+1 ;获取字符串长度
LEA BX,String+2
NEXT: MOV AL,[BX]
CMP AL,30H ;这里先判断是否为数字
JB NEXT0
CMP AL,39H
JA NEXT0
INC NC ;如果是标志计数器加1
JMP LOP
NEXT0: CMP AL,41H ;判断是否为小写字母
JB NEXT1
CMP AL,5AH
JA NEXT1
INC GC
JMP LOP
NEXT1: CMP AL,61H ;这里判断是否为大写字母
JB LOP
CMP AL,7AH
JA LOP
INC SC
LOP: INC BX
LOOP NEXT
MOV AL,String+1 ;因为去除小写、大写和数字就是其余字符,所以用了3次减法
SUB AL,GC
SUB AL,SC
SUB AL,NC
MOV AC,AL
MOV AX,4C00H
INT 21H
CSEG ENDS
END MAIN

我是金子,我要闪光的
2006-12-26 16:22
lefttime
Rank: 1
等 级:新手上路
帖 子:162
专家分:0
注 册:2006-10-6
收藏
得分:0 
如果需要查看具体数值,可添加一个宏用于输出
例如:在程序前加入

SHOW MACRO PLACE
MOV AH,2
MOV DL,0AH
INT 21H
MOV DL,0DH
INT 21H
MOV AL,PLACE
AAM
MOV DX,AX
MOV AH,2
OR DX,3030H
XCHG DH,DL
INT 21H
XCHG DH,DL
INT 21H
ENDM
......
SHOW GC
SHOW SC
SHOW NC
SHOW AC
MOV AX,4C00H
INT 21H
......

我是金子,我要闪光的
2006-12-26 16:24
紫玄夜
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-12-26
收藏
得分:0 
lefttime哥哥,我试了,怎么老是出不来运行结果
2006-12-27 09:00
紫玄夜
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-12-26
收藏
得分:0 
我把程序改了,lefttime哥哥看看这样可以不
DSEG SEGMENT
String DB 80,0,80 DUP(?)
GC DB 0 ;大写字母
SC DB 0 ;小写字母
NC DB 0 ;数字
AC DB 0 ;其它字符
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
MAIN: MOV AX,DSEG
MOV DS,AX
MOV AH,10
LEA DX,String
INT 21H
MOV CX,0
MOV CL,String+1 ;获取字符串长度
LEA BX,String+2
NEXT: MOV AL,[BX]
CMP AL,30H ;这里先判断是否为数字
JB NEXT0
CMP AL,39H
JA NEXT0
INC NC ;如果是标志计数器加1
JMP LOP
NEXT0: CMP AL,41H ;判断是否为小写字母
JB NEXT1
CMP AL,5AH
JA NEXT1
INC GC
JMP LOP
NEXT1: CMP AL,61H ;这里判断是否为大写字母
JB LOP
CMP AL,7AH
JA LOP
INC SC
LOP: INC BX
LOOP NEXT
MOV AL,String+1 ;因为去除小写、大写和数字就是其余字符,所以用了3次减法
SUB AL,GC
SUB AL,SC
SUB AL,NC
MOV AC,AL
ADD sc,30h
mov dl,sc
mov ah,02h
int 21h
ADD gc,30h
mov dl,gc
mov ah,02h
int 21h
ADD ac,30h
mov dl,ac
mov ah,02h
int 21h
ADD nc,30h
mov dl,nc
mov ah,02h
int 21h
MOV AX,4C00H
INT 21H
CSEG ENDS
END MAIN
但是运行结果显示老是连在一起,怎么加光标把他们区分开呀?
2006-12-27 09:56
曾小
Rank: 1
等 级:新手上路
威 望:1
帖 子:239
专家分:0
注 册:2006-9-27
收藏
得分:0 
在每个输出语句之后,加一个输出换行符,换行符的语句就可以了.

[此贴子已经被作者于2006-12-29 19:12:21编辑过]


2006-12-27 12:11
lefttime
Rank: 1
等 级:新手上路
帖 子:162
专家分:0
注 册:2006-10-6
收藏
得分:0 
[QUOTE]
SHOW GC
SHOW SC
SHOW NC
SHOW AC
MOV AX,4C00H
INT 21H
[/QUOTE]
这段是放在代码段中,宏是放在程序开始就行啦~~已经调试过,可以正常运行显示

我是金子,我要闪光的
2006-12-27 13:33
紫玄夜
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-12-26
收藏
得分:0 
DSEG SEGMENT
String DB 80,0,80 DUP(?)
GC DB 0 ;大写字母
SC DB 0 ;小写字母
NC DB 0 ;数字
AC DB 0 ;其它字符
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
MAIN: MOV AX,DSEG
MOV DS,AX
MOV AH,10
LEA DX,String
INT 21H
MOV CX,0
MOV CL,String+1 ;获取字符串长度
LEA BX,String+2
NEXT: MOV AL,[BX]
CMP AL,30H ;这里先判断是否为数字
JB NEXT0
CMP AL,39H
JA NEXT0
INC NC ;如果是标志计数器加1
JMP LOP
NEXT0: CMP AL,41H ;判断是否为小写字母
JB NEXT1
CMP AL,5AH
JA NEXT1
INC GC
JMP LOP
NEXT1: CMP AL,61H ;这里判断是否为大写字母
JB LOP
CMP AL,7AH
JA LOP
INC SC
LOP: INC BX
LOOP NEXT
MOV AL,String+1 ;因为去除小写、大写和数字就是其余字符,所以用了3次减法
SUB AL,GC
SUB AL,SC
SUB AL,NC
MOV AC,AL
MOV DL,0AH ;回车,换行
MOV AH,02H
INT 21H
MOV DL,0DH
MOV AH,02H
INT 21H
ADD sc,30h
mov dl,sc
mov ah,02h
int 21h
ADD gc,30h
mov dl,gc
mov ah,02h
int 21h
ADD ac,30h
mov dl,ac
mov ah,02h
int 21h
ADD nc,30h
mov dl,nc
mov ah,02h
int 21h
MOV AX,4C00H
INT 21H
CSEG ENDS
END MAIN
哥哥着是我新改的,哥哥看看对不对
2006-12-27 17:23
快速回复:对我来说是难题
数据加载中...
 
   



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

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