在彙編中能夠使用 loop 段地址:偏移地址
並配合 cx 達到循環執行的目的,可是在一些資料中看到說,cx 是循環的次數,我以爲這是不對的。oop
好比下面這段代碼的做用是使得最終的 ax 中的值爲 3code
assume cs:code code segment start: sub ax, ax mov bx, 1 mov cx, 3 lp: add ax, bx loop lp code ends end start
loop 指令的執行步驟是這樣的循環
那麼整個 loop 的步驟是語言
第 1 次loop
cx = 3 - 1 cx 爲 2 大於 0 ax 累加 1,此時 ax 中的值爲 2
第 2 次while
cx = 2 - 1 cx 爲 1 大於 0 ax 累加 1,此時 ax 中的值爲 3
第 3 次co
cx = 1 - 1 cx 爲 0 結束循環,ax 再也不繼續累加
因此,雖然 cx 開始時被設置成了 3,可是循環的次數並非 3,而是 2。若是用 c 語言去描述這段彙編的執行順序應該是tar
int cx = 3; int ax = 0; ax++; cx--; while(cx){ ax++; cx--; }