首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么这个循环的结果是20而不是120?

为什么这个循环的结果是20而不是120?
EN

Stack Overflow用户
提问于 2019-03-27 05:07:25
回答 1查看 31关注 0票数 -2

为什么这个循环的结果是20而不是120?

ORG 100H 
  facto dw ? 
START: 
   MOV CX, 5 
   MOV AX, 5
   DEC CX  
   repeat : 
     MUL CX 
     MOV facto , AX 
   LOOP repeat 
ENDS
END START :
EN

回答 1

Stack Overflow用户

发布于 2019-03-27 08:59:58

代码运行得很好,尽管有一些不需要的命令。以下是在FASM中测试的完整代码。您将看到我将mov cx,5和dec cx组合为mov cx,4,并将赋值从ax移至远离循环的事实,以避免不必要的代码执行。

format PE console
entry main
include '%INCLUDE%/win32a.inc'

section '.data' data readable writeable
facto dd 0

section '.text' code readable executable

main:
    mov ecx, 4
    mov eax, 5
L0:
    mul ecx
loop L0
    mov [facto], eax
    invoke  ExitProcess,    eax

section '.idata' data import readable
library kernel32,'kernel32.dll'

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

https://stackoverflow.com/questions/55366201

复制
相关文章

相似问题

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