Assembly Language for Intel-Based Computers, 4 th Edition Lecture 22: Conditional Loops (c) Pearson Education, 2002. All rights reserved. You may modify.

Slides:



Advertisements
Similar presentations
CSC 221 Computer Organization and Assembly Language Lecture 21: Conditional and Block Structures: Assembly Programs.
Advertisements

Assembly Language for Intel-Based Computers, 4 th Edition Chapter 1: Basic Concepts (c) Pearson Education, All rights reserved. You may modify and.
Assembly Language for x86 Processors 6th Edition Chapter 5: Procedures (c) Pearson Education, All rights reserved. You may modify and copy this slide.
Deeper Assembly: Addressing, Conditions, Branching, and Loops
Assembly Language for x86 Processors 6th Edition
Web siteWeb site ExamplesExamples Irvine, Kip R. Assembly Language for Intel-Based Computers, Conditional Loop Instructions LOOPZ and LOOPE LOOPNZ.
Assembly Language for Intel-Based Computers Chapter 8: Advanced Procedures Kip R. Irvine.
Conditional Processing
Assembly Language for Intel-Based Computers, 4 th Edition Chapter 6: Conditional Processing (c) Pearson Education, All rights reserved. You may modify.
Assembly Language for Intel-Based Computers, 4 th Edition Chapter 7: Integer Arithmetic (c) Pearson Education, All rights reserved. You may modify.
Assembly Language for Intel-Based Computers Chapter 5: Procedures Kip R. Irvine.
Assembly Language for Intel-Based Computers
Assembly Language for Intel-Based Computers, 5 th Edition Chapter 6: Conditional Processing (c) Pearson Education, All rights reserved. You.
Assembly Language for Intel-Based Computers, 4 th Edition Chapter 6: Conditional Processing (c) Pearson Education, All rights reserved. You may modify.
CS2422 Assembly Language and System Programming Conditional Processing Department of Computer Science National Tsing Hua University.
Assembly Language for Intel-Based Computers, 4 th Edition Chapter 6: Conditional Processing (c) Pearson Education, All rights reserved. You may modify.
Assembly Language for Intel-Based Computers, 4th Edition
Assembly Language for Intel-Based Computers, 5 th Edition Chapter 1: Basic Concepts (c) Pearson Education, All rights reserved. You may modify.
Assembly Language for Intel-Based Computers, 4 th Edition Lecture 23: Finite State Machines, WHILE operator (c) Pearson Education, All rights reserved.
Web siteWeb site ExamplesExamples Irvine, Kip R. Assembly Language for Intel-Based Computers, Defining and Using Procedures Creating Procedures.
Web siteWeb site ExamplesExamples Irvine, Kip R. Assembly Language for Intel-Based Computers, Stack Operations Runtime Stack PUSH Operation POP.
Conditional Processing If … then … else While … do; Repeat … until.
1 Lecture 6 Conditional Processing Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.
CS2422 Assembly Language & System Programming October 19, 2006.
Quiz #2 Topics Character codes Intel IA-32 architecture Mostly MASM
Assembly Language for Intel-Based Computers, 4 th Edition Chapter 2: IA-32 Processor Architecture (c) Pearson Education, All rights reserved. You.
Conditional Processing Computer Organization & Assembly Language Programming Dr Adnan Gutub aagutub ‘at’ uqu.edu.sa [Adapted from slides of Dr. Kip Irvine:
Assembly Language for Intel-Based Computers, 6 th Edition Chapter 8: Advanced Procedures (c) Pearson Education, All rights reserved. You may.
Assembly Language for x86 Processors 7th Edition
Web siteWeb site ExamplesExamples ASSEMBLY LANGUAGE FOR INTEL- BASED COMPUTERS, 5 TH EDITION Chapter 6: Conditional Processing Kip R. Irvine.
Assembly Language for Intel-Based Computers, 6 th Edition Chapter 6: Conditional Processing (c) Pearson Education, All rights reserved. You may modify.
Fall 2013 Chapter 6: Conditional Processing. Questions Answered by this Chapter How can I use the boolean operations introduced in Chapter 1 (AND, OR,
Assembly Language for Intel-Based Computers, 5 th Edition Chapter 6: Conditional Processing (c) Pearson Education, All rights reserved. You.
Assembly Language for x86 Processors 6th Edition
Chapter 6: Conditional Processing. 2 Chapter Overview Boolean and Comparison Instructions Conditional Jumps Conditional Loop Instructions Conditional.
Assembly Language for Intel-Based Computers, 5 th Edition Chapter 6: Conditional Processing (c) Pearson Education, All rights reserved. You.
Assembly Language for Intel-Based Computers Chapter 7: Integer Arithmetic (c) Pearson Education, All rights reserved. You may modify and copy.
Assembly Language for Intel-Based Computers, 4 th Edition Chapter 4: Data Transfers, Addressing, and Arithmetic Lecture 15: ADD, SUB, NEG and how they.
Assembly Language for Intel-Based Computers, 5 th Edition Chapter 6: Conditional Processing (c) Pearson Education, All rights reserved. You.
Computer Architecture and Operating Systems CS 3230 :Assembly Section Lecture 5 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Assembly Language. Symbol Table Variables.DATA var DW 0 sum DD 0 array TIMES 10 DW 0 message DB ’ Welcome ’,0 char1 DB ? Symbol Table Name Offset var.
Assembly Language for Intel-Based Computers, 4 th Edition Unpacked and Packed Integers (c) Pearson Education, All rights reserved. You may modify.
Assembly Language for Intel-Based Computers, 4 th Edition Chapter 5: Procedures Lecture 18 Linking to External Library The Book’s Link Library Stack Operations.
Conditional Loop Instructions, Conditional Structures
Assembly Language for Intel-Based Computers, 4 th Edition Chapter 5: Procedures Lecture 19: Procedures Procedure’s parameters (c) Pearson Education, 2002.
Conditional Processing Computer Organization and Assembly Languages Yung-Yu Chuang 2005/11/03 with slides by Kip Irvine.
CSC 221 Computer Organization and Assembly Language Lecture 16: Procedures.
CSC 221 Computer Organization and Assembly Language Lecture 15: STACK Related Instructions.
CSC 221 Computer Organization and Assembly Language Lecture 20: Conditional and Block Structures.
Assembly Language for Intel-Based Computers, 4 th Edition Chapter 2: IA-32 Processor Architecture (c) Pearson Education, All rights reserved. You.
Assembly Language for Intel-Based Computers, 4 th Edition Week 10: Conditional Processing Slides modified by Dr. Osama Younes.
Assembly Language for Intel-Based Computers, 4 th Edition Chapter 6: Conditional Processing (c) Pearson Education, All rights reserved. You may modify.
Assembly Language for x86 Processors 6th Edition
CSC 221 Computer Organization and Assembly Language
Assembly Language for x86 Processors 7th Edition
Assembly Language for Intel-Based Computers, 5th Edition
Chapter 6: Conditional Processing
Deeper Assembly: Addressing, Conditions, Branching, and Loops
CSC 221 Computer Organization and Assembly Language
Assembly Language for x86 Processors 7th Edition
Assembly Language for Intel-Based Computers, 4th Edition
Assembly IA-32.
Assembly Language for Intel-Based Computers, 4th Edition
Computer Organization and Assembly Language
Assembly Language for Intel-Based Computers, 5th Edition
X86 Assembly Review.
Conditional Processing
Presentation transcript:

Assembly Language for Intel-Based Computers, 4 th Edition Lecture 22: Conditional Loops (c) Pearson Education, All rights reserved. You may modify and copy this slide show for your personal use, or for use in the classroom, as long as this copyright statement, the author's name, and the title are not changed. Chapter corrections (Web)Assembly language sources (Web)Chapter correctionsAssembly language sources Slides prepared by Kip R. Irvine Revision date: 07/11/2002 Modified by Dr. Nikolay Metodiev Sirakov Fall 2012 Kip R. Irvine

Web siteWeb site ExamplesExamples Lecture 22, April , 3PM-4:15 Irvine, Kip R. Assembly Language for Intel-Based Computers, Conditional Loop Instructions LOOPZ and LOOPE LOOPNZ and LOOPNE

Web siteWeb site ExamplesExamples Lecture 22, April , 3PM-4:15 Irvine, Kip R. Assembly Language for Intel-Based Computers, LOOPZ and LOOPE Syntax: LOOPE destination LOOPZ destination Logic: ECX  ECX – 1 if ECX > 0 and ZF=1, jump to destination Useful when scanning an array for the first element that does not match a given value.

Web siteWeb site ExamplesExamples Lecture 22, April , 3PM-4:15 Irvine, Kip R. Assembly Language for Intel-Based Computers, LOOPNZ and LOOPNE LOOPNZ (LOOPNE) is a conditional loop instruction Syntax: LOOPNZ destination LOOPNE destination Logic: ECX  ECX – 1; if ECX > 0 and ZF=0, jump to destination Useful when scanning an array for the first element that matches a given value.

Web siteWeb site ExamplesExamples Lecture 22, April , 3PM-4:15 Irvine, Kip R. Assembly Language for Intel-Based Computers, LOOPNZ Example.data array SWORD -3,-6,-1,-10,10,30,40,4 sentinel SWORD 0.code mov esi,OFFSET array mov ecx,LENGTHOF array next: test WORD PTR [esi],8000h; test sign bit pushfd; push flags on stack add esi,TYPE array popfd; pop flags from stack loopnz next; continue loop jnz quit; none found sub esi,TYPE array; ESI points to value quit: The following code finds the first positive value in an array:

Web siteWeb site ExamplesExamples Lecture 22, April , 3PM-4:15 Irvine, Kip R. Assembly Language for Intel-Based Computers, Your turn....data array SWORD 50 DUP(?) sentinel SWORD 0FFFFh.code mov esi,OFFSET array mov ecx,LENGTHOF array L1:cmp WORD PTR [esi],0; check for zero (fill in your code here) quit: Locate the first nonzero value in the array. If none is found, let ESI point to the sentinel value:

Web siteWeb site ExamplesExamples Lecture 22, April , 3PM-4:15 Irvine, Kip R. Assembly Language for Intel-Based Computers, (solution).data array SWORD 50 DUP(?) sentinel SWORD 0FFFFh.code mov esi,OFFSET array mov ecx,LENGTHOF array L1:cmp WORD PTR [esi],0; check for zero pushfd; push flags on stack add esi,TYPE array popfd; pop flags from stack loope L1; continue loop jz quit; none found sub esi,TYPE array; ESI points to value quit:

Web siteWeb site ExamplesExamples Lecture 22, April , 3PM-4:15 Irvine, Kip R. Assembly Language for Intel-Based Computers, Conditional Structures Block-Structured IF Statements Compound Expressions with AND Compound Expressions with OR WHILE Loops Table-Driven Selection

Web siteWeb site ExamplesExamples Lecture 22, April , 3PM-4:15 Irvine, Kip R. Assembly Language for Intel-Based Computers, Block-Structured IF Statements Assembly language programmers can easily translate logical statements written in C++/Java into assembly language. For example: mov eax,op1 cmp eax,op2 jne L1 body1 jmp L2 L1:body2 L2: if( op1 == op2 ) body1; else body2;

Web siteWeb site ExamplesExamples Lecture 22, April , 3PM-4:15 Irvine, Kip R. Assembly Language for Intel-Based Computers, Your turn... Implement the following pseudocode in assembly language. All values are unsigned: cmp ebx,ecx ja next body next: if( ebx <= ecx ) { body } (There are multiple correct solutions to this problem.)

Web siteWeb site ExamplesExamples Lecture 22, April , 3PM-4:15 Irvine, Kip R. Assembly Language for Intel-Based Computers, Your turn... Implement the following pseudocode in assembly language. All values are 32-bit signed integers: mov eax,var1 cmp eax,var2 jle L1 mov var3,6 mov var4,7 jmp L2 L1:mov var3,10 L2: if( var1 <= var2 ) var3 = 10; else { var3 = 6; var4 = 7; } (There are multiple correct solutions to this problem.)

Web siteWeb site ExamplesExamples Lecture 22, April , 3PM-4:15 Irvine, Kip R. Assembly Language for Intel-Based Computers, Compound Expression with AND (1 of 3) We can implement a Boolean expression that uses the local AND operator: In the following example, if the first expression is false, the second expression is skipped; The Assembler will execute the body if both conditions are satisfied. if (al > bl) AND (bl > cl) { body }

Web siteWeb site ExamplesExamples Lecture 22, April , 3PM-4:15 Irvine, Kip R. Assembly Language for Intel-Based Computers, Compound Expression with AND (2 of 3) cmp al,bl; first expression... ja L1 jmp next L1: cmp bl,cl; second expression... ja L2 jmp next L2:; both are true mov X,1; set X to 1 next: if (al > bl) AND (bl > cl) X = 1; This is one possible implementation...

Web siteWeb site ExamplesExamples Lecture 22, April , 3PM-4:15 Irvine, Kip R. Assembly Language for Intel-Based Computers, Compound Expression with AND (3 of 3) cmp al,bl; first expression... jbe next; quit if false cmp bl,cl; second expression... jbe next; quit if false mov X,1; both are true next: if (al > bl) AND (bl > cl) X = 1; But the following implementation uses 29% less code by reversing the first relational operator. We allow the program to "fall through" to the second expression:

Web siteWeb site ExamplesExamples Lecture 22, April , 3PM-4:15 Irvine, Kip R. Assembly Language for Intel-Based Computers, Your turn... Implement the following pseudocode in assembly language. All values are unsigned: cmp ebx,ecx ja next cmp ecx,edx jbe next mov eax,5 mov edx,6 next: if( ebx <= ecx && ecx > edx ) { eax = 5; edx = 6; } (There are multiple correct solutions to this problem.)

Web siteWeb site ExamplesExamples Lecture 22, April , 3PM-4:15 Irvine, Kip R. Assembly Language for Intel-Based Computers, Compound Expression with OR (1 of 2) We can implement a Boolean expression that uses the local OR operator In the following example, if the first expression is true, the second expression is skipped; The Assembler will execute the body if at least one condition is satisfied. if (al > bl) OR (bl > cl) body;

Web siteWeb site ExamplesExamples Lecture 22, April , 3PM-4:15 Irvine, Kip R. Assembly Language for Intel-Based Computers, Compound Expression with OR (1 of 2) cmp al,bl; is AL > BL? ja L1; yes cmp bl,cl; no: is BL > CL? jbe next; no: skip next statement L1:mov X,1; set X to 1 next: if (al > bl) OR (bl > cl) X = 1; We can use "fall-through" logic to keep the code as short as possible:

Web siteWeb site ExamplesExamples Lecture 22, April , 3PM-4:15 Irvine, Kip R. Assembly Language for Intel-Based Computers, WHILE Loops while( eax < ebx) eax = eax + 1; A WHILE loop is really an IF statement followed by the body of the loop, followed by an unconditional jump to the top of the loop. Consider the following example: top:cmp eax,ebx; check loop condition jae next; false? exit loop inc eax; body of loop jmp top; repeat the loop next: This is a possible implementation:

Web siteWeb site ExamplesExamples Lecture 22, April , 3PM-4:15 Irvine, Kip R. Assembly Language for Intel-Based Computers, Your turn... top:cmp ebx,val1; check loop condition ja next; false? exit loop add ebx,5; body of loop dec val1 jmp top; repeat the loop next: while( ebx <= val1) { ebx = ebx + 5; val1 = val1 - 1 } Implement the following loop, using unsigned 32-bit integers:

Web siteWeb site ExamplesExamples Lecture 22, April , 3PM-4:15 Irvine, Kip R. Assembly Language for Intel-Based Computers, Table-Driven Selection (1 of 3) Table-driven selection uses a table lookup to replace a multi-way selection structure Create a table containing lookup values and the offsets of labels or procedures Use a loop to search the table Suited to a large number of comparisons

Web siteWeb site ExamplesExamples Lecture 22, April , 3PM-4:15 Irvine, Kip R. Assembly Language for Intel-Based Computers, Table-Driven Selection (2 of 3).data CaseTable BYTE 'A'; lookup value DWORD Process_A; address of procedure EntrySize = ($ - CaseTable) BYTE 'B' DWORD Process_B BYTE 'C' DWORD Process_C BYTE 'D' DWORD Process_D NumberOfEntries = ($ - CaseTable) / EntrySize Step 1: create a table containing lookup values and procedure offsets:

Web siteWeb site ExamplesExamples Lecture 22, April , 3PM-4:15 Irvine, Kip R. Assembly Language for Intel-Based Computers, Table-Driven Selection (3 of 3) mov ebx,OFFSET CaseTable; point EBX to the table mov ecx,NumberOfEntries; loop counter L1:cmp al,[ebx]; match found? jne L2; no: continue call NEAR PTR [ebx + 1]; yes: call the procedure jmp L3; and exit the loop L2:add ebx,EntrySize; point to next entry loop L1; repeat until ECX = 0 L3: Step 2: Use a loop to search the table. When a match is found, we call the procedure offset stored in the current table entry: required for procedure pointers