0% found this document useful (0 votes)
61 views15 pages

Microprocessors Lab

8086 microprocessor programs using emu8086

Uploaded by

Anubhav Mathur
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
61 views15 pages

Microprocessors Lab

8086 microprocessor programs using emu8086

Uploaded by

Anubhav Mathur
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 15

Microprocessors LAB

1. Write ALP to print aAbBcC...


start:

mov cl, 26

mov dl, 'a'

l:

mov ah, 02h

int 21h

mov bl, dl

sub dl,20h;

mov ah, 02h

int 21h

mov dl, bl;

inc dl

loop l

end start

2. Write ALP to print abcd...


start:

mov cl,26d;

mov dl,'a'

l:

mov ah,02h

int 21h

inc dl;

loop l

end start
3. Write ALP to print 0123...
start:

mov cl,10

mov dl,'0'

l:

mov ah,02h

int 21h

inc dl

loop l

end start

4. Write ALP to print string(8-bit).


.model small

.data

a db "HELLO WORLD!$"

.code

start:

mov cl,0

mov ax,@data

mov ds,ax

mov dl, offset a

mov ah, 09h

int 21h

end start

5. Write ALP to print string(16-bit).


.model small
.data

a dw "HELLO WORLD welcome to 8086 emulation ttttttt!$"

.code

start:

mov cl,0

mov ax,@data

mov ds,ax

lea dx, a

mov ah,09h

int 21h

end start

6. Write ALP to print string character by character(8-bit).


.model small

.data

a db "HELLO WORLD!$"

.code

start:

mov cl,0

mov ax,@data

mov ds,ax

mov si, offset a

l:

mov dl,[si]

mov ah,02h

int 21h
inc si

cmp [si],'$'

jnz l

end start

7. Write ALP to print string character by character(16-bit).


.model small

.data

a dw "HELLO WORLD welcome to 8086 emulation ttttttt!$"

.code

start:

mov cl,0

mov ax,@data

mov ds,ax

lea si, a

l:

mov dx,[si]

mov ah,02h

int 21h

inc si

cmp [si],'$'

jne l

end start

8. Write ALP to print reverse of a string.


.model small
.data

a dw "HELLO WORLD!$"

.code

start:

mov ax,@data

mov ds,ax

lea si, a

mov cx, 0

l:

inc cx

inc si

cmp [si],'$'

jne l

mov ah, 02h

l2:

dec si

mov dl, [si]

int 21h

loop l2

end start

9. Write ALP to add two numbers(and store result in register).


ASSUME CS:CODE, DS:DATA

DATA SEGMENT

OPR1 DW 1234H

OPR2 DW 0006H

RESULT DW 01 DUP(?)
DATA ENDS

CODE SEGMENT

START:

MOV AX, DATA

MOV DS, AX

MOV AX, OPR1

MOV BX, OPR2

CLC

ADD AX, BX

MOV DI, OFFSET RESULT

MOV [DI], AX

CODE ENDS

END START

10. Write ALP to subtract two numbers(and store result in register).


ASSUME CS:CODE, DS:DATA

DATA SEGMENT

OPR1 DW 2339h

OPR2 DW 1238h

RESULT DW 01 DUP(?)

DATA ENDS

CODE SEGMENT

START:

MOV AX, DATA

MOV DS, AX

MOV AX, OPR1

MOV BX, OPR2


CLC

SUB AX, BX

MOV DI, OFFSET RESULT

MOV [DI], AX

CODE ENDS

END START

11. Write ALP to add two digits.


ASSUME CS:CODE, DS:DATA

DATA SEGMENT

NUM1 DB "First no$"

NUM2 DB ,0DH,0AH, "Second no$"

RES DB ,0DH,0AH, "Result is$"

DATA ENDS

CODE SEGMENT

START:

MOV AX, DATA

MOV DS, AX

MOV DX,OFFSET NUM1

MOV AH,09H

INT 21H

MOV AH, 01H

INT 21H

MOV BL,AL

MOV DX,OFFSET NUM2

MOV AH,09H

INT 21H
MOV AH, 01H

INT 21H

ADD AL, BL

MOV AH,0

AAA

MOV BX,AX

ADD BX,3030H

