汇编问题,详见帖
本帖最后由 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:}
呵呵,很简单,你的bh、bl、dh存放的东西有问题,因为它以ASC码显示,
应该将bh bl dh都放30h,这样才能显示数字 看了半天!!还是没看懂~~~水平不够 252013680 发表于 2013-5-14 11:14 static/image/common/back.gif
看了半天!!还是没看懂~~~水平不够
额,可能我用的都是十六进制的数字作为判断条件 , 不过有注释……还有主要是跳转和调用中断(2号和1号中断是用来接收和显示字符的,和scanf()和printf() 差不多啦……) 本帖最后由 格式天下 于 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:}
感谢楼主分享,新手学习,感谢楼主分享!!!!!
页:
[1]