Re: [討論] 組合語言loop迴圈指令的疑問

看板Programming作者 (Analog Engineer)時間14年前 (2010/03/28 21:52), 編輯推噓1(102)
留言3則, 3人參與, 最新討論串3/3 (看更多)
※ 引述《LPH66 ((short)(-15074))》之銘言: : ※ 引述《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 的小技巧: : 多層也可以類推 就多推幾個就是了 XD 在意執行速度的話,可以在外層使用其他暫存器, 如 BX MOV AX,0 MOV EBX,5 P2: MOV ECX,5 P1: ADD AX,CX LOOP P1 DEC EBX JNZ P2 因為原程式PUSH/POP完馬上要用到那個暫存器,亂序執行功能派不上場,速度會 被拖慢,這樣改會快一點. 你可以試試看. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.67.195.213

03/29 19:37, , 1F
JNZ是什麼指令?
03/29 19:37, 1F

03/30 16:11, , 2F
jump when not Z, 查一下x86指令集就知
03/30 16:11, 2F

04/01 01:16, , 3F
LOOP 很慢 decjnz>testjz>cmpjne>loop
04/01 01:16, 3F
文章代碼(AID): #1BhrywF5 (Programming)
文章代碼(AID): #1BhrywF5 (Programming)