一个怪问题。。DEBUG下可以运行。。直接运行又不可以。。

array020 2009-03-23 11:16:07

assume cs:codesg,ds:datasg

datasg segment
info db 'please input the number!$'
result db 0
datasg ends

codesg segment
main:
mov dx,datasg
mov ds,dx
mov dx,offset info

mov ah,9
int 21h

mov ah,0
int 16h
mov ch,0
sub al,30h
mov cl,al

mov dx,0
l:
int 16h
sub al,30h
add ds:[result],al
loop l

mov ax,4c00h
int 21h

codesg ends
end main



菜鸟求助。。貌似问题出在输入上。。
...全文
248 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
kaifaye 2009-03-24
  • 打赏
  • 举报
回复
同意
cnzdgs 2009-03-24
  • 打赏
  • 举报
回复
int 16h的0号功能返回后,ah中是输入字符的扫描码,当你再次调用int 16h时需要给ah赋值。
l:
mov ah,0 ; 这里加一条指令把ah赋值为0。
int 16h
sub al,30h
add ds:[result],al
loop l
array020 2009-03-24
  • 打赏
  • 举报
回复
哦哦 原来是这样。。。结贴啦。。
array020 2009-03-24
  • 打赏
  • 举报
回复
晕。。还是不行。。
运行后输出please input the number!后
按键盘没反应。。
xzdgy 2009-03-24
  • 打赏
  • 举报
回复
ding
lili830209 2009-03-24
  • 打赏
  • 举报
回复
ding
sizemismatch 2009-03-24
  • 打赏
  • 举报
回复
帮顶
lili830209 2009-03-24
  • 打赏
  • 举报
回复
帮顶
dididu1515 2009-03-24
  • 打赏
  • 举报
回复
你的程序先接收循环次数,再统计后输入数的累加和,送入数据区RESULT。
好多人都把数据验证给漏了。
assume cs:codesg,ds:datasg

datasg segment
info db 'please input the number!$'
result db 0
datasg ends

codesg segment
main:
mov dx,datasg
mov ds,dx
mov dx,offset info

mov ah,9
int 21h

Q0: mov ah,0
int 16h
cmp al,30h
jbe Q0
cmp al,39h
ja Q0
sub al,30h
cbw
mov cx,ax

@l: mov ah,0
int 16h
cmp al,30h
jbe @l
cmp al,39h
ja @l
sub al,30h
add [result],al;DS前缀多余
loop l
;还可加个显示
mov ah,4ch
int 21h

codesg ends
end main

21,500

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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