首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >汇编80x86循环不应该永远循环吗?

汇编80x86循环不应该永远循环吗?
EN

Stack Overflow用户
提问于 2015-01-30 09:41:06
回答 2查看 77关注 0票数 0

我有以下代码:

代码语言:javascript
复制
assume cs: code, ds:data
code segment
start:
    mov ax,data
    mov ds, ax

    xor cx,cx
    repeta:
        inc cx
        xor cx,0
        loop repeta

    mov ax, 4Ch
    int 21h

code ends  
end start 

据我所知,它应该永远循环或直到出错,但实际上并非如此。为什么?

我认为它是如何工作的:

代码语言:javascript
复制
xor cx,cx - cx = 0

输入:repeta代码段

代码语言:javascript
复制
 inc cx  - cx = 1

一事无成

代码语言:javascript
复制
xor cx,0 - cx is still 1

验证cx是否与0不同,如果真跳转到标签repeta

代码语言:javascript
复制
loop repeta

在现实中它没有重复,为什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-30 09:47:18

循环将在第一次迭代之后结束,因为loop指令会将cx降为零,然后检查它是否为非零。

参考文献:http://web.itu.edu.tr/kesgin/mul06/intel/instr/loop.html

“将CX减少1,如果CX不是零,则将控制转移到标签上。”

票数 3
EN

Stack Overflow用户

发布于 2015-01-30 09:48:02

根据到这个loop指令减少ECX并跳转,除非ECX为零。

如果ECXloop指令之前是1,那么loop指令将减少到零,而不是跳转。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28233019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档