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

Slides:



Advertisements
Similar presentations
Flow of Control Instruction/Control structure Looping structure Looping structure Branching structure Branching structure For assembly language program.
Advertisements

Assembly Language for x86 Processors 6 th Edition Chapter 1: Introduction to ASM (c) Pearson Education, All rights reserved. You may modify and copy.
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.
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
Assembly Language for Intel-Based Computers, 5 th Edition Chapter 6: Conditional Processing (c) Pearson Education, All rights reserved. You.
CS2422 Assembly Language & System Programming October 17, 2006.
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.
Flow Control Instructions
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.
Conditional Processing If … then … else While … do; Repeat … until.
CS2422 Assembly Language and System Programming High-Level Language Interface Department of Computer Science National Tsing Hua University.
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
Conditional Processing Computer Organization & Assembly Language Programming Dr Adnan Gutub aagutub ‘at’ uqu.edu.sa [Adapted from slides of Dr. Kip Irvine:
Low Level Programming Lecturer: Duncan Smeed Low Level Program Control Structures.
Web siteWeb site ExamplesExamples ASSEMBLY LANGUAGE FOR INTEL- BASED COMPUTERS, 5 TH EDITION Chapter 6: Conditional Processing Kip R. Irvine.
Wednesday Feb 1 Project #1 Due Sunday, February 3 Quiz #2 Wednesday, February 6, in class Programming Project #2 is posted Due Sunday, February 10.
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 x86 Processors 7th Edition Chapter 13: High-Level Language Interface (c) Pearson Education, All rights reserved. You may modify.
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.
EEL 3801 Part V Conditional Processing. This section explains how to implement conditional processing in Assembly Language for the 8086/8088 processors.
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.
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 Lecture 22: Conditional Loops (c) Pearson Education, All rights reserved. You may modify.
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.
CS2422 Assembly Language and System Programming 0 Week 13 & 14 Codes in Assembly Language.
Assembly תרגול 7 תכנות באסמבלי, המשך. Condition Codes Single bit registers  CF – carry flag  ZF – zero flag  SF – sign flag  OF – overflow flag Relevant.
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 Language for Intel-Based Computers, 5th Edition
Morgan Kaufmann Publishers Computer Organization and Assembly Language
Microprocessor and Assembly Language
Computer Organization and Assembly Language
فصل پنجم انشعاب و حلقه.
Program Logic and Control
Program Logic and Control
EECE.3170 Microprocessor Systems Design I
Conditional Processing
Jump & Loop instructions
Chapter 7 –Program Logic and Control
Chapter 7 –Program Logic and Control
Presentation transcript:

CSC 221 Computer Organization and Assembly Language Lecture 21: Conditional and Block Structures: Assembly Programs

Lecture 20: Review BT (Bit Test) Instruction Copies bit n from an operand into the Carry flag Syntax: BT bitBase, n –bitBase may be r/m16 or r/m32 –n may be r16, r32, or imm8

Lecture 20: Review LOOPZ (LOOPE) Syntax: LOOPE/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. LOOPNZ (LOOPNE) Syntax: LOOPNZ/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. (cont.)

Lecture 20: Review Conditional Structures Block-Structured IF Statements Compound Expressions with AND Compound Expressions with OR WHILE Loops REPEAT Loops (cont.)

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 mov X,1 jmp L2 L1:mov X,2 L2: if( op1 == op2 ) X = 1; else X = 2;

Compound Expression with AND When implementing the logical AND operator, consider that HLLs use short-circuit evaluation In the following example, if the first expression is false, the second expression is skipped: if (al > bl) AND (bl > cl) X = 1; 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:

Compound Expression with OR (1 of 2) When implementing the logical OR operator, consider that HLLs use short-circuit evaluation In the following example, if the first expression is true, the second expression is skipped: if (al > bl) OR (bl > cl) X = 1; 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:

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:

Using the.IF Directive Runtime Expressions Relational and Logical Operators MASM-Generated Code.REPEAT Directive.WHILE Directive

Runtime Expressions.IF eax > ebx mov edx,1.ELSE mov edx,2.ENDIF.IF,.ELSE,.ELSEIF, and.ENDIF can be used to evaluate runtime expressions and create block-structured IF statements. Examples: MASM generates "hidden" code for you, consisting of code labels, CMP and conditional jump instructions..IF eax > ebx && eax > ecx mov edx,1.ELSE mov edx,2.ENDIF

.REPEAT Directive ; Display integers 1 – 10: mov eax,0.REPEAT inc eax call WriteDec call Crlf.UNTIL eax == 10 Executes the loop body before testing the loop condition associated with the.UNTIL directive. Example:

.WHILE Directive ; Display integers 1 – 10: mov eax,0.WHILE eax < 10 inc eax call WriteDec call Crlf.ENDW Tests the loop condition before executing the loop body The.ENDW directive marks the end of the loop. Example:

LET’s ENJOY ASSEMBLY LANGUAGE

Summary ASSEMBLY IMPLEMENTATION OF: Bit Test Instruction –Copies bit n from an operand into the Carry flag –Syntax: BT bitBase, n Conditional LOOP Instructions –LOOPZ and LOOPE LOOPZ/LOOPE destination Logic: –ECX  ECX – 1 –if ECX > 0 and ZF=1, jump to destination –LOOPNZ and LOOPNE LOOPZ/LOOPE destination Logic: –ECX  ECX – 1 –if ECX > 0 and ZF=0, jump to destination

Summary ASSEMBLY IMPLEMENTATION OF: Block Structures –Block-Structured IF Statements –Compound Expressions with AND –Compound Expressions with OR –WHILE Loops –REPEAT Loops (cont.)

Reference Most of the Slides are taken from Presentation: Chapter 6 Assembly Language for Intel-Based Computers, 4 th Edition Kip R. Irvine (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.