Presentation is loading. Please wait.

Presentation is loading. Please wait.

CEN 226: Computer Organization & Assembly Language :CSC 225 (Lec#5) By Dr. Syed Noman.

Similar presentations


Presentation on theme: "CEN 226: Computer Organization & Assembly Language :CSC 225 (Lec#5) By Dr. Syed Noman."— Presentation transcript:

1 CEN 226: Computer Organization & Assembly Language :CSC 225 (Lec#5) By Dr. Syed Noman

2 Flag Register Flag is a bit of special information usually implemented with flip flop Total 9 Flags ▫6 Status Flags: C, A, S, Z, P, O ▫3 Control flags: I, T, D 2

3 8086 Flags - Bit Positions and Names

4 Debug Flag Mnemonics

5 Status Flags Sign(SF) – set when the most significant bit is a one. Zero(ZF) – set when the result of an arithmetic or logical operation is zero. Carry (CF) – set when the result of an unsigned arithmetic operation produces a carryout. Overflow(OF) – set when the result of a signed arithmetic operation is in error. Auxilary (AF) – set when carry is generated from bit 3 to 4 in addition or borrow is taken during subtraction from bit 4 to 3. Parity (PF) – set when number of 1’s are odd in the answer.

6 Problem What are the flag settings of the result of the following 8-bit HEX addition? ▫D7h + CAh ▫D7h + CAh = A1h ▫Zero (0) ▫Negative(1) ▫Carryout (1) ▫Overflow (0) ▫Auxiliary Carry (1) ▫Parity (1)

7 Problem What are the flag settings of the result of the following 8-bit HEX addition? ▫38h + C8h ▫38h + C8h = 00h ▫Zero (1) ▫Negative(0) ▫Carryout (1) ▫Overflow (0) ▫Auxiliary Carry (1) ▫Parity (0)

8 Overflow flag 8 A negative result out of positive operands (or vice versa) is an overflow if we add 127 and 127 using 8-bit registers. 127+127 is 254, but using 8-bit arithmetics the result would be 1111 1110 binary, which is -2 in two's complement, and thus negative.

9 Program Control Instructions Instructions that direct the flow of a program and allow the flow to change. Unconditional Jump (jmp) Conditional Jumps 9

10 Jumps Based on Specific Flags

11 Jumps Based on Equality

12 Jumps Based on Unsigned Comparisons

13 Jumps Based on Signed Comparisons

14 Conditional Jump Instructions

15 The Compare Command Compares the destination operand to the source operand ▫Nondestructive subtraction of source from destination (destination operand is not changed) Syntax: CMP destination, source Example: destination == source 15

16 CMP Instruction (1 of 3) mov al,5 cmp al,5; Zero flag set Example: destination < source mov al,4 cmp al,5; Carry flag set

17 CMP Instruction (2 of 3) Example: destination > source mov al,6 cmp al,5; ZF = 0, CF = 0 (both the Zero and Carry flags are clear)

18 CMP Instruction (3 of 3) Example: destination > source mov al,5 cmp al,-2; Sign flag == Overflow flag The comparisons shown here are performed with signed integers. Example: destination < source mov al,-1 cmp al,5; Sign flag != Overflow flag

19 Difference In Interpretation Of Signed And Unsigned Numbers.MODEL SMALL.STACK 100H.DATA MSG1 DB 13,10,"YES JUMP HAPPENS IN SING$" MSG2 DB 13,10,"JUMP HAPPENED FOR UNSIGNED$".CODE START: MOV AX,@DATA MOV DS,AX MOV BH,10000000B ;CMP BH,11111111B CMP BH,01111111B JG SIGNM JA UNSIGN SIGNM: MOV AH,9 LEA DX,MSG1 INT 21H JMP TERM UNSIGN: MOV AH,9 LEA DX,MSG2 INT 21H TERM: MOV AX,4C00H INT 21H END START END 19

20 Example-1 Example : Using the jz instruction. mov ax, 2 ; ax = 2 sub ax, bx ; ax = 2 - bx jz nextl ; jump if (ax-bx) == 0 inc ax ; ax = ax + 1 nextl: inc bx The above is equivalent to: ax = 2; if ( ax != bx ) { ax = ax + 1 ; } bx = bx + 1 ; 20

21 Example-2 C version if ( i == 10 ) { i = i + 5 ; j = j + 5 ; } /* Rest of program */ Assembly version cmp i, 10 jne rest ; if i != 10 goto rest add i, 5 ; otherwise do action part add j, 5 rest: ; rest of program 21

22 Practice Program in class Write a program that inputs a character and prints whether it is uppercase or lowercase English alphabet. 22

23 Practice Program solution.model small. stack 100h.data msg0 db 13,10, "Enter a character:: $" msg1 db 13,10,"it is an uppercase letter.$" msg2 db 13,10,"it is a lowercase letter.$" msg3 db 13,10,"it is NOT a letter!$".code start: mov ax, @data mov ds, ax mov ah,9 lea dx,msg0 int 21h mov ah,1 int 21h mov bh, al cmp bh,'A' jb not_a_letter cmp bh,'Z' jbe uppercase cmp bh,'a' jb not_a_letter; means between 91 - 96 included cmp bh,'z' jbe lowercase not_a_letter: mov ah,9 lea dx,msg3 int 21h jmp finish uppercase: mov ah,9 lea dx, msg1 int 21h jmp finish lowercase: mov ah,9 lea dx, msg2 int 21h finish: mov ax,4c00h int 21h end start 23

24 Assignment 2a Write a program that inputs a character and prints it is a digit, or uppercase/lowercase English alphabet or some other character. 24


Download ppt "CEN 226: Computer Organization & Assembly Language :CSC 225 (Lec#5) By Dr. Syed Noman."

Similar presentations


Ads by Google