帮忙给看一下!谢谢!

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
----------------------------------------------------
不知道那错了??????
...全文
68 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
  • 打赏
  • 举报
回复
我帮你顶!!!

21,497

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