帮忙给看一下!谢谢!

hcj2002 2003-12-12 02:47:44
;输入一个字符串判断其中字符、数字和其他字符的个数
;Define data segment
data segment
str db 100 dup(?)
num_n db 0
num_c db 0
num_o db 0
msg1 db 'Please input the string ! ',0ah,0dh,'$'
data ends
;Define code segment
code segment
assume ds:data,cs:code
main proc far
;set stack and ds
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
;main part of procdure
start:

mov ah,09h
lea dx,msg1
int 21h
lea bx,str
newchar:
mov ah,01h
int 21h
cmp al,0dh
jz output

mov [bx],al
inc bx
cmp al,7ah ;判断是否是大写字母
jnbe isChar
mov cl,1
add num_o,cl
jmp newchar
isChar:
cmp al,61h
jb isChar1
mov cl,1
add num_c,cl
jmp newchar
isChar1: ;判断是否是小写字母
cmp al,5ah
jnbe isChar2
mov cl,1
add num_o,cl
jmp newchar
isChar2:
cmp al,61h
jb isNum
mov cl,1
add num_c,cl
jmp newchar
isNum: ;判断是否是数字
cmp al,39h
jbe isNum1
mov cl,1
add num_o,cl
jmp newchar
isNum1:
cmp al,30h
jb isOther
mov cl,1
add num_n,cl
jmp newchar

isOther:
mov cl,1
add num_o,cl
jmp newchar
output: ;输出个数
mov ah,02h
mov dl,num_n
add dl,30h
int 21h
call CRLF
mov ah,02h
mov dl,num_c
add dl,30h
int 21h
call CRLF
mov ah,02h
mov dl,num_o
add dl,30h
int 21h
call CRLF

ret
main endp
CRLF proc near ;输出回车换行
mov ah,02h
mov dl,0ah
int 21h
mov ah,02h
mov dl,0dh
int 21h
CRLF endp
code ends
end
----------------------------------------------------
不知道那错了??????
...全文
22 7 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
hcj2002 2003-12-13
谢谢各位!

  • 打赏
  • 举报
回复
csdsjkk 2003-12-12
;输入一个字符串判断其中字符、数字和其他字符的个数
;Define data segment
data segment
str db 100 dup(?)
num_n db 0
num_c db 0
num_o db 0
msg1 db 'Please input the string ! ',0ah,0dh,'$'
data ends
;Define code segment
code segment
assume ds:data,cs:code
main proc far
;set stack and ds
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
;main part of procdure
start:

mov ah,09h
lea dx,msg1
int 21h
lea bx,str
newchar:
mov ah,01h
int 21h
cmp al,0dh
jz output

mov [bx],al
inc bx
cmp al,7ah ;判断是否是小写字母
jbe isChar
mov cl,1
add num_o,cl
jmp newchar
isChar:
cmp al,61h
jb isChar1
mov cl,1
add num_c,cl
jmp newchar
isChar1: ;判断是否是大写字母
cmp al,5ah
jbe isChar2
mov cl,1
add num_o,cl
jmp newchar
isChar2:
cmp al,41h
jb isNum
mov cl,1
add num_c,cl
jmp newchar
isNum: ;判断是否是数字
cmp al,39h
jbe isNum1
mov cl,1
add num_o,cl
jmp newchar
isNum1:
cmp al,30h
jb isOther
mov cl,1
add num_n,cl
jmp newchar

isOther:
mov cl,1
add num_o,cl
jmp newchar
output: ; ;输出个数
call CRLF
mov ah,02h
mov dl,num_n
add dl,30h
int 21h
call CRLF
mov ah,02h
mov dl,num_c
add dl,30h
int 21h
call CRLF
mov ah,02h
mov dl,num_o
add dl,30h
int 21h
call CRLF

ret
main endp
CRLF proc near ; ;输出回车换行
mov ah,02h
mov dl,0ah
int 21h
mov ah,02h
mov dl,0dh
int 21h
ret
CRLF endp
code ends
end main
  • 打赏
  • 举报
回复
紫郢剑侠 2003-12-12
CRLF proc near ;输出回车换行
mov ah,02h
mov dl,0ah
int 21h
mov ah,02h
mov dl,0dh
int 21h

;=========================
ret ;楼主漏了这句, 程序将引起死机:-<
;==========================
CRLF endp

另外程序的逻辑好象有点问题...
  • 打赏
  • 举报
回复
紫郢剑侠 2003-12-12
没有定义堆栈段却有堆栈操作?
  • 打赏
  • 举报
回复
hcj2002 2003-12-12
没有错误信息!

但出不了正常结果

等待中……
  • 打赏
  • 举报
回复
kenko 2003-12-12
将错误信息帖出来看看
  • 打赏
  • 举报
回复
LunTanZeng 2003-12-12
我帮你顶!!!
  • 打赏
  • 举报
回复
相关推荐
发帖
汇编语言
加入

2.1w+

社区成员

汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
申请成为版主
帖子事件
创建了帖子
2003-12-12 02:47
社区公告
暂无公告