Download presentation
Presentation is loading. Please wait.
Published byVernon Osborne Modified over 8 years ago
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
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.