Documente Academic
Documente Profesional
Documente Cultură
PRASAD V POTLURI
SIDDHARTHA INSTITUTE OF TECHNOLOGY
(Autonomous, Accredited by NBA & NAAC, an ISO 9001:2008 certified institution)
(Sponsored by Siddhartha Academy of General & Technical Education)
II. Interfacing:
Microcontrollers:
1. Reading and writing on a parallel port
2. Timer in different modes
3. Serial communication implementation
To Create Source File : An editor is a program which allows you to create a file containing the
assembly language statements for your program. This file is called a source file.
Command to create a source file
C:\TASM\BIN> Edit filename. Asm
The next step is to process the source file with an assembler. When you run the assembler, it
reads the source file of your program. On the first pass through the source program, the assembler
determines the displacement of named data items, the offset labels, etc. and puts this information
in a symbol table. On the second pass through the source program the assembler produces the
binary code for each instruction and inserts the offsets, etc. that it calculated during first pass.
C:\TASM\BIN > TASM filename. asm X, Y, Z
With this command assembler generates three files.
4. The first file (X) called the object file, is given the extension .OBJ
The object file contains the binary codes for the instructions and information about the addresses of the instructions.
5. The second file (Y) generated by the assembler is called the assembler list file and is given the
extension .LST. The list file contains your assembly language
statements, the binary codes for each instruction and the offset for each instruction.
6. The third file (Z) generated by this assembler is called the cross-reference file and is given the
extension .CRF. The cross-reference file lists all labels and pertinent information required for
cross referencing
NOTE: The Assembler only finds syntax errors : It will not tell you whether
program does what it is supposed to do. To determine whether your
program works, you have to run the program and test it.
Next step is to process the object file with linker.
C:\TASM\BIN>TLINK filename . obj
A Linker is a program used to join several object files into one layer object file
NOTE: On IBM PC type Computers, You must run the LINK program on your .OBJ file even
if it contains only one assembly module.
The linker produces a link file with the .EXE extension (an execution file)
Next Run
C:\TASM\BIN> TD filename.exe
FOR EXAMPLE
. MODEL SMALL
. STACK size of stack ; define stack
. DATA ; define data segment
-----------Define variables
----------. CODE ; define code segment s
HERE : MOV AX, @DATA ; load ES,DS
MOV ES, AX
MOV DS, AX
-------------------------
Subtracting two multi byte numbers and store the result as the third number:
DATA SEGMENT
BYTES EQU 08H
NUM2 DB 05H, 5AH, 6CH, 55H, 66H, 77H, 34H, 12H
NUM1 DB 04H, 56H, 04H, 57H, 32H, 12H, 19H, 13H
NUM3 DB 0AH DUP (00)
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE, DS: DATA
START: MOV AX, DATA
MOV DS, AX
MOV CX, BYTES
LEA SI, NUM1
LEA DI, NUM2
LEA BX, NUM3
MOV AX, 00
NEXT: MOV AL, [SI]
SBB AL, [DI]
MOV [BX], AL
INC SI
INC DI
INC BX
DEC CX
JNZ NEXT
INT 3H
CODE ENDS
Multiplying two multi byte numbers and store the result as the third number:
DATA SEGMENT
BYTES EQU 08H
NUM1 DB 05H, 5AH, 6CH, 55H, 66H, 77H, 34H, 12H
NUM2 DB 04H, 56H, 04H, 57H, 32H, 12H, 19H, 13H
NUM3 DB 0AH DUP (00)
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE, DS: DATA
START: MOV AX, DATA
MOV DS, AX
MOV CX, BYTES
LEA SI, NUM1
LEA DI, NUM2
LEA BX, NUM3
MOV AX, 00
NEXT: MOV AL, [SI]
MOV DL,[DI]
MUL DL
MOV [BX], AL
MOV [BX+1], AH
INC SI
INC DI
INC BX
INC BX
DEC CX
JNZ NEXT
INT 3H
CODE ENDS
END START
Dividing two multi byte numbers and store the result as the third number:
DATA SEGMENT
BYTES EQU 08H
NUM2 DB 05H, 5AH, 6CH, 55H, 66H, 77H, 34H, 12H
NUM1 DB 04H, 56H, 04H, 57H, 32H, 12H, 19H, 13H
NUM3 DB 0AH DUP (00)
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE, DS: DATA
START: MOV AX, DATA
MOV DS, AX
MOV CX, BYTES
LEA SI, NUM1
LEA DI, NUM2
LEA BX, NUM3
NEXT: MOV AX, 00
MOV AL, [SI]
MOV DL, [DI]
MUL DL
MOV [BX], AL
MOV [BX+1], AH
INC SI
INC DI
INC BX
INC BX
DEC CX
JNZ NEXT
INT 3H
CODE ENDS
ASCII Addition:
CODE SEGMENT
ASSUME CS: CODE
START: MOV AL,5
MOV BL,9
ADD AL, BL
AAA
OR AX, 3030H
INT 3H
CODE ENDS
END START
ASCII Subtraction:
CODE SEGMENT
ASSUME CS: CODE
START: MOV AL,9
MOV BL,5
SUB AL, BL
AAS
OR AX, 3030H
INT 3H
CODE ENDS
END START
ASCII Multiplication:
CODE SEGMENT
ASSUME CS: CODE
START: MOV AL, 5
MOV BL, 9
MUL BL
AAM
OR AX, 3030H
INT 3H
CODE ENDS
END START
ASCII Division:
CODE SEGMENT
ASSUME CS: CODE
START: MOV AX, 0607H
MOV CH, 09H
AAD
DIV CH
OR AX, 3030H
INT 3H
CODE ENDS
END START
LOGICAL OPERATIONS
Aim: To perform logical AND, OR, XOR, and NOT operations.
Apparatus: PC loaded with TASM software.
Procedure:
1) Open command prompt from start menu.
2) Enter drive name in which the TASM software is being saved. (Make sure of drive in
which TASM is present).
3) Now drive name will be changed to the corresponding drive entered.
4) Enter CD TASM
Ex: E:/CD TASM
5) Enter edit filename.asm
6) Opens a TASM window saved with the specified name.
7) Now enter the program, save and exit
8) In the command prompt window enter TASM filename.asm
9) The above step is to check if there are any errors in the program.
10) Next in the command prompt enter TLINK filename to check the stack address.
11) Enter TD filename to execute the program.
12) A window is opened where result can be viewed.
13) Go to run menu and select run or press F9 to run the program.
14) Display the code segment along with program and machine code.
15) Result is obtained on the right side of window.
LOGICAL AND:
CODE SEGMENT
ASSUME CS: CODE
START: MOV AL, 85H
MOV BL, 99H
AND AL, BL
INT 3H
CODE ENDS
END START
END
LOGICAL OR:
CODE SEGMENT
ASSUME CS: CODE
START: MOV AL, 85H
MOV BL, 99H
OR AL, BL
INT 3H
CODE ENDS
END START
END
LOGICAL NOT:
CODE SEGMENT
ASSUME CS: CODE
START: MOV AL, 85H
NOT AL
INT 3H
CODE ENDS
END START
END
LOGICAL XOR:
CODE SEGMENT
ASSUME CS: CODE
START: MOV AL, 85H
MOV BL, 99H
XOR AL, BL
INT 3H
CODE ENDS
END START
END
4. STRING OPERATIONS
Aim: To perform string operations such as moving, reversing, comparison, insertion and
deletion.
INC DI
DEC CX
JNZ BACK
INT 3H
CODE ENDS
END START
Comparison of two Strings
PRINTSTRING MACRO MSG
MOV AH, 09H
LEA DX, MSG
INT 21H
ENDM
DATA SEGMENT
ORG 2000H
STR1 DB MICROPROCESSORS
LEN EQU ($-STR1)
STR2 DB MICROPROCSSOR
M1 DB STRINGS R EQUAL$
M2 DB STRINGS R NOT EQUAL$
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE, DS: DATA, ES: DATA
START: MOV AX, DATA
MOV DS, AX
MOV ES, AX
LEA SI, STR1
LEA DI, STR2
MOV CX, LEN
CLD
REPE CMPSB
JNE FAIL
PRINTSTRING M1
INT 3H
FAIL: PRINTSTRING M2
INT 3H
CODE ENDS
END START
Length of the String:
DATA SEGMENT
STRA DB WELCOME, $
LENG DW 1 DUP (00H)
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE, DS: DATA
START: MOV AX, DATA
MOV DS, AX
MOV AL, $
MOV CX, 000H
LEA SI, STRA
BACK: CMP AL, [SI]
JZ GO
INC CX
INC SI
JNZ BACK
GO: MOV LENG, CX
INT 03H
CODE ENDS
END START
END
STRING INSERTION:
DATA SEGMENT
STRA DB EMPTY VESSELS MORE NOISE, $
COUNT EQU [$-STRA]
DATA ENDS
EXTRA SEGMENT
ORG 2000H
STRB DB COUNT+5 DUP (00)
EXTRA ENDS
CODE SEGMENT
ASSUME CS: CODE, DS: DATA, ES: EXTRA
START: MOV AX, DATA
MOV DS, AX
MOV AX, EXTRA
MOV ES, AX
LEA SI, STRA
LEA DI, STRB
MOV CX, OEH
CLP
REP MOV SB
MOV DL, 05H
BACK: MOV AH, O1H
INT 21H
STOS STRB
DEC DL
JNZ BACK
MOV CX, OAH
REP MOV SB
INT 03H
CODE ENDS END START
END
STRING DELETION:
DATA SEGMENT
STRA DB EMPTY VESSELS MORE NOISE, $
COUNT EQU [$-STRA]
DATA ENDS
EXTRA SEGMENT
ORG 2000H
STRB DB COUNT-5 DUP (00)
EXTRA ENDS
CODE SEGMENT
ASSUME CS: CODE, DS: DATA, ES: EXTRA
START: MOV AX, DATA
MOV DS, AX
MOV AX, EXTRA
MOV ES, AX
LEA SI, STRA
LEA DI, STRB
MOV CX, OEH
CLP
REP MOV SB
MOV SI, 0012H
MOV CX, 0012H
REP MOV SB
INT 03H
CODE ENDS
END START
END
SORTING
Aim: To write a program for sorting the numbers in
a) Ascending Order
b) Descending Order
Software Required: A PC with TASM software.
Program for Sorting in Ascending Order:
DATA SEGMENT
STRA DB 54H, 99H, 23H, 90H, 11H
COUNT EQU 0004H
DATA ENDS
CODE SEGMENT
ASSUME: CS: CODE, DS: DATA
START:
MOV AX, DATA
MOV DS, AX
L3: MOV BX, CX
LEA SI, STRA
MOV DI, SI
ADD DI, 0001H
L2:
MOV AL, [SI]
CMP AL, [01]
JC L1
XCHG AL, [DI]
MOV [SI], AL
L1: INC SI
INC DI
DEC BX
JNZ L2
LOOP L3
INT 03H
CODE ENDS
END START
END
PART B
INTERFACING
8259 INTERRUPT CONTROLLER
AIM: - To perform the interrupt for 8086 microprocessor using study card 8259
(Programmable Interrupt Controller)
APPARATUS: -
LABEL
MNEMONIC
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
ADD
MOV
MOV
ADD
MOV
MOV
ADD
MOV
MOV
ADD
MOV
MOV
ADD
MOV
MOV
ADD
MOV
MOV
ADD
MOV
MOV
ADD
MOV
MOV
ADD
MOV
MOV
ADD
OPERAND
AX,0000H
CS,AX
ES,AX
SS,AX
SP,3000
SI,0120
AX,2200
[SI],AX
SI,02
AX,0000
[SI],AX
SI,02
AX,2210
[SI],AX
SI,02
AX,0000
[SI],AX
SI,02
AX,2220
[SI],AX
SI,02
AX,0000
[SI],AX
SI,02
AX,2230
[SI],AX
SI,02
AX,0000
[SI],AX
SI,02
AX,2240
[SI],AX
SI,02
AX,0000
[SI],AX
SI,02
HERE:
2200
2210
2220
2230
2240
MOV
MOV
ADD
MOV
MOV
ADD
MOV
MOV
ADD
MOV
MOV
ADD
MOV
MOV
ADD
MOV
MOV
MOV
MOV
OUT
MOV
MOV
OUT
MOV
OUT
MOV
OUT
STI
JMP
CLI
LEA
JMP
INT
CLI
LEA
JMP
INT
CLI
LEA
JMP
INT
CLI
LEA
JMP
INT
CLI
AX,2250
[SI],AX
SI,02
AX,0000
[SI],AX
SI,02
AX,2260
[SI],AX
SI,02
AX,0000
[SI],AX
SI,02
AX,2270
[SI],AX
SI,02
AX,0000
[SI],AX
DX,0FFC8
AL,17
DX,AL
DX,0FFCA
AL,48
DX,AL
AL,03
DX,AL
AL,00
DX,AL
HERE
DX,@MSG0
DISP
03
DX,@MSG1
DISP
03
DX,@MSG2
DISP
03
DX,@MSG3
DISP
03
2250
2260
2270
2300
DISP:
L1:
LEA
JMP
INT
DX,@MSG4
DISP
03
CLI
LEA
JMP
INT
DX,@MSG5
DISP
03
CLI
LEA
JMP
INT
DX,@MSG6
DISP
03
CLI
LEA
JMP
INT
DX,@MSG7
DISP
03
MOV
MOV
MOV
CALLS
INC
LOOP
ST1
IRET
SI,DX
CX,011
AL,[SI]
0FE00:0000
SI
L1
2111 20 20 0A 49 4E 54
OCCURRED, 0AH, DH
2117 31 20 4F 43 43 55
211D 52 45 44 0A 0D
2122 20 20 0A 49 4E 54
OCCURRED, 0AH, DH
2128 32 20 4F 43 43 55
212E 52 45 44 0A 0D
2133 20 20 0A 49 4E 54
OCCURRED, 0AH, DH
2139 33 20 4F 43 43 55
213F 52 45 44 0A 0D
2144 20 20 0A 49 4E 54
OCCURRED, 0AH, DH
214A 34 20 4F 43 43 55
2150 52 45 44 0A 0D
2155 20 20 0A 49 4E 54
OCCURRED, 0AH, DH
215B 35 20 4F 43 43 55
2161 52 45 44 0A 0D
2166 20 20 0A 49 4E 54
OCCURRED, 0AH, DH
216C 36 20 4F 43 43 55
2172 52 45 44 0A 0D
2177 20 20 0A 49 4E 54
OCCURRED, 0AH, DH
217D 37 20 4F 43 43 55
2183 52 45 44 0A 0D
Output: -
8255 - PPI
AIM: - To generate sinusoidal wave using 8255 PPI
APPARATUS: -
LABEL
L7
L1 :
L2
L3 :
L4 :
L5
L6 :
MNEMONIC
MOV
MOV
OUT
MOV
MOV
OUT
INC
CMP
JB
MOV
OUT
INC
INC
INC
CMP
JB
MOV
OUT
INC
CMP
JB
MOV
OUT
DEC
CMP
JNBE
MOV
OUT
DEC
DEC
DEC
CMP
JNBE
MOV
OUT
OPERAND
DX, FFE6H
AL,80
DX , AL
AL ,00
DX , FFE0
DX , AL
AL
AL , 0F
L1
DX , FFE0
DX , AL
AL
AL
AL
AL , EF
L2
FFE0
DX , AL
AL
AL , FF
L3
DX , FFE0
DX , AL
AL
AL , EF
L4
DX , FFE0
DX , AL
AL
AL
AL
AL , 0F
L5
DX , FFE0
DX, AL
DEC
CMP
JNBE
JMP
OUTPUT:
AL
AL , 00
L6
L7
8251- USART
AIM: - To generate sinusoidal wave using 8255 PPI
APPARATUS: -
LABEL
L1 :
MNEMONIC
MOV
MOV
IN
AND
CMP
JNE
MOV
MOV
OUT
INT
OPERAND
BX , 2000
DX , FFF2
AL , DX
AL , 81
AL , 81
L1
DX , FFF0
AL , [BX ]
DX , AL
03
MOV
IN
AND
JE
MOV
IN
INT
DX , 0FFF2
AL , DX
AL , 02
L1
DX , FFF0
AL , DX
03
L1 :
Input:
Output:
ALGORITHM: 1.
2.
3.
4.
LABEL
TOP :
RESULT: Input:
Output:
MNEMONIC OPERAND
MOV
A , 0FF
MOV
90 , A
MOV
A , 90
MOV
80 ,A
SJMP
TOP
LABEL
MNEMONIC OPERAND
MOV
89, #01
MOV
8A,#0F2
MOV
8C,#0FF
CPL
95
ACALL
DELAY
SJMP
WAIT
DELAY :
SETB
8C
HERE :
JNB
8D, HERE
CLR
8C
CLR
8D
WAIT :
RET
RESULT: Input:
Output:
ADDRESS OPCODE
LABEL
8000
MNEMONIC OPERAND
LCALL
160E
MOV
DPTR, #9200
MOVX
A, @DPTR
LCALL
160E
NOP
NOP
NOP
NOP
HERE:
INC
DPTR
MOVX
A, @DPTR
LCALL
160E
SJMP
HERE
HERE:
Result: Input: - MD 9200
Output: 9200
9201
16
14
LCALL
16E2
MOV
DPTR, #9200
LCALL
16E2
MOVX
@DPTR, A
INC
DPTR
LCALL
16E2
MOVX
@DPTR, A
SJMP
HERE