格式天下 发表于 2013-5-14 08:10:20

汇编问题,详见帖

本帖最后由 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
                jlelsepro
                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这是运行结果……


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

huqidacf 发表于 2013-5-14 08:10:21

呵呵,很简单,你的bh、bl、dh存放的东西有问题,因为它以ASC码显示,
应该将bh bl dh都放30h,这样才能显示数字

252013680 发表于 2013-5-14 11:14:19

看了半天!!还是没看懂~~~水平不够

格式天下 发表于 2013-5-14 19:34:17

252013680 发表于 2013-5-14 11:14 static/image/common/back.gif
看了半天!!还是没看懂~~~水平不够

额,可能我用的都是十六进制的数字作为判断条件 , 不过有注释……还有主要是跳转和调用中断(2号和1号中断是用来接收和显示字符的,和scanf()和printf() 差不多啦……)

格式天下 发表于 2013-5-14 21:06:26

本帖最后由 格式天下 于 2013-5-14 21:26 编辑

huqidacf 发表于 2013-5-14 20:17 static/image/common/back.gif
呵呵,很简单,你的bh、bl、dh存放的东西有问题,因为它以ASC码显示,
应该将bh bl dh都放30h,这样才能显 ...
哦,懂了,谢啦{:5_109:}

yang40270243 发表于 2013-5-16 07:55:31

感谢楼主分享,新手学习,感谢楼主分享!!!!!
页: [1]
查看完整版本: 汇编问题,详见帖