23
Assembly Language :CSC 225 (Lec#4: Flag Register and Conditional Statements) By Dr. Syed Noman

Assembly Language :CSC 225 (Lec#4: Flag Register and Conditional Statements ) By Dr. Syed Noman

Embed Size (px)

Citation preview

Assembly Language :CSC 225(Lec#4: Flag Register and Conditional

Statements)

ByDr. Syed Noman

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

8086 Flags - Bit Positions and Names

Bit Name0 CF Carry12 PF Parity34 AF Auxiliary Carry5 6 ZF Zero7 SF Sign8 TF Trap9 IF Interrupt Enable

10 DF Direction11 OF Overflow12 131415

Debug Flag Mnemonics F=0

F=1

NV UP DI PL NZ NA PE NCOV DN EI NG ZR AC PO CY

Overflow Direction InterruptEnable

CarryCarry(Negative)

Sign Zero Auxiliary Parity

Debug Flag Mnemonics      

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.

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)

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)

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.

Program Control Instructions

•Instructions that direct the flow of a program and allow the flow to change.

•Unconditional Jump (jmp)•Conditional Jumps

9

Jumps Based on Specific Flags

Jumps Based on Equality

Jumps Based on Unsigned Comparisons

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

13

Jumps Based on Signed Comparisons

Difference In Interpretation Of Signed And Unsigned Numbers

.MODEL SMALL

.STACK 100H

.DATAMSG1 DB 13,10,"YES JUMP HAPPENS

IN SING$"MSG2 DB 13,10,"JUMP HAPPENED FOR

UNSIGNED$".CODESTART:MOV AX,@DATAMOV DS,AX

MOV BH,10000000B;CMP BH,11111111BCMP BH,01111111BJG SIGNMJA UNSIGN

SIGNM:MOV AH,9LEA DX,MSG1INT 21HJMP TERM

UNSIGN:MOV AH,9LEA DX,MSG2INT 21H

TERM:MOV AX,4C00HINT 21HEND STARTEND

15

Conditional Jump Instructions

CMP Instruction (1 of 3)

mov al,5cmp al,5 ; Zero flag set

• Example: destination < source

mov al,4cmp al,5 ; Carry flag set

CMP Instruction (2 of 3)

• Example: destination > source

mov al,6cmp al,5 ; ZF = 0, CF = 0

(both the Zero and Carry flags are clear)

CMP Instruction (3 of 3)

• Example: destination > source

mov al,5cmp al,-2 ; Sign flag == Overflow flag

The comparisons shown here are performed with signed integers.

• Example: destination < source

mov al,-1cmp al,5 ; Sign flag != Overflow flag

Example-1• Example : Using the jz instruction.

mov ax, 2 ; ax = 2sub ax, bx ; ax = 2 - bxjz nextl ; jump if (ax-bx) == 0inc ax ; ax = ax + 1nextl:inc bx

• The above is equivalent to:ax = 2;if ( ax != bx ){ax = ax + 1 ;}bx = bx + 1 ;

20

Example-2

•C versionif ( i == 10 ){i = i + 5 ;j = j + 5 ;}/* Rest of program */• Assembly versioncmp i, 10jne rest ; if i != 10 goto restadd i, 5 ; otherwise do action partadd j, 5rest: ; rest of program

21

Practice Program in class

•Write a program that inputs a character and prints whether it is uppercase or lowercase English alphabet.

22

Assignment 4a

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

23