加入收藏 设为首页 帮助中心
 
论坛首页
用户登录 | 用户注册 | 最新悬赏 | 最新贴子 | 会员中心 | 贴子搜索 | 网站地图 | 帮助中心 | 联系我们
站内搜索:
现在位置 > 维库电子开发网论坛 > 嵌入式系统/ARM技术 > 汇编的问题 为什么是死循环
帖子主题: 汇编的问题 为什么是死循环
你还没有登录,无法发表回复,请首先 登录.. [注 册]
积分:3386 qiurisiyu
发表于:2008-5-15 9:25:00 楼主
级别:四钻
积分:3386分
注册:2007年10月24日

output:
   
mov  cl,0ah
   
div  cl
   
;输出
    mov  dl,ah
   
add  dl,30h
   
   
mov  ah,02h
   
int  21h
   
   
mov  ah,0h
   
cmp  al,0h
   
ja   output


这段代码为什么是死循环,我想将ax中的数分解成数字显示出来。但出现死循环。

感觉汇编那块太冷清了,就在这提问了。

 
积分:1440 爱的天国
发表于:2008-5-15 9:26:00 1 楼
级别:二钻
积分:1440分
注册:2007年11月12日
呃。。。

<DL class=code> <DT>C/C++ code <DD>
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->cmp al,0h ja output
</DD></DL>

就是说,al是个无符号数,只要它大于0,就跳转到output

整个代码中也没有对al做过操作,它里面原来是什么就始终是满足ja的条件的
 
积分:674 棒球英豪
发表于:2008-5-16 10:14:00 2 楼
级别:五星
积分:674分
注册:2007年11月14日
但是div cl 会改变al的值滴。  
积分:1364 风的承诺
发表于:2008-5-19 9:46:00 3 楼
级别:二钻
积分:1364分
注册:2007年11月23日
   mov  ah,02h
    int  21h

这两句会改变al的值,自然会死循环了,所以正确的写法应该是

push ax
   mov  ah,02h
    int  21h
pop ax
 
积分:1452 冬天的雪花
发表于:2008-5-21 9:26:00 4 楼
级别:二钻
积分:1452分
注册:2007年11月10日
在你的题目中,如果没有其它条件语句
     mov  ah,02h 
    int  21h 
之后的AL值是等于DL中的值,也就是你的值是
     mov  dl,ah
    add  dl,30h
由于你的DL总是大于0,结果也就是明显的了(死循环)
 
积分:938 爱的花园
发表于:2008-5-23 9:25:00 5 楼
级别:一钻
积分:938分
注册:2007年11月09日
因为mov ah 02h
这句话会改变AX的值啊~~
 
快速回复:
用户名: 密码:  验证码,看不清楚?请点击刷新验证码 注册新帐号?
上传图片格式(jpg/gif/png)和文件格式(rar/pdf)
 
 
网站简介s广告服务网站地图帮助信息联系方式问题报告
Copyright 2007 - 2008 bbs.weeqoo.com
Powered By weeqoo Version 8.0.0XML