Loop structures: Difference between revisions
Content added Content deleted
(→SIMPOL) |
Puppydrum64 (talk | contribs) No edit summary |
||
Line 20: | Line 20: | ||
'''Examples here should be migrated to an appropriate [[:Category:Iteration|Iteration]] page and removed from here. If a page does not exist demonstrating a particular loop structure, discuss it [[:Category talk:Iteration|here]].''' |
'''Examples here should be migrated to an appropriate [[:Category:Iteration|Iteration]] page and removed from here. If a page does not exist demonstrating a particular loop structure, discuss it [[:Category talk:Iteration|here]].''' |
||
<br><br> |
<br><br> |
||
=={{header|68000 Assembly}}== |
|||
'''NOT COVERED IN LOOP PAGES''' |
|||
The 68000 uses <code>DBxx Dn, label</code> for loop counting. "Dn" refers to a chosen data register. The "xx" is replaced with the condition code of your choice (<code>DBRA</code> stands for Decrement, Branch Always which is most commonly used). Execution will jump to the labeled line of code unless Dn's lower two bytes equal #$FFFF or the specified condition code is true, whichever occurs first. Keep in mind that the condition code has nothing to do with the value stored in Dn; rather, it represents the outcome of the operation just before the branch. This is similar to a "repeat until" construct in some other languages. |
|||
The below code snippet represents a loop that continues until a value greater than 3500 is read. However, it will also end after the 2000th iteration automatically, regardless of whether the condition is ever met. |
|||
<lang 68000devpac>MOVE.W #1999,D1 ;DBxx loop counters need to be pre-decremented to work properly, since they terminate at $FFFF rather than 0 |
|||
LOOP: |
|||
MOVE.W (A0)+,D0 |
|||
CMP.W #3501,D0 ;COMPARE TO #3501 |
|||
DBCC D1,LOOP ;DECREMENT, BRANCH UNTIL CARRY CLEAR OR D1 = #$FFFF |
|||
=={{header|AmbientTalk}}== |
=={{header|AmbientTalk}}== |