Description

I would like to share and discuss about Engineering Subjects, Technical Seminars, Softwares Explantion and General Knowledge Discussions in this Blog.

Tuesday, 21 January 2025

MP MC Lab Codes (8086 Emulator, MASM/TASM and Keil Softwares)

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.

 ADDITION:

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]

 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.

ASSUME CS:CODE,DS:DATA,ES:DATA
DATA SEGMENT
ORG 4000H
STR1 DB "MICROPROCESSORS"
LEN EQU ($-STR1)
ORG 5000H
STR2 DB 20H DUP(00)
DATA ENDS

CODE SEGMENT
START:  MOV AX,DATA
MOV DS,AX
MOV ES,AX
LEA SI,STR1
MOV DI, OFFSET STR2
ADD DI,LEN
DEC DI
MOV CX,LEN

LI: CLD
LODSB
STD
STOSB
LOOP LI
INT 03

CODE ENDS
END START

Verification at 
-d ds: 4000
-d ds: 5000

Exp-5 Show the Deletion of a Character from a String.

ASSUME CS:CODE,DS:DATA,ES:EXTRA
DATA SEGMENT
ORG 3000H
MSG DB "MICROPROCESSORS"
LEN EQU ($-MSG)
DATA ENDS
EXTRA SEGMENT
ORG 4000H
NEW DB 20H DUP(00)
EXTRA ENDS

CODE SEGMENT
START:  
MOV AX,DATA
MOV DS,AX
MOV AX, EXTRA
MOV ES, AX
MOV CX, LEN
LEA SI, MSG
LEA DI, NEW
CLD
UP:
LODSB
CMP AL, 'P'
JNZ L1
JMP L2
L1:STOSB
L2:LOOP UP
INT 03

CODE ENDS
END START

Verification at

-D 076A:3000

-D 0A6B:4000