After studying this chapter you will be able to understand: Explain why arrays are needed to solve many types of problems; construct an array to store multiple related data values; use ArrayList, Hashtable, and SortedList collections to store and process data values. | 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 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 .