Upload
chester-davidson
View
220
Download
1
Embed Size (px)
Citation preview
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
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
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
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