lecture 1 assembly language programming

26
Lecture 1 Assembly Language Programming Presented By Dr. Rajesh Palit Asst. Professor, EECS, NSU Originally Prepared By Dr. Shazzad Hosain, EECS, NSU

Upload: oakley

Post on 23-Feb-2016

152 views

Category:

Documents


0 download

DESCRIPTION

Lecture 1 Assembly Language Programming. Presented By Dr. Rajesh Palit Asst. Professor, EECS, NSU Originally Prepared By Dr. Shazzad Hosain , EECS, NSU. What is Microcomputer?. Interface Circuitry. Central Processing Unit. BUS Interface Unit Execution Unit Control Unit. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Lecture 1 Assembly Language Programming

Lecture 1

Assembly Language Programming

Presented ByDr. Rajesh Palit

Asst. Professor, EECS, NSUOriginally Prepared By

Dr. Shazzad Hosain, EECS, NSU

Page 2: Lecture 1 Assembly Language Programming

What is Microcomputer?

Basic Blocks of a microcomputer

BUS Interface Unit

Execution UnitControl Unit

Interface Circuitry

Central Processing Unit

Page 3: Lecture 1 Assembly Language Programming

Von-Neumann Concept/Model

Page 4: Lecture 1 Assembly Language Programming

Von-Neumann cycle• The Von-Neumann concept is the basic concept for

universal microprocessors. The ix86 architecture is based on that concept.

• It means a stored-program computer in which an instruction fetch and a data operation cannot occur at the same time because they share a common bus.

• It comprises a Control unit, an Execution unit, Memory, I/O unit

• Instructions are treated in 5 cycles – (1) Fetch, (2) Decode, (3) Fetch Operands, (4) Execute, and (5) Update instruction Counter

Page 5: Lecture 1 Assembly Language Programming

Simplified Block Diagram of CPU

Page 6: Lecture 1 Assembly Language Programming

Registers• General Purpose Registers– AX, BX, CX, DX– Base Pointer (BP), Stack Pointer (SP)– Source Index (SI), Destination Index (DI)

• Segment Registers– Code Segment (CS), Data Segment (DS), Stack

Segment (SS), Extra Segment (ES)• Status Flag Register (FLAGs)• Instruction Pointer (IP)

Page 7: Lecture 1 Assembly Language Programming

Registers

16 bit Segment registers

Page 8: Lecture 1 Assembly Language Programming

Decimal, Binary and Hexadecimal Numbers

• 23910= 11 1101 01112 = 3D716 • 239d = 1111010111b = 3D7h (d,b,h upper or

lower case)• If no suffix is given, decimal is assumed• If a hexadecimal starts with a letter, an extra

zero must be put in the beginning• Signed Numbers – 2’s complements form

Page 9: Lecture 1 Assembly Language Programming

Example Data

• If AX = 20A2H then AH = 20H, AL = A2H• In other words, if AH = 1CH and AL = A2H then AX = 1CA2H

0010 0000 1010 0010

AH AL

AX

Page 10: Lecture 1 Assembly Language Programming

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

Page 11: Lecture 1 Assembly Language Programming

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

1010101011101010

111010100 C = 1, in this case

Page 12: Lecture 1 Assembly Language Programming

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

P = 1 P = 0Even number of ones Odd number of ones

Definition changes from microprocessor to microprocessor

Page 13: Lecture 1 Assembly Language Programming

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

Page 14: Lecture 1 Assembly Language Programming

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

Page 15: Lecture 1 Assembly Language Programming

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)

Page 16: Lecture 1 Assembly Language Programming

Signed vs. Unsigned Overflow

• Let, AX = FFFFh, BX = 0001h and execute • ADD AX, BX

1111 1111 1111 1111+ 0000 0000 0000 00011 0000 0000 0000 0000

AXBX

• 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 occurred

• Signed interpretation– FFFFh = -1, 0001h = 1, summation is -1+1 = 0– Signed overflow did not occur

Page 17: Lecture 1 Assembly Language Programming

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

NoneAllAll except CAll (C = 1 unless result is 0, O = 1,

80H, or 8000H)

Page 18: Lecture 1 Assembly Language Programming

Example 1

• Let AX = FFFFh, BX = FFFFh and execute ADD AX, BX FFFFh+ FFFFh1 FFFEh

The result stored in AX is FFFEh = 1111 1111 1111 1110

SPZC

= 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

Page 19: Lecture 1 Assembly Language Programming

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

SPZC

= 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

Page 20: Lecture 1 Assembly Language Programming

Title Example

.model small

.data

list db 10,17,11,25,13 large db 0 count db 5

.code main proc mov ax, @data mov ds, ax mov al, 5 call fact

An Assembly Program mov ax,4C00h int 21h main endp

fact proc push bx mov bl, al mov ax, 1 again: mul bl dec bl jnz again pop bx ret fact endp

end main

Page 21: Lecture 1 Assembly Language Programming

An Assembly Program#include <stdio.h>int main (void){ int i, j ; ********* // comment *********}

Example 3-5 of Barry B. Brey’s book

Page 22: Lecture 1 Assembly Language Programming

An Assembly Program Cont.

• What is the content of BX?

00h 10hAX

AH AL

10h 00h 00h 00h AAh AAhDATA1 DATA2 DATA3 DATA4

AAh AAhBX

BH BL

Page 23: Lecture 1 Assembly Language Programming

Assembly Language Structure

Page 24: Lecture 1 Assembly Language Programming

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 00h 00h AAh AAhDATA1 DATA2 DATA3 DATA4

Page 25: Lecture 1 Assembly Language Programming

Another Example

Page 26: Lecture 1 Assembly Language Programming

References

• Ch 6, Digital Logic and Microcomputer Design – by M. Rafiquzzaman

• Ch 2, Intel Microprocessors – by Brey• Ch 5, Assembly Language Programming – by

Charles Marut