一个汇编程序

liao4052 2012-06-12 01:46:25
汇编代码

max =128
data segment
buffer1 db max
db ?
db max dup (0)
buffer2 db 'figure number:$'
buffer3 db 'character number:$'
data ends
code segment
assume ds:data,cs:code
start:mov ax,data
mov dx,offset buffer1
mov ah,10
int 21h
mov bh,0
mov bl,0
call newline
mov si,offset buffer1+2
mov cl,buffer1+1
mov ch,0
again: mov al,[si]
inc si
cmp al,'0'
jb next
cmp al,'9'
ja nodec
inc bh
jmp short next
nodec:or al,20h
cmp al,'a'
jb next
cmp al,'z'
ja next
inc bl
next: loop again

i: mov dx,offset buffer2
mov ah,9
int 21h
mov al,bh
xor ah,ah
call display
call newline
mov dx,offset buffer3
mov ah,9
int 21h
mov al,bl
xor ah,ah
call display
mov ax,4c00h
int 21h
put proc
mov ah,2
int 21h
ret
put endp
newline proc
push ax
push dx
mov dl,0dh
mov ah,2
int 21h
mov dl,0ah
mov ah,2
int 21h
pop dx
pop ax
ret
newline endp
display proc
mov cx,3
mov dl,10
dis: div dl
xchg ah,al
add al,'0'
push ax
xchg ah,al
mov ah,0
loop dis
mov cx,3
dis2:pop dx
call put
loop dis2
ret
display endp
code ends
end start
这个程序先从键盘输入一个字符串,然后显示非数字字符和字母字符的个数
编译没问题
但运行的结果出呼意料
各大神,看看吧
帮忙解答下
...全文
64 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2012-06-12
  • 打赏
  • 举报
回复
为啥不发到“汇编语言”论坛里面呢?
单步调试和设断点调试是程序员必须掌握的技能之一。

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