Beruflich Dokumente
Kultur Dokumente
Program:
Label Mnemonics Comments
M OV AX,1 2 34 H As s ig n t h e v a lu e t o AX
M OV BL ,5 6 H M o v e t h e v a lu e o f 56H t o BL
M OV CX,2 4 56 H M o v e t h e v a lu e 2456H
M OV DH,8 4 H As s ig n t h e v a lu e o f 84H t o DH
HL T St o p t h e p r o gr a m
Register H L
AX 12H 34H
BX 00H 56H
CX 24H 56H
DX 84H 00H
Program:
L a be l M n e m on ic s Co m m e n t s
M OV AX,5 6 78 H As s ig n t h e v a lu e t o AX
M OV BX,7 8 56 H As s ig n t h e v a lu e t o BX a s 7856
M OV CX,BX M o v e t h e v a lu e o f BX t o CX
M OV DX,BX M o v e t h e v a lu e o f BX t o DX
HL T St o p t h e p r o gr a m
Register H L
AX 56H 78H
BX 78H 56H
CX 78H 56H
DX
78H 56H
Program:
Program:
Label Mnemonics Comments
M OV CX,0 5 H As s ig n t h e v a lu e o f CX in 05
M OV SI,2 0 0 0 H As s ig n t h e v a lu e o f SI in 2000
M OV DI,3 0 0 0 H As s ig n t h e v a lu e o f DI in 3000
Ne x t : M OV AL ,[SI ] M o v e t h e v a lu e o f SI t o AL
M OV [DI],AL M o v e t h e v a lu e o f AL t o DL
INC SI In c r em e n t SI v a lu e
INC DI In c r em e n t DI v a lu e
L OOP NEX T Re p e at t h e lo o p
HL T St o p t h e p ro g ra m
2000H AAH
2023H 65H
2001H BAH
2024H 76H
2002H BBH
2033H 01H
2003H BBH
G) 8-Bit –Multiplication
LABEL MNEMONICS COMMENTS
MOVAL,[3000H] Assign the value ALto 3000
MOVBL,[3001H] Assign the value ALto 3001
MULBL Multiply with BL(ALX BL)
MOV[3002H],AL Move value to 3002
MOV[3003H],DL Move value to 3003
HLT Stop the program
H) 16-Bit –Division
LABEL MNEMONICS COMMENTS
MOVAX,[3000H] Assign value ALto 3000
MOVBX,[3002H] Assign value BXto 3002
DIV BX Divide with BX
MOV[3004H],AX Move value AXto 3004
MOV[3006H],DX Move value DXto 3006
HLT Stop the program
3003H 00H
IMPLEMENTATION OFLOGICAL OPERATIONSUSINGX86
A) Masking 8 Bit lower and higher nibble
LABEL MNEMONICS COMMENTS
MOVAL,[3000H] Assign the value to AL
MOVDL,AL Move ALto DL
MOVBL,0FF0H Assign BL=0FF0H
AND AL,BL And AL, BL
MOVCL,AL MOVALto CL
Shr CL,AL Shift CL4 timesright
MOV[3001H],CL Move CLto 3001H
MOVAL,BL Move BLto AL
MOVBL, 0FH Assign 0FH to BL
AND AL,BL And AL,BL
MOV[3002H],AL Move ALto 3002H
HLT Stop the program
3002H 0BH
B) Masking lower bit nibble to higher bit nibble using 16 bit data
LABEL MNEMONICS COMMENTS
MOVAX,[2000H] Assign the value to AX
MOVDX,AX Move AXto DX
MOVBX,0FF0H Assign BXas 0FF0H
AND AX,BX And AX, BX
Shr AX,08H Shift AXright 8 times
MOV[2002H],AX Move value of AXto 2002H
MOVBX,00FFH Assign BXas 00FFH
AND BX,DX And BXand DX
MOV[2004H],BX Move BXto 2004H
HLT Stop the program
DL DFH
DL 10H
BL 80H
F) To separate the odd positive and even negative data.
LABEL MNEMONICS COMMENTS
MOVCL,06H Assign CLas06H
MOVBX,3000H Assign value to BXas 3000H
MOVSI,4000H Move value of 4000H to SI
MOVDI,4100H Move value of 4100H to DI
GO: MOVAL,[BX} Move value BXto AL
AND AL,01 And between ALand 01.
JNZODD Jump to odd if no zero
MOVAL,[BX] Move value BXto AL
AND AL,80H And between ALand 80H
JZSKIP Jump if zero to skip
MOVAL,[BX] Move value of BXto AL
MOV[SI],AL Move value of AL to SI
INCSI Increment SI
JMPSKIP Jump to skip
ODD: MOVAL,[BX] Move value of BXto AL
AND AL,80H And between ALand 80H
JNZSKIP Jump if no zero go to skip
MOVAL,[BX] Move value of BXto AL
MOV[DI],AL Move ALto DI
INCDI Increment DI
SKIP:: INCBX Increment BX
LOOPGO Starts again from Go
HLT Stop the program
MICROCONTROLLERPROGRAMS:
IMPLEMENTATION OFCOUNTERSUSING8051
A) Implementation of timer0 as counter:
MNEMONICS COMMENTS
9000:MOVDPTR,#2023
9003:MOVA,#90 Issue control word to CWR
9005:MOVX@DPTR,A
9006:MOVA,#00 Select channel 0
9008:MOVDPTR,#2022
900B:MOVX@DPTR,A
900C:MOV DPTR,#2022
900F:MOV A,#80
9011:MOVX@DPTR,A Start of conversion signal in PC7 pin
9012:NOP
9013:NOP
9014:MOVDPTR,#2022
9017:MOVA,#00
9019:MOVX@DPTR,A
901A:MOV DPTR,#2020
901D:MOVXA,@DPTR
901E:ANL A,#80
9020:JNZ901D Check for EOC
9022:MOVA,#40
9024:MOVDPTR,#2022
9027:MOVXA,@DPTR,A Assert PC6 for enable signal(read)
9028:MOVDPTR,#2020
902B:MOVXA,@DPTR Receive digital output of A/P
902C:MOV DPTR,#8000 Converter in port A
902F:MOVX@DPTR,A
9030:MOVR6,A Store the value in 8000 and also display the
9031:LCALL677D same
9034:MOVR0,#FFH Call delay
9036:MOVR1,#FFH
9038:LCALL6850 Continuously monitor analoginput
903B:SJMP9006
MNEMONICS COMMENTS
E000:MOVDPTR,#2023H Move 2023H to DPTR
E003:MOVA,#80H Move 80H to A
E005:MOVX@DPTR,#2020H Move A value of DPTR
E006:MOVDPTR,#2020H Move 2020 value to DPTR
E009:MOVA,#00H Move 00H to A
E00B:MOV @DPTR,A Move A value to DPTR
E00C:INCA Increment A
E00D:SJMPE00B Short jump E00B
E00F:LJMPE009 Long jump E009
MNEMONICS COMMENTS
E000:MOVDPTR,#2023H Move 2023H to DPTR
E003:MOVA,#80H Move 80H to A
E005:MOVX@DPTR,A Move A value to DPTR
E006:MOVDPTR,#2020H Move 2020H value to DPTR
E009:MOVA,#00H Move 00H value to A
E00B:MOVX@DPTR,A Move A value to DPTR
E00C:INCA Increment A value
E00D:CJNEA,FFH,E00B
E010:MOVX@DPTR,A Move A value to DPTR
E011:DJNZ0E0H,E010
E010:SJMPE009 Short jump E009
Mnemonics Comments
E000:MOVDPTR,#2023H Move 2023H value to DPTR
E003:MOVA,#80H Move 80H value to A
E005:MOVX@DPTR,#2020 Move A value to DPTR
E006:MOVDPTR,#2020 Move 2020H value to DPTR
E009:MOVA,#00H Move 00H value to A
E00B:MOVX@DPTR,A Move A value to DPTR
E00C:LCALLE019
E00F:MOVA,#0FFH Move OFFvalue to A
E011:MOVX@DPTR,A Move A value to DPTR
E012:LCALLE019
E015:LJMPE009 Long jump E009
DELAY:
E019:MOVR6,#0F0H Move value of 0FH to R6
E01B:MOV R5,#0F0H Move value of 0FH to R5
E01D:DJNZR5,E01D
E01F:DJNZ R6,E01B
E012:RET Stop the program
INPUT OUTPUT
ADDRESS DATA ADDRESS DATA
D:30H 04H R7 18H
B) PROGRAM FORFACTORIAL
INPUT OUTPUT
ADDRESS DATA ADDRESS DATA
X:8400H 04H X:8401H 18H
SIMPLEPROGRAMSUSINGARITHMETICINSTRUCTIONS
OF8051 MICROCONTROLLER
A) PROGRAM FORADDITION
INPUT OUTPUT
REGISTER DATA REGISTER DATA
A E7H R6 74H
8DH
B 3CH R7 78H
3BH
B) PROGRAM FORSUBTRACTION:
LABEL MNEMONICS COMMENTS
MOVRO,#30H Assign R0 as 30H
MOVA, @R0 Move R0 value to A
INCRO Increment R0
MOVB,@R0 Move R0 value to B
SUBB A,B Subtract with borrow
INCR0 Increment R0
MOV@R0,A Move A value to R0
END End the program
INPUT OUTPUT
REGISTER DATA REGISTER DATA
A 3F
RO 1CH
B 23
C) PROGRAM FORMULTIPLICATION
INPUT OUTPUT
REGISTER DATA REGISTER DATA
D:40H 25H D:42H 99H
D) PROGRAM FORDIVISION
LABEL MNEMONICS COMMENTS
CLRC Make cy=0
MOVA,40H Assign A value in 40H
MOVB,41H Assign B value in 41H
DIV AB Divide A and B
MOV42H,A Move A value to 42H
MOV43H,B Move B value to 43H
END End the program
INPUT OUTPUT
REGISTER DATA REGISTER DATA
D:40H 95H D:42H 09H
F) TO SUBTRACTTWO 8 BITNUMBERWITHOUTCARRYUSING8051:
MNEMONICS COMMENTS
ORG0H
MOVTMOD,#20H Timer 1 mode 2 autoreloaded
MOVTH1,#-3 Load timer counter
MOVSCON,#50H
SETBTRI Start timer 1
MOVA,#M M is transferred to A
ACALLSEND Call the subroutine send
MOVA,#I I istransferred to A
ACALLSEND Call the subroutine send
MOVA,#C C is transferred to A
ACALLSEND Call the subroutine send
MOVA,#R R is transferred to A
ACALLSEND Call the subroutine send
MOVA,#0 O is transferred to A
ACALLSEND Call the subroutine send
SJMPUP Short jump up
MOVSBUF,A Move A value to sbuffer
JNB T1,HERE Wait for the lastbit
CLRT1 Clear t1 for next char
RET Stops the program
OUTPUT:
In serial window
DISPLAY:
MICRO
MNEMONICS COMMENTS
9000:MOVDPTR,#2023H Move control word CWR
9003:MOVA,#80H
9005:MOVX@DPTR,A
9006:MOVR3,#08 Move count for binary patterns
9008:MOVR0,#30 Initializing look u table at 30
900A:MOV DPTR,#2022
900D:MOVA,R0 Get 1 binary pattern in port-c
900E:MOVX@DPTR,A
900F:INCR0
9010:LCALL9017 Call delay isintroduced
9013:DJNZR3,900D
9015:SJMP9006
9017:MOVR1,#F7
9019:MOVR2,#FFH
901B:DJNZR2,901B
901E:DJNZR1,9019
901F:RET