MICRO PROCESSORS AND MICRO CONTROLLERS LAB
DOS-BOX Commands (Double Click on DOS-BOX Icon)
Use the command mount d d:\8086
to
mount your directory and switch to the respective drive (D:
).
Open Notepad or use the edit hello.asm
command to write your code and save it as hello.asm
.
Use masm
hello.asm;
to assemble the code and generate the object file.
Use link
hello.obj;
to link the object file and create an executable (hello.exe
).
Use debug
hello.exe
to run the program in Debug mode.
Type q
to quit Debug when you're finished.
END START
END START
3. Implement Sorting an array
of random 8-bit binary numbers.
DATA SEGMENT
ORG 3000H
STR DB 0D2H,3EH,76H,12H,0E3H,44H,2AH,69H
LEN EQU ($-STR)
DATA ENDS
CODE SEGMENT
START:
MOV AX, DATA
MOV DS, AX
MOV CL, LEN-1
UPP:
MOV DL, CL
LEA SI, STR
UP:
MOV AL, [SI]
CMP AL, [SI+1]
JBE LI
XCHG AL, [SI+1]
XCHG [SI], AL
LI:
INC SI
DEC DL
JNZ UP
DEC CL
JNZ UPP
INT 03
CODE ENDS
END START
Drive Link : Software Link
8086
Emulator codes
Addition:
start:
MOV
AX, 0X2C
MOV
BX, 0X98
ADD
AX, BX
INT
03
Subtraction:
start:
MOV
AX, 0XCC
MOV
BX, 0X98
SUB
AX, BX
INT
03
Multiplication:
start:
MOV
AX, 0X2C
MOV
BX, 0X98
MUL
BX
INT
03
Division:
start:
MOV
AX, 0X2C
MOV
BX, 0X98
DIV
BX
INT 03
·
Mount the directory:
·
Create the assembly file:
·
Assemble the code:
·
Link the object file:
·
Run the program:
·
Use Debug commands:
Type t to trace: Perform single-step verification (execute one instruction at a time).
Type g to run: Execute the complete code without pausing.
Type u to verify opcodes: Check and validate the compiled opcodes of the code.
Type r to view the registers: Displays the current values of registers.
Type d ds: Address: Dump the memory contents starting at the specified segment and address.
·
Exit Debug:
8086 MASM Codes
1. Perform simple arithmetic operations.
Addition -1
ASSUME
CS: CODE
CODE
SEGMENT
ORG
2000H
START:
MOV AL, 5
MOV BL, 3
ADD AL, BL
INT 03
CODE
ENDS
END
START
Addition -2(Clear AX)
ASSUME
CS: CODE
CODE
SEGMENT
ORG
2000H
START:
MOV AX, 0000
MOV AL, 5
MOV BL, 3
ADD AL, BL
INT 03
CODE
ENDS
END
START
Subtraction Code
ASSUME
CS: CODE
CODE
SEGMENT
ORG
2000H
START:
MOV AX, 0000H
MOV AL, 05H
MOV BL, 03H
SUB AL, BL
INT 03H
CODE
ENDS
END
START
Multiplication
ASSUME
CS: CODE
CODE
SEGMENT
ORG
2000H
START:
MOV AX, 0000H
MOV AL, 05H
MOV BL, 03H
MUL BL
INT 03H
CODE
ENDS
END
START
Division
ASSUME
CS: CODE
CODE
SEGMENT
ORG
2000H
START:
MOV AX, 0000H
MOV AL, 05H
MOV BL, 03H
DIV BL
INT 03H
CODE
ENDS
1. Perform simple
arithmetic operations.
DATA SEGMENT
ORG 3000H
NUM1 DB
0A7H,23H,67H,9CH,5DH,2EH,0ECH
ORG 4000H
NUM2 DB
7CH,0BAH,4FH,77H,3AH,0E6H,48H
LEN EQU ($-NUM2)
ORG 5000H
RES DB LEN+1 DUP(0)
DATA ENDS
CODE SEGMENT
ORG 2000H
START: MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET NUM1
MOV DI,OFFSET NUM2
MOV BP,OFFSET RES
CLC
MOV CX,LEN
UP: MOV AL,[SI]
MOV BL,[DI]
ADC AL,BL
MOV
DS:[BP],AL
INC SI
INC DI
INC BP
LOOP UP
LAHF
AND AH,01
MOV DS:[BP],AH
INT 03
CODE ENDS
END START
SUBTRACTION:
ASSUME
CS:CODE, DS:DATA
DATA
SEGMENT
ORG
3000H
NUM1
DB 0A7H,23H,67H,9CH,5DH,2EH,0ECH ORG 4000H
NUM2
DB 7CH,0BAH,4FH,77H,3AH,0E6H,48H
LEN
EQU ($-NUM2)
ORG
5000H
RES
DB LEN+1 DUP(0)
DATA
ENDS
CODE
SEGMENT
ORG
2000H
START: MOV AX,DATA
MOV
DS,AX
MOV
SI,OFFSET NUM1
MOV
DI,OFFSET NUM2
MOV
BP,OFFSET RES
CLC
MOV
CX,LEN
UP: MOV AL,[SI]
MOV
BL,[DI]
SBB AL,BL
MOV
DS:[BP],AL
INC
SI
INC
DI
INC
BP
LOOP UP
MOV
AH,00
JNC L1
INC
AH
L1: MOV DS:[BP],AH
INT
03
CODE
ENDS
END START
MULTIPLICATION:
ASSUME
CS:SEG2,DS:SEG1
SEG1 SEGMENT
ORG
5000H
N1
DW 45B3H
ORG 6000H
N2
DW 0A599H
ORG
6500H
RES
DW 02 DUP(0)
SEG1 ENDS
SEG2
SEGMENT
ORG 2000H
START:
MOV AX,SEG1
MOV DS,AX
LEA
BX,N1
LEA
SI,N2
MOV
AX,[BX]
MOV
CX,[SI]
MUL
CX
LEA
SI,RES
MOV [SI],AX
ADD SI,02
MOV
[SI],DX
INT
03
SEG2
ENDS
END START
DIVISION:
32BIT/16BIT
UNSIGNED DIVISION:
ASSUME
CS:PROG, DS:INFO
INFO SEGMENT
ORG
3000H
DIVDEN
DD 855D0100H
ORG
4000H
DIVSOR
DW 411AH
ORG
5000H
RES
DW 02 DUP(0)
INFO
ENDS
PROG
SEGMENT
ORG
2000H
START: MOV AX,INFO
MOV
DS,AX
MOV
SI,OFFSET DIVDEN
MOV DI,OFFSET DIVSOR
MOV
BX,[DI]
MOV
AX,[SI]
ADD
SI,02
MOV
DX,[SI]
DIV BX
MOV
SI,OFFSET
RES
MOV [SI],AX
ADD
SI,02
MOV
[SI],DX
INT 03
PROG
ENDS
END START
2. Construct program
for Addition of an array of BCD numbers stored in packed form.
ASSUME
CS:PROG,DS:INFO
INFO
SEGMENT
ORG
3000H
HOW DB 05H
ORG
3500H
NUMS
DB 23H,45H,67H,56H,89H
ORG
5000H
RES
DB 02 DUP(0)
INFO ENDS
PROG
SEGMENT
START:
MOV AX,INFO
MOV
DS,AX
MOV
AH,00
MOV CL,HOW-1
MOV
SI,OFFSET NUMS
MOV
AL,[SI]
CONTINUE:ADD
AL,[SI+1]
DAA
JNC
NOUPDATE
INC
AH
NOUPDATE:INC
SI
DEC
CL
JNZ
CONTINUE
LEA DI,RES
MOV [DI],AX
INT
03
PROG
ENDS
Exp- 4 Produce the reverse of the given string.
-d ds: 4000
-D
076A:3000
-D
0A6B:4000