鱼C论坛

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

汇编问题,详见帖

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

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

  3. code segment
  4. start:  xor dx , dx        
  5.                 mov cx , 10
  6.                 mov bh , 0 ;数字
  7.                 mov bl , 0 ;字母
  8.                 mov dh , 0  ; 其他
  9. again:        mov ah ,1
  10.             int 21h;输入字符
  11.                
  12.                 cmp al , 20h ; 空格
  13.                 je endpro
  14.                
  15.                 cmp al ,39H ;9
  16.                 jle NUM
  17.                
  18.                 cmp al , 41H ;A
  19.                 jl elsepro
  20.                 jmp charpro
  21. NUM:    cmp al , 30h ;0
  22.                 jl  elsepro
  23.                 inc bh
  24.                 jmp endflag
  25.                
  26. charpro:cmp al , 7Ah;  z
  27.                 jg elsepro
  28.                 cmp al , 61h ; a
  29.                 jl FL1
  30.                 jmp FL2
  31.                
  32.         FL1:cmp al , 5Ah ; Z
  33.                 jg elsepro
  34.         FL2:inc bl
  35.                 jmp endflag
  36. elsepro: inc dh        

  37. endflag: loop again  ;循环

  38. endpro:                ;输出
  39.             mov ah , 2
  40.             mov dl , 0
  41.             int 21h
  42.                
  43. s_out:          ;输出
  44.             mov ah , 2  ;调用2号中断
  45.             mov dl , bh
  46.             int 21h
  47.                
  48.                         ;输出
  49.             
  50.             mov dl , bl
  51.             int 21h
  52.                
  53.                         ;输出
  54.            
  55.             mov dl , dh
  56.             int 21h

  57.                
  58.                 mov ax , 4c00h
  59.                 int 21h
  60. code ends
  61. end start
复制代码
这是运行结果……
test_4.JPG

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

最佳答案

查看完整内容

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

使用道具 举报

发表于 2013-5-14 11:14:19 | 显示全部楼层
看了半天!!还是没看懂~~~水平不够
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

额,可能我用的都是十六进制的数字作为判断条件 , 不过有注释……还有主要是跳转和调用中断(2号和1号中断是用来接收和显示字符的,和scanf()和printf() 差不多啦……)
小甲鱼最新课程 -> https://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,这样才能显 ...

哦,懂了,谢啦
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-5-16 07:55:31 | 显示全部楼层
感谢楼主分享,新手学习,感谢楼主分享!!!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-15 10:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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