gpt4 book ai didi

assembly - 汇编语言中的嵌套循环

转载 作者:行者123 更新时间:2023-12-02 04:30:11 27 4
gpt4 key购买 nike

我是汇编语言的新手,我无法处理嵌套循环语句。我想要在其他语言中使用相同的表达式,例如:

for(i=0;i<10;i++){
for(j=0;j<10;j++){
statements....
}
}

我想要汇编语言中的这个表达式。谢谢...

最佳答案

让我们一步步分解。第一步是将 for 分解为单独的部分:

    i=0;
do {
j=0;
do {
/* statements.... */
j++;
} while(j < 10);
i++;
} while(i < 10);

while 主要只是一个测试和跳转:

    i=0;
second:
j=0;
first:
/* statements.... */
j++;
if(j < 10)
goto first;
i++;
if(i < 10)
goto second;

接下来,重命名变量,使它们具有寄存器的名称:

    ebx=0;
second:
ecx=0;
first:
/* statements.... */
ecx++;
if(ecx < 10)
goto first;
ebx++;
if(ebx < 10)
goto second;

现在它已经非常接近汇编了,转换起来很简单:

    mov ebx,0          ;ebx=0;
second:
mov ecx,0 ;ecx=0;
first:
;/* statements.... */
inc ecx ;ecx++;
cmp ecx,10 ;if(ecx < 10)
jb first ;goto first;
inc ebx ;ebx++;
cmp ebx,10 ;if(ebx < 10)
jb second ;goto second;

关于assembly - 汇编语言中的嵌套循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23713682/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com