0% found this document useful (0 votes)
25 views5 pages

8086 Assembly Language Programs Guide

The document provides a series of assembly language programs written for the 8086 microprocessor using TASM. It includes programs for various tasks such as converting case, arithmetic operations, finding maximum and minimum in an array, counting occurrences, BCD arithmetic, summing numbers, string manipulation, and sorting arrays. Each program is structured with a data segment and a code segment, demonstrating different functionalities of assembly language programming.

Uploaded by

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

8086 Assembly Language Programs Guide

The document provides a series of assembly language programs written for the 8086 microprocessor using TASM. It includes programs for various tasks such as converting case, arithmetic operations, finding maximum and minimum in an array, counting occurrences, BCD arithmetic, summing numbers, string manipulation, and sorting arrays. Each program is structured with a data segment and a code segment, demonstrating different functionalities of assembly language programming.

Uploaded by

ayyukp
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

8086 Assembly Language Programs (TASM)

1■■ ALP for Uppercase to Lowercase and Lowercase to


Uppercase
; Program: Convert Uppercase to Lowercase and vice versa
; Model: Small | Assembler: TASM

DATA SEGMENT
STR DB 'A','b','C','$'
DATA ENDS

CODE SEGMENT
ASSUME CS:CODE, DS:DATA

START:
MOV AX, DATA
MOV DS, AX
MOV SI, OFFSET STR

NEXT:
MOV AL, [SI]
CMP AL, '$'
JE EXIT
CMP AL, 'A'
JB SKIP
CMP AL, 'Z'
JBE TOLOWER
CMP AL, 'a'
JB SKIP
CMP AL, 'z'
JBE TOUPPER
JMP SKIP

TOLOWER:
ADD AL, 32
JMP STORE
TOUPPER:
SUB AL, 32
STORE:
MOV [SI], AL
SKIP:
INC SI
JMP NEXT

EXIT:
MOV AH, 4CH
INT 21H
CODE ENDS
END START

2■■ ALP for Addition, Subtraction, Multiplication, Division (8-bit


and 16-bit)
; 8-bit Arithmetic Operations
DATA SEGMENT
A DB 25H
B DB 05H
SUM DB ?
DIFF DB ?
PROD DW ?
QUOT DB ?
DATA ENDS

CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START:
MOV AX, DATA
MOV DS, AX

; Addition
MOV AL, A
ADD AL, B
MOV SUM, AL

; Subtraction
MOV AL, A
SUB AL, B
MOV DIFF, AL

; Multiplication
MOV AL, A
MOV BL, B
MUL BL
MOV PROD, AX

; Division
MOV AL, A
MOV BL, B
DIV BL
MOV QUOT, AL

MOV AH, 4CH


INT 21H
CODE ENDS
END START

3■■ ALP to Find Largest and Smallest in an Array


DATA SEGMENT
ARR DB 05H,09H,02H,0AH,04H
N DB 05
MAX DB ?
MIN DB ?
DATA ENDS

CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START:
MOV AX, DATA
MOV DS, AX
MOV CL, N
MOV SI, OFFSET ARR
MOV AL, [SI]
MOV BL, AL
DEC CL
INC SI

NEXT:
MOV AL, [SI]
CMP AL, BL
JG UPDATE_MAX
CMP AL, MAX
JL UPDATE_MIN
CONT:
INC SI
LOOP NEXT
JMP ENDPROG

UPDATE_MAX:
MOV BL, AL
JMP CONT

UPDATE_MIN:
MOV MAX, AL
JMP CONT

ENDPROG:
MOV MAX, BL
MOV AH, 4CH
INT 21H
CODE ENDS
END START
4■■ ALP to Find Occurrence of a Given Number in Array
DATA SEGMENT
ARR DB 5,3,2,3,1,3
N DB 6
NUM DB 3
COUNT DB 0
DATA ENDS

CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START:
MOV AX, DATA
MOV DS, AX
MOV CL, N
MOV SI, OFFSET ARR
MOV BL, NUM
MOV AL, 0

AGAIN:
CMP [SI], BL
JNE SKIP
INC AL
SKIP:
INC SI
LOOP AGAIN
MOV COUNT, AL

MOV AH, 4CH


INT 21H
CODE ENDS
END START

5■■ ALP for Addition, Subtraction, Multiplication, Division of


BCD Numbers
DATA SEGMENT
A DB 25H
B DB 35H
SUM DB ?
DATA ENDS

CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START:
MOV AX, DATA
MOV DS, AX

; ADDITION OF BCD NUMBERS


MOV AL, A
ADD AL, B
DAA
MOV SUM, AL

MOV AH, 4CH


INT 21H
CODE ENDS
END START

6■■ ALP to Add 10 Numbers in a Series of Array


DATA SEGMENT
ARR DB 1,2,3,4,5,6,7,8,9,10
SUM DB 0
N DB 10
DATA ENDS

CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START:
MOV AX, DATA
MOV DS, AX
MOV CL, N
MOV SI, OFFSET ARR
MOV AL, 0

AGAIN:
ADD AL, [SI]
INC SI
LOOP AGAIN
MOV SUM, AL

MOV AH, 4CH


INT 21H
CODE ENDS
END START

7■■ Block Transfer Program (Using String Instructions)


DATA SEGMENT
SRC DB 'HELLO'
DEST DB 5 DUP('$')
DATA ENDS

CODE SEGMENT
ASSUME CS:CODE, DS:DATA, ES:DATA
START:
MOV AX, DATA
MOV DS, AX
MOV ES, AX
LEA SI, SRC
LEA DI, DEST
MOV CX, 5
CLD
REP MOVSB

MOV AH, 4CH


INT 21H
CODE ENDS
END START

8■■ Program for Concatenation of Two Strings


DATA SEGMENT
STR1 DB 'HELLO ', '$'
STR2 DB 'WORLD$'
RESULT DB 20 DUP('$')
DATA ENDS

CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START:
MOV AX, DATA
MOV DS, AX
LEA SI, STR1
LEA DI, RESULT

COPY1:
LODSB
CMP AL, '$'
JE COPY2
STOSB
JMP COPY1

COPY2:
LEA SI, STR2
NEXT2:
LODSB
STOSB
CMP AL, '$'
JNE NEXT2
MOV AH, 4CH
INT 21H
CODE ENDS
END START

9■■ Program for Shift and Rotate Instructions


DATA SEGMENT
NUM DB 0F2H
RESULT DB ?
DATA ENDS

CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START:
MOV AX, DATA
MOV DS, AX
MOV AL, NUM
ROL AL, 1
MOV RESULT, AL

MOV AH, 4CH


INT 21H
CODE ENDS
END START

■ Sorting Array in Ascending and Descending Order


DATA SEGMENT
ARR DB 5,3,8,1,2
N DB 5
DATA ENDS

CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START:
MOV AX, DATA
MOV DS, AX
MOV CL, N
OUTER:
MOV SI, OFFSET ARR
MOV CH, N
DEC CH
INNER:
MOV AL, [SI]
CMP AL, [SI+1]
JBE SKIP
XCHG AL, [SI+1]
MOV [SI], AL
SKIP:
INC SI
DEC CH
JNZ INNER
DEC CL
JNZ OUTER

MOV AH, 4CH


INT 21H
CODE ENDS
END START

; For Descending: replace JBE with JAE

You might also like