100% found this document useful (1 vote)
66 views14 pages

Prac Questions

Uploaded by

John
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
100% found this document useful (1 vote)
66 views14 pages

Prac Questions

Uploaded by

John
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/ 14

Programming using assembler:

 Arithmetic operations on HEX and BCD numbers

 Sum of series
DATA SEGMENT
ARRAY DB 10H,02H,03H,04H,03H, 05H, 06H,
10H,02H,03H
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE, DS:DATA
START:
MOV AX, DATA
MOV DS, AX
MOV CL, 0AH
MOV AL,00H
MOV SI,OFFSET ARRAY
UP: ADD AL,[SI]
INC SI

LOOP UP
MOV [SI+1], AL
MOV AX, 4C00H
INT 21H
CODE ENDS
END START

 Smallest and Largest numbers from array


Large
DATA SEGMENT
ARRAY DB 15H,45H,08H,78H,56H,02H,04H,12H,23H,09H

LARGEST DB 00H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA

START:
MOV DX,DATA
MOV DS,DX

MOV CX,09H
MOV SI ,OFFSET ARRAY
MOV AL,[SI]
UP:INC SI
CMP AL,[SI]
JNC NEXT ;CHANGE
MOV AL,[SI]
NEXT:DEC CX
JNZ UP
MOV LARGEST,AL ; AL=78h

MOV AX,4C00H
INT 21H
CODE ENDS
END START
Small:
DATA SEGMENT

ARRAY DB 15H,45H,08H,56H,78H

SMALLEST DB 00H

DATA ENDS

CODE SEGMENT
ASSUME CS:CODE,DS:DATA

START:

MOV DX,DATA

MOV DS,DX

CALL SMALLEST_NO

MOV AX,4C00H

INT 21H

SMALLEST_NO PROC

MOV CX,04H

MOV SI ,OFFSET ARRAY

MOV AL,[SI]

UP:INC SI

CMP AL,[SI]

JC NEXT

MOV AL,[SI]

NEXT:DEC CX

JNZ UP

MOV SMALLEST,AL ;AL=08H

RET

SMALLEST_NO ENDP

CODE ENDS

END START

 Sorting numbers in Ascending and Descending order


Descending:
DATA SEGMENT

ARRAY DB 06H,09H,22H,02H,07H,10H,11H,12H,13H,14H
DATA ENDS

CODE SEGMENT
ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

MOV BL,0AH

STEP1: MOV SI, OFFSET ARRAY

MOV CL,09H

STEP2: MOV AL,[SI]

CMP AL,[SI+1]

JNC DOWN

XCHG AL, [SI+1]

XCHG AL,[SI]

DOWN: ADD SI, 01

LOOP STEP2

DEC BL

JNZ STEP1

MOV AH,4CH

INT 21H

CODE ENDS

END START

Ascending:
DATA SEGMENT

NUM DB 06H,09H,22H,02H,07H

RESULT DB ?

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

MOV CL,05H
LOOP1: LEA BX,NUM

MOV CH,04H

LOOP2: MOV AL,[BX]

INC BX

CMP AL,[BX]

JC DOWN

MOV DL,[BX]

MOV [BX],AL

DEC BX

MOV [BX],DL

INC BX

DOWN: DEC CH

JNZ LOOP2

DEC DL

JNZ LOOP1

INT 3

CODE ENDS

END START
 Finding ODD, EVEN
DATA SEGMENT

NUM DB 9H

ODD DB 0

EVEN_NO DB 0

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:

MOV AX,DATA
MOV DS,AX

MOV BL,NUM

ROR BL,1 ;or RCR

JNC DN ; check ENEN or ODD

ROL BL,1 ; restore number

MOV ODD,BL ; odd

JMP EXIT

DN: ROL BL,1

MOV EVEN_NO,BL ; even no


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

 Positive and negative numbers in array


data segment
arr db 04h,34h,89h,74h,25h
data ends
code segment
assume cs:code,ds:data
start:
mov dx,data
mov ds,dx
LEA si,arr
mov cl,05h
mov bl,00h ;neg
mov dl,00h ;pos
up: mov al,[si]
RCL al,01
jc down
inc dl
jmp l2
down:inc bl
l2: inc si
dec cl
jnz up
mov ah,4ch
int 21h
code ends
end start

 Block transfer
DATA SEGMENT

