280 likes | 526 Views
CSE 331/ETE 332/EEE 332 Microprocessor and Assembly Language Programming. Presented By Dr. Shazzad Hosain Asst. Prof. EECS, NSU. Books. Fundamentals of Digital Logic and Microcomputer Design – M. Rafiaquzzaman
E N D
CSE 331/ETE 332/EEE 332Microprocessor and Assembly Language Programming Presented By Dr. ShazzadHosain Asst. Prof. EECS, NSU
Books • Fundamentals of Digital Logic and Microcomputer Design – M. Rafiaquzzaman • The Intel Microprocessors 8086/8088 … , and Pentium Pro Processors – Barry B. Brey • Assembly Language Programming and Organization of the IBM PC – Ytha Yu, Charles Marut
Mark Distribution Best 3 out of 5 • There will be no makeup for quizzes or exams. For details please visit • http://www.northsouth.edu/php/faculty/shazzad/teaching.htmland follow the corresponding link.
The Microprocessor and Its Architecture • ALU (Arithmetic and Logic Unit) • The Control Unit • Registers Microprocessor R1 R1 Cache Memory R3 RAM HDD
The Programming Model • Program visible registers • We can access via programs • Program invisible registers • We can not access via programs
Registers 16 bit Segment registers
Example Data • If AX = 20A2H then AH = 20H, AL = A2H • In other words, if AH = 1CH and AL = A2H then AX = 1CA2H AH AL 0010 0000 1010 0010 AX
The FLAGS register • FLAGS indicate the condition of the MP • Also control the operations • FLAGS are upward compatible from 8086/8088 to Pentium/Pentium Pro Figure 2.2: The EFLAG and FLAG registers
The FLAGs • Carry Flag – C • C = 1 if there is a carry out from the msb on addition • Or, there is a borrow into the msb on subtraction • Otherwise C = 0 • C flag is also affected by shift and rotate instructions 10101010 11101010 111010100 C = 1, in this case
The FLAGs • Parity Flag – P • P = 1 for even parity, if number contains even number of ones • P = 0 for odd parity, if odd number of ones 10101010 10101011 Even number of ones Odd number of ones P = 0 P = 1 Definition changes from microprocessor to microprocessor
The FLAGs • Zero Flag – Z • Z = 1 for zero result • Z = 0 for non-zero result • Sign Flag – S • S = 1 if msb of a result is 1, means negative number • S = 0 if msb of a result is 0, means positive number
The FLAGs • Trap Flag – T • Enables trapping through an on-chip debugging feature • T = 1 MP interrupts the flow of a program, i.e. debug mode is enabled • T = 0 debug mode is disabled • Direction Flag – D • Selects increment/decrement mode of SI and/or DI registers during string instructions • D = 1, decrement mode, STD(set direction) instruction used • D = 0, increment mode, CLD(clear direction) instruction used
The FLAGs • Overflow Flag – O • O = 1 if signed overflow occurred • O = 0 otherwise • Overflow is associated with the fact of range of numbers represented in a computer • 8 bit unsigned number range (0 to 255) • 8 bit signed number range (-128 to 127) • 16 bit unsigned number range (0 to 65535) • 16 bit signed number range (-32768 to 32767)
Signed vs. Unsigned Overflow • Let, AX = FFFFh, BX = 0001h and execute • ADD AX, BX 1111 1111 1111 1111 + 0000 0000 0000 0001 1 0000 0000 0000 0000 AX BX • Unsigned interpretation • Correct answer is 10000h = 65536 • But this is out of range. • 1 is carried out of msb, AX = 0000h, which is wrong • Unsigned overflow occured • Signed interpretation • FFFFh = -1, 0001h = 1, summation is -1+1 = 0 • Singned overflow did not occur
How instructions affect the flags? • Every time the processor executes a instruction, the flags are altered to reflect the result • Let us take the following flags and instructions • None • All • All except C • All (C = 1 unless result is 0) • Sign Flag – S • Parity Flag – P • Zero Flag – Z • Carry Flag – C • MOV/XCHG • ADD/SUB • INC/DEC • NEG
Example 1 • Let AX = FFFFh, BX = FFFFh and execute ADD AX, BX FFFFh + FFFFh 1 FFFEh The result stored in AX is FFFEh = 1111 1111 1111 1110 S P Z C • = 1 because the msb is 1 • = 0 because the are 15 of 1 bits, odd parity • = 0 because the result is non-zero • = 1 because there is a carry out of the msb on addition
Example 2 • Let AX = 8000h, BX = 0001h and execute SUB AX, BX 8000h - 0001h 7FFFh The result stored in AX is 7FFFh = 0111 1111 1111 1111 S P Z C • = 0 because the msb is 0 • = 0 because the are 15 of 1 bits, odd parity • = 0 because the result is non-zero • = 0 because there is no carry
Registers 16 bit Segment registers
Segment Registers Segment n * * * Segment 2 Segment 1 16 bit Segment registers CS DS SS 0000h 8000h A000h
An Assembly Program #include <stdio.h> void main () { int I, j ; ********* // comment ********* } Example 3-5 of Barry B. Brey’s book
An Assembly Program Cont. • What is the content of BX? AH AL 00h 10h AAhAAh AX BH BL BX 10h 00h AAh AAh 00h 00h DATA1 DATA2 DATA3 DATA4
An Assembly Program • SMALL model allows one data segment and one code segment • TINY model directs the assembler to assemble the program into a single segment • DB for Define Byte (one single byte) • DW for Define Word (two consecutive bytes) 10h 00h AAh AAh 00h 00h DATA1 DATA2 DATA3 DATA4
References • Ch 6, Digital Logic and Microcomputer Design – by M. Rafiquzzaman • Ch 2, Intel Microprocessors – by Brey • Ch 5, Assembly Language Programming – by CharlsMarut