MOV DX, OFFSET RES

MOV AH,09H

INT 21H

MOV DL,BH

MOV AH,02H

INT 21H

MOV DL,BL

MOV AH,02H

INT 21H

END START

CODE ENDS

12. Write ALP to subtract two digits.


ASSUME CS:CODE, DS:DATA

DATA SEGMENT

NUM1 DB "First no$"

NUM2 DB ,0DH,0AH, "Second no$"

RES DB ,0DH,0AH, "Result is$"

DATA ENDS

CODE SEGMENT
START:

MOV AX, DATA

MOV DS, AX

MOV DX,OFFSET NUM1

MOV AH,09H

INT 21H

MOV AH, 01H

INT 21H

MOV BL,AL

MOV DX,OFFSET NUM2

MOV AH,09H

INT 21H

MOV AH, 01H

INT 21H

SUB BL, AL

MOV AL,BL

MOV AH,0

AAs

MOV BX,AX

ADD BX,3030H

MOV DX, OFFSET RES

MOV AH,09H

INT 21H

MOV DL,BH

MOV AH,02H

INT 21H

MOV DL,BL
MOV AH,02H

INT 21H

END START

CODE ENDS

13. Write ALP to multiply two digits.


ASSUME CS:CODE, DS:DATA

DATA SEGMENT

NUM1 DB "First no$"

NUM2 DB ,0DH,0AH, "Second no$"

RES DB ,0DH,0AH, "Result is$"

DATA ENDS

CODE SEGMENT

START:

MOV AX, DATA

MOV DS, AX

MOV DX,OFFSET NUM1

MOV AH,09H

INT 21H

MOV AH, 01H

INT 21H

SUB AL,30H

MOV BL,AL

MOV DX,OFFSET NUM2

MOV AH,09H

INT 21H

MOV AH, 01H


INT 21H

SUB AL,30H

MUL BL

MOV AH,0

AAM

MOV BX,AX

ADD BX,3030H

MOV DX, OFFSET RES

MOV AH,09H

INT 21H

MOV DL,BH

MOV AH,02H

INT 21H

MOV DL,BL

MOV AH,02H

INT 21H

END START

CODE ENDS

14. Write ALP to input 10 numbers and find out whether each is
even or odd.
ASSUME CS:CODE, DS:DATA

DATA SEGMENT

NUM1 DB "Enter no $"

EVENMSG DB 10,13, "No. is EVEN$"

ODDMSG DB 10,13, "No. is ODD$"

COUNT EQU 10
DATA ENDS

CODE SEGMENT

START:

MOV AX, DATA

MOV DS, AX

MOV CX, COUNT

AGAIN:

MOV DX,OFFSET NUM1

MOV AH,09H

INT 21H

MOV AH, 01H

INT 21H

ROR AL,01H

ODD:

JNC EVEN

LEA DX,ODDMSG

MOV AH,09H

INT 21H

DEC CX

JNZ AGAIN

EVEN:

LEA DX,EVENMSG

MOV AH,09H

INT 21H

DEC CX

JNZ AGAIN
CODE ENDS

END START

15. Write ALP to check if number is positive or negative.


DATA SEGMENT

NUM DB -12d

MES1 DB 10,13,'DATA IS POSITIVE $'

MES2 DB 10,13,'DATA IS NEGATIVE $'

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

MOV AL,NUM

ROL AL,1

JC NEGA

MOV DX,OFFSET MES1

JMP EXIT

NEGA: MOV DX,OFFSET MES2

EXIT: MOV AH,09H

INT 21H

MOV AH,4CH

INT 21H

CODE ENDS

END START

16. Write ALP to calculate factorial of a number


ASSUME CS:CODE, DS:DATA
DATA SEGMENT

NUM DB 4

F DB 01H DUP(?)

DATA ENDS

CODE SEGMENT

START:

MOV AX, DATA

MOV DS, AX

MOV AH, 0

MOV AL, NUM

AGAIN:

DEC NUM

MUL NUM

MOV CL, NUM

CMP CL, 01

JNZ AGAIN

MOV DX,AL

MOV BX,OFFSET F

MOV [BX],AL

MOV AH,02H

INT 21H

CODE ENDS

END START

You might also like