block1 db 10 dup(10h)

block2 db 10 dup(0)

DATA ENDS
CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:

MOV DX,DATA ;initialize data seg

MOV DS,DX

LEA SI,BLOCK1

LEA DI,BLOCK2
MOV CX,000AH

CLD

BACK:MOV AL,[SI] ; REP MOVSB

MOV [DI],AL

INC SI

INC DI

DEC CX

JNZ BACK

MOV AH,4CH

INT 21H

CODE ENDS

END START

 String operations-
1. length
DATA SEGMENT
STR1 DB ‘STUDENT$’ LENGTH_STRING DB?

DATA ENDS
CODE SEGMET
ASSUME CS:CODE, DS:DATA
Start:
MOV AX, DATA MOV DS, AX
MOV AL, ‘$’
MOV CX, 00H
MOV SI, OFFSET STR1
BACK: CMP AL, [SI]
JE DOWN
INC CL
INC SI
JMP BACK
DOWN: MOV LENGTH_STRING, CL
MOV AX, 4C00H
INT 21H
CODE ENDS
END START
2. Reverse
DATA SEGMENT

STRING DB 'GOOD MORNING$'

REV DB 0FH DUP(?)

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:

MOV DX,DATA

MOV DS,DX

LEA SI,STRING

MOV CL,0FH

LEA DI,REV

ADD DI,0FH

UP:MOV AL,[SI]

MOV [DI],AL

INC SI

DEC DI

LOOP UP

MOV AH,4CH

INT 21H

CODE ENDS

END START
3. Compare
Data segment
sstr db 'Solapur$'
dstr db 'Solapuz$'
slen db 00h
dlen db 00h
Data ends
Code segment
Assume CS:Code,DS:Data
start : mov DX,Data
mov DS,DX
LEA SI,sstr
L1 : mov AL,[SI]
CMP AL,'$'
JZ exit1
INC slen
INC SI
JMP L1
exit1:
LEA DI,dstr
L2 : mov AL,[DI]
CMP AL,'$'
JZ exit2
INC dlen
INC DI
JMP L2
exit2:
mov AL,slen
mov BL,dlen
CMP AL,BL
JNZ exit3
LEA SI,sstr
LEA DI,dstr
L3 : mov AL,[SI]
mov BL,[DI]
CMP AL,BL
JNZ exit3
INC SI
INC DI
DEC slen
JNZ L3
JMP END1
exit3:
mov AH,4CH
INT 21H
End1:Code Ends
End start

4. Concatenation
DATA SEGMENT
ST1 DB " Maharashtra board$"
LEN1 DB 0
ST2 DB " of technical
Education$" LEN2 DB 0
R DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, ,DS:DATA, ES:DATA
START: MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV SI, OFFSET ST1 ; Length of the first string in LEN1

MOV AL,'$'
NEXT1: CMP AL,[SI]
JE EXIT1
INC LEN1
INC SI
JMP NEXT1
EXIT1: MOV SI, OFFSET ST2 ; Length of the second string in LEN2 NEXT2: CMP
AL,[SI]
JE EXIT2
INC LEN2
INC SI
JMP NEXT2
EXIT2: MOV SI, OFFSET ST1 ; copy first string to R
MOV DI, OFFSET R
MOV CL, LEN1
REP MOVSB
MOV SI, OFFSET ST2 ; Concat second string to R
MOV CL, LEN2
REP MOVSB
MOV AH,4CH
INT 21H
CODE ENDS

END START

5. Copy
Data segment
str1 db 'Mic8086$'
str2 db ?
data ends
code segment
assume cs:code,ds:data
start:
mov dx,data
mov ds,dx
LEA si,str1
LEA di,str2
l1: mov al,[si]
cmp al,'$'
jz exit1
mov [di],al
inc si
inc di
jmp l1
exit1:
mov ah,4ch
int 21h
code ends
end start
 Count numbers of '1' and '0’ in 16 bit number
CODE SEGMENT
ASSUME CS:CODE
START:
MOV AX,1321H
MOV CL,16H
MOV BX,0000H
MOV DX,0000H
L2: RCR AX,01H
JNC L1
INC BL
JMP L3
L1:INC DL
JMP L3
L3: DEC CL
JNZ L2
MOV AH,4CH
INT 21H
CODE ENDS
END START

You might also like