作者LPH66 ((short)(-15074))
看板Programming
标题Re: [讨论] 组合语言loop回圈指令的疑问
时间Sun Mar 28 02:15:04 2010
※ 引述《jimmy5566 (56好棒)》之铭言:
: .code
: main PROC
: mov ax,0
: mov ecx,5
: L1:add ax,cx
: loop L1
: 执行结果为 5+4+3+2+1=15
: 现在如果希望执行出来的结果为
: (5+4+3+2+1)+(5+4+3+2+1)+(5+4+3+2+1)+(5+4+3+2+1)+(5+4+3+2+1)=75
: 这样原来的程式要加入什麽指令才能达成?
我是喜欢用把 ecx 推进 stack 的小技巧:
;其他宣告略
mov ax,0
;这是外层回圈
mov ecx, 5
L2: push ecx ;外层的 ecx 留起来
;这是内层回圈
mov ecx, 5
L1: add ax,cx
loop L1
;内层回圈结束了
pop ecx ;拿出留起来的外层 ecx
loop L2
自己实际在写时也会像写 C 的双层回圈一样把内层缩进去
这样可以马上知道这是个双层回圈 也方便检查有没有正确留好 ecx 的值
多层也可以类推 就多推几个就是了 XD
--
◢ ˊ_▂▃▄▂_ˋ. ◣ ▅▅ ▅▅ ι●╮ █
▄▄▄▄▄
▍
./◤_▂▃▄▂_◥ \'▊ HARUHI █████ <■┘ ▄▄▄▄▄▄▄
▎
⊿ ◤◤◥█◥◥█Δ ISM By-gamejye ¢|\ ▌▌▌▌▌▄▌▌
▏
ζ(▏●‵◥′●▊)Ψ ▏ █
⊿Δ ▄▄▄ ▄▄▄▄
█/|▊ 〃 、 〃▋ |\ ▎ ハルヒ主义 █
▄▄▄█▄▄
◥◥|◣ ‵′ ◢/'◢◢
S.O.S 世界を大いに盛り上げるための凉宫ハルヒの団
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.28.92
1F:推 jimmy5566:感恩~ 122.122.129.10 03/28 11:38