鱼C论坛

 找回密码
 立即注册
查看: 2414|回复: 5

汇编问题,详见帖

[复制链接]
发表于 2013-5-14 08:10:20 | 显示全部楼层 |阅读模式
15鱼币
本帖最后由 s0512 于 2013-5-25 15:26 编辑

这是我的程序:
;编写一个汇编程序,使得从键盘上输入十个以内的字符,以输入空格结束,然后按数字、字母和其它符号三类统计各自的个数,在屏幕上依次显示出统计结果。
assume cs:code 

code segment
start:  xor dx , dx        
                mov cx , 10
                mov bh , 0 ;数字
                mov bl , 0 ;字母
                mov dh , 0  ; 其他
again:        mov ah ,1
            int 21h;输入字符
                
                cmp al , 20h ; 空格
                je endpro
                
                cmp al ,39H ;9
                jle NUM
                
                cmp al , 41H ;A
                jl elsepro
                jmp charpro
NUM:    cmp al , 30h ;0
                jl  elsepro
                inc bh
                jmp endflag
                
charpro:cmp al , 7Ah;  z
                jg elsepro
                cmp al , 61h ; a
                jl FL1
                jmp FL2
                
        FL1:cmp al , 5Ah ; Z
                jg elsepro
        FL2:inc bl
                jmp endflag
elsepro: inc dh        

endflag: loop again  ;循环

endpro:                ;输出
            mov ah , 2
            mov dl , 0
            int 21h
                
s_out:          ;输出
            mov ah , 2  ;调用2号中断
            mov dl , bh
            int 21h
                
                        ;输出
            
            mov dl , bl
            int 21h
                
                        ;输出
           
            mov dl , dh
            int 21h

                
                mov ax , 4c00h
                int 21h
code ends
end start
这是运行结果……
test_4.JPG

为什么会出现笑脸,调试的时候觉得很正常啊……我是用 t 命令单步 和 P命令调试中断的,授鱼不如授渔,还望
各位不吝赐教……

最佳答案

查看完整内容

呵呵,很简单,你的bh、bl、dh存放的东西有问题,因为它以ASC码显示, 应该将bh bl dh都放30h,这样才能显示数字
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-5-14 08:10:21 | 显示全部楼层
呵呵,很简单,你的bh、bl、dh存放的东西有问题,因为它以ASC码显示,
应该将bh bl dh都放30h,这样才能显示数字
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-5-14 11:14:19 | 显示全部楼层
看了半天!!还是没看懂~~~水平不够
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-5-14 19:34:17 | 显示全部楼层

额,可能我用的都是十六进制的数字作为判断条件 , 不过有注释……还有主要是跳转和调用中断(2号和1号中断是用来接收和显示字符的,和scanf()和printf() 差不多啦……)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-5-14 21:06:26 | 显示全部楼层
本帖最后由 格式天下 于 2013-5-14 21:26 编辑
huqidacf 发表于 2013-5-14 20:17
呵呵,很简单,你的bh、bl、dh存放的东西有问题,因为它以ASC码显示,
应该将bh bl dh都放30h,这样才能显 ...

哦,懂了,谢啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-5-16 07:55:31 | 显示全部楼层
感谢楼主分享,新手学习,感谢楼主分享!!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-17 14:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表