. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->汇编语言学习交流区
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  谁知道这是写的神马东西,对不对啊?  [待解决] 回复[ 2次 ]   点击[ 291次 ]  
cheng12308
[帖 主]   [ 发表时间:2012-05-24 18:38 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-04-15 21:15
assume cs:code
code segment
start:
mov bh,0
mov bl,0
mov dh,0
mov cx,10

B1:cmp cx,0
jz stop
mov ah,1
int 21h
cmp al,'0'
jnb A1
inc dh
dec cx
A1:cmp al,'9'
jnb AA1
inc bh
dec cx
AA1:cmp al,'Z'
jnb AAA1
inc bl
dec cx
AAA1:cmp al,'a'
jnb AAAA1
inc dh
dec cx
AAAA1:cmp al,'z'
jnb AAAAA1
inc bl
dec cx
AAAAA1:inc dh
dec cx
stop:mov dl,bh
mov ah,02
int 21h
mov dl,bl
mov ah,02
int 21
mov dl,dh
int 21

mov ax,4c00h
int 21
code ends
end start
zhujinwu
[第1楼]   [ 回复时间:2012-05-24 20:26 ]   [引用]   [回复]   [ top ] 
荣誉值:15
信誉值:0
注册日期:2011-11-03 09:29
这段程序的功能是:让用户输入10个字符,统计其中数字字符、字母字符、其他字符的个数并在屏幕上显示出来。其中数字字符的个数保存在bh中,字母字符的个数保存在bl中,其他字符的个数保存在dh中,cx是用来设置循环次数(即控制输入的字符个数)。
但在程序编写中存在一些错误:
1、程序中原意是输入10个字符,但因为少了一个跳转的指令导致只能输入一个字符便结束程序了;
2、在判断输入的字符是否为字母字符的时候,分为两部分:一是判断是否为大写字母,二是判断是否为小写字母。在判断的逻辑上存在一点错误;
3、在显示统计结果的时候,没有进行转换,所以在屏幕上看到的结果并不是你所想要的;
另外,在程序上还可以进行一些优化,比如在判断输入的字符是否为字母字符的时候,可以先将输入的字符统一先转换为小写或大写字母,这样就不需要既判断大写又判断小写了。
以上是我所发现的一些问题,楼主可以据此去修改一下,并利用DEBUG进行跟踪调试。
cheng12308
[第2楼]   [ 回复时间:2012-05-25 07:27 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-04-15 21:15
太感谢啦~!可是,最后显示计数的时候如何把二进制的数字转换成ascII吗呢?求教了!
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved