汇编语言,pop相关问题

pushalhh:popalloophh这个循环会执行几次?pop完栈,循环会不会自动停止?... push al
hh:pop al
loop hh
这个循环会执行几次?pop完栈,循环会不会自动停止?
展开
 我来答
mahdi_glt
2011-05-14 · TA获得超过137个赞
知道答主
回答量:31
采纳率:0%
帮助的人:32.6万
展开全部
你这个程序执行的次数未知,loop指令在判断循环的时候先会将cx减1,如果不为0的话则将IP位移到后面的标号处 还有要注意的就是 push一次压入一个字,也就是一次压入内存栈段的是16位,一般情况下我们都是 push ax的,al在字的低8位,ah在字的高8位。
你这样的循环如果在HH中没有另外设置CX的话,假如cx的值是0,第一次循环的话指令loop语句的时候 cx-1=0-1=FFFF,这时候CF(状态字中的 进位借位)的值为1。也就是说执行第一次后CX的值为FFFF,然后再次执行LOOP的时候CX继续减1,知道CX再次为0的时候一共执行了FFFFH次,换算成十进制是65536次,这就是你这个程序执行循环的最多次数了,不会超过的,也不会不停止
push ax
hh:mov cx,2 ;这里每次循环都重新设置CX,这样就可以无限循环了
pop ax ;一个PUSH如果作为保护内容的操作而不是传值超过的话对应一个POP
loop hh
所以你先PUSH AX 后面不断的POP AX的话 会把栈段中其他的内容给传送到AX中,这样的话会把SP弄乱的

自己手动打的,所以楼主不要闲字多不看啊,珍惜我的劳动成果吧
_fmlyht
2011-05-14 · TA获得超过2359个赞
知道大有可为答主
回答量:2398
采纳率:0%
帮助的人:1835万
展开全部
循环会执行几次?
循环会执行CX指定的次数
pop完栈,循环会不会自动停止?
CPU不会自动检查堆栈是否已空,这必须由程序员完成!loop只检查CX的值,已决定是否循环!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
langzi0106
2011-05-14 · TA获得超过406个赞
知道答主
回答量:339
采纳率:0%
帮助的人:0
展开全部
堆栈是一个相对逻辑概念,是存储区域中的一段,你虽然自己以为已经POP完堆栈了,但存储区域还没有到头。
你这段程序是由LOOP导致循环的。LOOP的循环次数是由CX的值决定,每执行一次LOOP,CX减1,直到为0才退出循环。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wskjuf
2011-05-14 · TA获得超过1289个赞
知道大有可为答主
回答量:1731
采纳率:0%
帮助的人:1782万
展开全部
loop执行是否结束要判断cx的值,cx不为0,就一直pop下去,每循环一次cx减一。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式