Re: [討論] 組合語言loop迴圈指令的疑問
※ 引述《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
推
03/28 11:38, , 1F
03/28 11:38, 1F
討論串 (同標題文章)