Presentation is loading. Please wait.

Presentation is loading. Please wait.

Lecture 2 Presented By Dr. Shazzad Hosain Asst. Prof. EECS, NSU.

Similar presentations


Presentation on theme: "Lecture 2 Presented By Dr. Shazzad Hosain Asst. Prof. EECS, NSU."— Presentation transcript:

1 Lecture 2 Presented By Dr. Shazzad Hosain Asst. Prof. EECS, NSU

2 Road Map Real Mode Memory Addressing Array, Loop and Accessing Memory

3 Real Mode Memory Addressing The first 1MB memory is Real memory or the Conventional memory 16 bit Segment registers ****** Segment 1 Segment 2 Segment n 0000h CS 8000h DS A000h SS 1MB offset 1.1 MB requires 20 bit address 2.Each segment is 64 KB 3.Offset address is 16 bit or 2 byte 4.Actual address = segment address + offset address

4 Real Mode Memory Addressing Real mode operation allows to address 1MB of memory space – even for the Pentium microprocessor This first 1MB memory is called the real memory or the conventional memory A combination of segment and offset address access the real memory Segment registers contains the beginning address of any 64KB memory segment The offset address selects the any location within the 64KB memory space

5 Segment Plus Offset Determines Address From Intel Microprocessor To get the real address 1.Pad 0H at the end of segment register 2.Add the offset value 1.Since each segment is 64 K, the offset address can take maximum of FFFFH 2.Once, the beginning address is found in segment registers, ending address is calculated by adding FFFFH with the value of segment register after padding 0H after it. 10000H F000H 1F000H CS= 1000H Offset= F000H 12340H 245FH 1479FH DS= 1234H Offset= 245FH

6 Default Segment and Offset Registers 1.If CS = 1400H and IP/EIP = 1200 H 2.The microprocessor access instruction from 14000 H+ 1200H = 15200H.

7 Figure 2-4: A memory system showing the placement of four memory segments Suppose 1.1000H bytes of code 2.190H bytes of data 3.200H bytes of stack Figure 2-5 Allows relocation

8 Road Map Real Mode Memory Addressing Array, Loop and Accessing Memory

9 DATA DW50; DATA is a word with value 50 DATA1DW50DUP (?); array of 50 uninitialized words DATA2DW50 DUP (0); array of 50 words initialized with 0 50 DATA DATA1 DATA2 0 1 2 3 49 0 0 0 0 0 MOV CX, 10; loop count XYZ: ; statements LOOP XYZ MOV AX, 1020h MOVAX, [1020h] MOV[AX], 20 AX 1020h 1021h 0000h 0001h 1021h Accessing memory

10 Example Program 1.MODEL SMALL.DATA DATAS DB50 DUP (?); setup array of 50 bytes.CODE; start of code segment.STARTUP; start of program MOV AX, 1 MOV CX, 50; load counter with 50 MOV BX, OFFSET DATAS; address of DATAS array AGAIN: MOV [BX], AX; save values to array positions INC AX; increment AX to next values INC BX; increment BX to next elements LOOP AGAIN; repeat 50 times.EXIT; exit to DOS END; end program Write a program that will initialize 50 bytes array with values 1 to 50 1 2 3 4 5 50 0 1 2 49

11 Example Program 2.MODEL SMALL.DATA DATAS DB50 DUP (?); setup array of 50 bytes.CODE; start of code segment.STARTUP; start of program MOV AX, 1 MOV CX, 50; load counter with 50 MOV BX, OFFSET DATAS; address of DATAS array AGAIN: MOV [BX], AX; save values to array positions INC AX; increment AX to next values INC BX; increment BX to next elements LOOP AGAIN; repeat 50 times.EXIT; exit to DOS END; end program Write a program that will initialize 50 bytes array in the following form 50 49 47 1 0 1 2 49 50 DEC decrement

12 Example Program 2, Alternate Way.MODEL SMALL.DATA DATAS DB50 DUP (?); setup array of 50 bytes.CODE; start of code segment.STARTUP; start of program MOV AX, 1 MOV DI, 49 MOV CX, 50; load counter with 50 MOV BX, OFFSET DATAS; address of DATAS array AGAIN: MOV [BX+DI], AX; save values to array positions INC AX; increment AX to next values DECDI; decrement DI LOOP AGAIN; repeat 50 times.EXIT; exit to DOS END; end program Write a program that will initialize 50 bytes array in the following form 50 49 47 1 0 1 2 49

13 Example 3 Move array element 10H into array element 20H **** ***** *** 0 1 2 16 32.MODEL SMALL.DATA Array DB16DUP (?); setup array DB 29H DB30 DUP (?).CODE.STARTUP; start of program MOV BX, OFFSET ARRAY; address of ARRAY MOV DI, 10H; address element 10H MOVAL, [BX + DI]; get element 10H MOVDI, 20H; address element 20H MOV [BX+DI], AL; save in element 20H.EXIT; exit to DOS END; end program **** 0 1 2 15 29H 16 17 32 **** Example 3-7: Intel Microprocessors - by Brey ARRAY

14 Example 3, Alternate Way Move array element 10H into array element 20H **** 0 1 2 15 29H 16 17 32 **** Example: 3-8, Brey ARRAY

15 DATA Addressing Modes: Figure 3-2: by Brey

16 References Section 2-2, Intel Microprocessors – by Brey Ch 3, Intel Microprocessors – by Brey Ch 6, 10 Assembly Language Programming – by Charls Marut


Download ppt "Lecture 2 Presented By Dr. Shazzad Hosain Asst. Prof. EECS, NSU."

Similar presentations


Ads by Google