Documente Academic
Documente Profesional
Documente Cultură
THE DATA COULD BE IN REGISTER. THE DATA COULD BE IN MEMORY. THE DATA COULD BE PART OF INSTRUCTION.
INDEXED
THE SOURCE OPERAND IS CONSTANT. THE IMMEDIATE DATA MUST BE PRECEDED BY #. THIS MODE IS USED TO LOAD DATA IN ANY REGISTER INCLUDING DPTR REGISTER. MOV MOV MOV MOV A, #20H R4, #71 B, #40H DPTR, #1234H ;LOAD 20H IN A ;LOAD DECIMAL VALUE 71 IN R4 ;LOAD 40H IN B ;DPTR=1234H
MOV
MOV
DPL, #34H
DPH, #12H
;DPTR LOWER=34H
;DPTR HIGHER=12H
REGISTER ADDRESSING
REGISTER ADDRESSING MODE INVOLVES THE USE OF REGISTERS TO HOLD DATA TO BE MANIPULATED
A, R0 R2, A A, R5 A, R7 R6,A
ACCESSING MEMORY
DIRECT ADDRESSING MODE RAM 00 TO 1F 20 TO 2F 30 TO 7F REGISTER INDIRECT ADDRESSING MODE REGISTER BANKS 7 STACK BIT ADDRESABLE MEM. BYTE MEMORY
IN DIRECT ADD. MODE THE DATA IS IN RAM, WHOSE ADD IS KNOWN. THE ADD IS A PART OF INSTRUCTION
A, 4 ;IS SAME AS A, R4 ;A=R4 A, 7 ;IS SAME AS A, R7 ;A=R7 R0, 40H ;R0=CONTENTS OF RAM LOC. 40H 56H, A ;RAM LOC 56H =CONTENT OF A R4, 7FH ;R4=CONTENTS OF RAM LOC 7FH
# SIGN IS MISSING
6
LIKE R0 TO R7, REGISTERS A, B, PSW, AND DPTR ARE PART OF GROUP OF REGISTERS KNOWN AS SFR (SPECIAL FUNCTION REGISTERS). THE SFRS ARE ACCESSED BY THEIR NAME OR BY THEIR ADDRESS.
MOV 0E0H, #55H MOV A, #55H MOV 0F0H, #22H MOV B, 22H MOV 0E0H, R2 MOV A, R2 MOV 0F0H, R0 MOV B, R0 MOV P1, A MOV 90H, A
;IS SAME AS ;A=55H ;IS SAME AS ;B=22H ;IS SAME AS ;A=(R2) ;IS SAME AS ;B=(R0) ;IS SAME AS ;P1=(A)
WRITE PROGRAM TO SEND 55H TO PORTS P1 AND P2 USING A)THEIR NAMES B)THEIR ADDRESES
MOV A, #55H MOV P1, A MOV P2, A ;A=55H ;P1=55H ;P2=55H
OR
MOV A, 55H ;A=55H MOV 90H, A ;P1=55H MOV 0A0H, A ;P2=55H
10
ONLY DIRECT ADDRESING MODE IS PERMITTED FOR PUSH ON STACK. THE IS TRUE FOR IS VALID FOR POP INSTRUCTION TOO.
WRITE CODE TO PUSH R5, R6 AND A ON STACK. POP THEM IN R2, R3 AND B
11
MOV
12
WRITE PROGRAMS TO COPY THE VALUE 55H INTO RAM LOCATIONS 40H TO 45H USING A) DIRECT ADD, B) REGISTER INDIRECT ADDRESING WITHOUT LOOP AND C) WITH A LOOP.
13
WRITE PROGRAM TO COPY THE VALUE 55H INTO RAM LOCATIONS 40H TO 45H USING A) DIRECT ADD, B) REGISTER INDIRECT ADDRESING WITHOUT LOOP AND C) WITH A LOOP.
DIRECT ADDRESING
14
WRITE PROGRAM TO COPY THE VALUE 55H INTO RAM LOCATIONS 40H TO 45H USING A) DIRECT ADD, B) REGISTER INDIRECT ADDRESING WITHOUT LOOP AND C) WITH A LOOP.
15
WRITE PROGRAM TO COPY THE VALUE 55H INTO RAM LOCATIONS 40H TO 45H USING A) DIRECT ADD, B) REGISTER INDIRECT ADDRESING WITHOUT LOOP AND C) WITH A LOOP.
REGISTER INDIRECT ADDRESING WITHOUT LOOP
MOV MOV MOV INC MOV INC MOV INC MOV INC MOV INC MOV A,# 55H R0, #40H @R0, A RO @R0, A RO @R0, A RO @R0, A RO @R0, A R0 @R0, A
16
WRITE PROGRAM TO COPY THE VALUE 55H INTO RAM LOCATIONS 40H TO 45H USING A) DIRECT ADD, B) REGISTER INDIRECT ADDRESING WITHOUT LOOP AND C) WITH A LOOP.
17
WRITE A PROGRAM TO COPY A BLOCK OF 10 BYTES OF DATA FROM RAM LOCATIONS STARTING AT 35H TO RAM LOCATIONS 60H.
18
WRITE A PROGRAM TO COPY A BLOCK OF 10 BYTES OF DATA FROM RAM LOCATIONS STARTING AT 35H TO RAM LOCATIONS 60H.
MOV R0,#35H ;source pointer MOV R1,#60H ;destination pointer MOV R3,#10 ;counter BACK: MOV A,@R0 ;get a byte from source MOV @R1,A ;copy it to destination INC R0 ;increment source pointer INC R1 ;increment destination pointer DJNZ R3,BACK ;keep doing it for all ten ;bytes
19
IN THIS PROGRAM ABC IS BURNED IN ROM LOCATIONS STARTING AT 200H THE PROGRAM IS BURNED INTO ROM FROM 0. ANALYSE THE PROG.
ORG 0000H ;burn into ROM starting at 0 MOV DPTR,#200H ;DPTR=200H look-up table address CLR A ;clear A(A=0) MOVC A,@A+DPTR ;get the char from code space MOV R0,A ;save it in R0 INC DPTR ;DPTR=201 pointing to next char CLR A ;clear A(A=0) MOVC A,@A+DPTR ;get the next char MOV R1,A ;save it in R1 INC DPTR ;DPTR=202 pointing to next char CLR A ;clear A(A=0) MOVC A,@A+DPTR ;get the next char MOV R2,A ;save it in R2 HERE:SJMP HERE ;stay here ;Data is burned into code space starting at 200H ORG 200H DATA: DB ABC" END ;end of program
20
ASSUMING THAT ROM SPACE STARTING AT 250H CONTAINS INDIA WRITE APROGRAM TO TRANSFER BYTES INTO RAM LOCATIONS AT 40H
21
ASSUMING THAT ROM SPACE STARTING AT 250H CONTAINS INDIA WRITE APROGRAM TO TRANSFER BYTES INTO RAM LOCATIONS AT 40H
;(a) This method uses a counter ORG MOV DPTR,#MYDATA MOV R0,#40H MOV R2,#5 BACK: CLR A MOVC A,@A+DPTR MOV @R0,A INC DPTR
INC R0 DJNZ R2,BACK HERE: SJMP HERE ;----------ON-CHIP CODE SPACE USED FOR STORING DATA ORG 250H MYDATA: DB INDIA" END
;LOAD ROM POINTER ;LOAD RAM POINTER ;LOAD COUNTER ;A=0 ;MOVE DATA FROM CODE ;SPACE ;SAVE IT IN RAM ;INCREMENT ROM ;POINTER ;INCREMENT RAM POINTER ;LOOP UNTIL COUNTER=0
22
;(b)
This method uses null char for end of string ORG 0000 MOV DPTR,#MYDATA ;LOAD ROM POINTER MOV R0,#40H ;LOAD RAM POINTER BACK: CLR A ;A=0 MOVC A,@A+DPTR ;MOVE DATA FROM CODE SPACE JZ HERE ;EXIT IF NULL CHAR MOV @R0,A ;SAVE IT IN RAM INC DPTR ;INCREMENT ROM POINTER R0 ;INCREMENT RAM POINTER SJMP BACK ;LOOP HERE: SJMP HERE
;----------ON-CHIP CODE SPACE USED FOR STORING DATA ORG 250H MYDATA: DB INDIA",0 ;notice null char for end of string END
23
WRITE A PROGRAM TO GET THE x VALUE FROM P1 AND SEND x*x TO P2 CONTINOUSLY
24
WRITE A PROGRAM TO GET THE x VALUE FROM P1 AND SEND x*x TO P2 CONTINOUSLY
ORG 0 MOV DPTR,#300H MOV A,#0FFH MOV P1,A BACK: MOV A,P1 MOVC A,@A+DPTR MOV P2,A SJMP BACK
;LOAD LOOK-UP TABLE ADDRESS ;A=FF ;CONFIGURE P1 AS INPUT PORT ;GET X ;GET X SQAURE FROM TABLE ;ISSUE IT TO P2 ;KEEP DOING IT
ORG 300H XSQR_TABLE: DB 0,1,4,9,16,25,36,49,64,81 END ADD= (A)+ 16 BIT ADD IN DPTR. MOVC ADDRESSES. CODE IN ROM.
25
26
WRITE A PROGRAM TO TOGGLE P1 A TOTAL OF 200 TIMES. USE RAM LOCATION 32H AS A COUNTER.
MOV MOV
;P1=55H ;LOAD COUNTER VALUE IN RAM ;LOCATION 32H ;TOGGLE P1 ;REPEAT 200 TIMES
27
28
29
30
BIT ADDRESS 00 TO 7FH BELONG TO RAM BYTE ADDRESS OF 20 TO 2FH. THE BIT ADDRESS 80 TO F7H BELONG TO SFR OF P0, TCON, P1, SCON ETC.
31
32
00 TO 7FH 80 TO 87H 88 TO 8FH 90 TO 97H 98 TO 9FH A0 TO A7H A8 TO AFH B0 TO B7H B8 TO BFH C0 TO C7H C8 TO CFH D0 TO D7H D8 TO DFH E0 TO E7H E8 TO EFH F0 TO F7H F8 TO FFH
RAM LOCATIONS 20 TO 2FH PORT P0 TCON REGISTER PORT P1 SCON REGISTER PORT P2 IE REGISTER PORT P3 IP REGISTER NOT ASSIGNED NOT ASSIGNED PSW REGISTER NOT ASSIGNED A REGISTER NOT ASSIGNED B REGISTER NOT ASSIGNED
33
34
SETS P0.6 BIT OF P0 CLEARS P0.7 BIT OF P0 SETS P1.2 BIT OF P1 SETS P2.7 BIT OF P2
35
ALL THE I/O PORTS ARE BIT ADDRESSABLE FOLLOWING REGISTERS ONLY ARE BIT ADDRESSABLE A B PSW
IP
IE SCON TCON
36
BITS OF PSW
CY
F0
AC
RS1
RS0
OV
--
RS1RS0 0 0 0 1 1 0 1 1
REGISTER BANK 0 1 2 3
THERE ARE NO INSTRUCTIONS TO CHECK THE OVERFLOW BIT. WRITE A PROGRAM TO CHECK STATUS OF OV
38
THE OV FLAG IS THE PSW.2 OF PSW REGISTER. PSW IS BIT ADDRESSABLE REGISTER. FOLLOWING INSTRUCTION CAN T CHECK THE STATUS OF THE BIT
JB
39
WRITE PROGRAM TO CHECK IF THE RAM LOCATION 37H HAS AN EVEN VALUE. IF IT HAS, SEND IT TO P2, ELSE MAKE IT EVEN AND SEND TO P2.
40
MOV
A, 37H
YES :
INC A MOV
P2, A
;SEND TO P2
41
THE STATUS OF BITS P1.2 AND P1.3 OF I/O PORT OF P1 MUST BE SAVED BEFORE THESE ARE CHANGED. WRITE A PROGRAM TO SAVE THE STATUS OF P1.2 IN BIT LOC. 06 AND OF P1.3 IN BIT LOC. 07.
42
THE STATUS OF BITS P1.2 AND P1.3 OF I/O PORT OF P1 MUST BE SAVED BEFORE THESE ARE CHANGED. WRITE A PROGRAM TO SAVE THE STATUS OF P1.2 IN BIT LOC. 06 AND OF P1.3 IN BIT LOC. 07.
CLR CLR JNB SETB JNB SETB ------06 07 P1.2, OO 06 P1.3, NO 07 ;CLEAR BIT ADD 06 ;CLEAR BIT ADD 07 ;IF P1.2=0 THEN JUMP OO ;IF P1.2=1, SET BIT LOC 06 TO 1 ;IF P1.3=0 THEN JUMP NO ;IF P1.3=1, SET BIT LOC 07 TO 1
OO: NO:
43
WRITE A PROGRAM TO SAVE THE STATUS OF BIT P1.7 ON RAM ADDRESS BIT 05
MOV MOV
WRITE A PROGRAM TO GET STATUS OF BIT PIN P1.7 AND SEND TO PIN P2.0
C, P1.7 ;GET BIT FROM PORT P2.0, C ;SEND BIT TO PORT HERE
44
20 1F 18 17 10 0F 08 07 00
BANK 0
Accumulator Registers Program Status Word Stack Pointer Ports Timers Serial Control Power Control Others
45
46
WRITE A PROGRAM FOR 8052 TO PUT 55H IN THE UPPER RAM LOCATIONS OF 90 TO 99H
47
WRITE A PROGRAM FOR 8052 TO PUT 55H IN THE UPPER RAM LOCATIONS OF 90 TO 99H
O R
BACK: MOV
INC DJNZ
@R0, A
R0 R2, BACK
;ACCESS THE UPPER 128 ;BYTES OF ON CHIP RAM ;USE INDIRECT ADDRESSING ;MODE ;REPEAT FOR ALL ;LOCATIONS ;STAY HERE
SJMP END
48
ASSUME THAT THE ON-CHIP ROM HAS A MESSAGE. WRITE APROGRAM TO COPY IT O FROM CODE SPACE TO UPPER MEMORYSPACE STARTING AT 80H. ALSO PLACE THE BYTE STORED AT RAM AT PORT P0.
49
ASSUME THAT THE ON-CHIP ROM HAS A MESSAGE. WRITE APROGRAM TO COPY IT FROM CODE SPACE TO UPPER MEMORYSPACE STARTING AT 80H. ALSO PLACE THE BYTE STORED AT RAM AT PORT P0.
ORG MOV O O B1: MOV CLR MOVC MOV MOV JZ INC 0 DPTR, #MYDATA ;LOAD STARTING ADDRESS ;OF MESSAGE R1, #80H ;THE STARTING ADDRESS ;OF UPPER 128 BYTES A A, @A+DPTR ;COPY FROM CODE ROM @R1, A ;STORE IN UPPER RAM P0, A ;SEND COPY TO P0 EXIT ;JUMP IF LAST BYTE=0 DPTR ;POINT TOWARD NEXT ;ROM LOCATION R1 ;POINT TO NEXT RAM B1 ;REPEAT $ ;STAY HERE
INC SJMP EXIT: SJMP ; -----------ORG 300H MYDATA: DB THIS IS A TEST PROGRAM, 0 END
50
AN EXTERNAL 256 BYTES RAM USING MULTIPLEXED ADD/DATA (COULD BE 8155) IS CONNECTED TO 8051 PORT P0. PORT P3 PROVIDES CONTROL LINES FOR EXTERNAL RAM. PORTS P1 AND P2 ARE USED FOR NORMAL I/O. REGISTERS 0 AND 1 CONTAIN 12H AND 34H. LOCATION 34H OF EXTERNAL RAM HOLDS THE VALUE 56H. WRITE INSTRUCTIONS TO COPY CONTENTS OF LOCATION 34H TO 12H.
51
AN EXTERNAL 256 BYTES RAM USING MULTIPLEXED ADD/DATA (COULD BE 8155) IS CONNECTED TO 8051 PORT P0. PORT P3 PROVIDES CONTROL LINES FOR EXTERNAL RAM. PORTS P1 AND P2 ARE USED FOR NORMAL I/O. REGISTERS 0 AND 1 CONTAIN 12H AND 34H. LOCATION 34H OF EXTERNAL RAM HOLDS THE VALUE 56H. WRITE INSTRUCTIONS TO COPY CONTENTS OF LOCATION 34H TO 12H.
MOVX MOVX
A, @R1 @R0, A
52