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 • 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 Items Percentage Attendance 5% Quizzes 25% Mid Term 25% Lab 10% Final 35% Total 100% 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.html and follow the corresponding link. Assembly Language Programming What is Microcomputer? The Microprocessor and Its Architecture • ALU (Arithmetic and Logic Unit) • The Control Unit • Registers Microprocessor R1 R3 Cache Memory RAM HDD R1 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 Even number of ones P=1 10101011 Odd number of ones P=0 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 AX + 0000 0000 0000 0001 BX 1 0000 0000 0000 0000 • 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 • • • • Sign Flag – S Parity Flag – P Zero Flag – Z Carry Flag – C • • • • MOV/XCHG ADD/SUB INC/DEC NEG None All All except C All (C = 1 unless result is 0) 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 = 1 because the msb is 1 P = 0 because the are 15 of 1 bits, odd parity Z = 0 because the result is non-zero C = 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 = 0 because the msb is 0 P = 0 because the are 15 of 1 bits, odd parity Z = 0 because the result is non-zero C = 0 because there is no carry Registers 16 bit Segment registers Segment Registers Segment n SS A000h * * * Segment 2 DS 8000h Segment 1 16 bit Segment registers CS 0000h 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. AH 00h AL 10h AX BH AAh BX • What is the content of BX? 10h DATA1 00h DATA2 00h 00h DATA3 BL AAh AAh AAh DATA4 Assembly Language Structure 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 DATA1 00h DATA2 00h 00h DATA3 AAh AAh DATA4 Another Example References • Ch 6, Digital Logic and Microcomputer Design – by M. Rafiquzzaman • Ch 2, Intel Microprocessors – by Brey • Ch 5, Assembly Language Programming – by Charls Marut