Tuesday 20 November 2012

PROGRAM TO MULTIPLY TWO 3X3 MATRICES


.MODEL SMALL
.DATA
M1 DB 01H,01H,01H,01H,01H,01H,01H,01H,01H
M2 DB 01H,01H,01H,01H,01H,01H,01h,01H,01H
m3 db 9 dup(0)
m4 db ' $'
MES1 DB "THE multiplication OF TWO MATRIX IS  $"
.CODE
.startup
MOV DX,OFFSET MES1
MOV AH,09H
INT 21H
mov cl,0
mov ch,0
p1:xor bx,bx
mov bl,ch
mov dl,m2[bx]
xor bx,bx
mov bl,cl
mov al,m1[bx]

mul dl
add m3[bx],al
xor bx,bx
mov bl,ch
mov dl,m2[bx+1]
xor bx,bx
mov bl,cl
mov al,m1[bx+1]
mul dl
add m3[bx+1],al
xor bx,bx
mov bl,ch
mov dl,m2[bx+2]
xor bx,bx
mov bl,cl
mov al,m1[bx+2]
mul dl
add m3[bx+2],al
add ch,3
cmp ch,8
jbe p1
add cl,3
cmp cl,8
jbe p1
MOV DX,0AH
MOV AH,02H
INT 21H

MOV CL,0
mov ch,0
PP:XOR BX,BX
MOV BL,CL
MOV AL,m3[BX]
MOV DL,AL
ROL DL,4
AND DL,0FH
ADD DL,30H
CMP DL,'9'
JBE F1
ADD DL,7H

F1:MOV AH,02H
INT 21H
MOV AL,m3[BX]
AND AL,0FH
MOV DL,AL
ADD DL,30H
CMP DL,'9'
JBE F2
ADD DL,7
F2:MOV AH,02H
INT 21H
MOV DX,OFFSET M4
MOV AH,09H
INT 21H
inc ch
cmp ch,3
jnz l1
MOV DX,0AH
MOV AH,02H
INT 21H
mov ch,0
l1:INC CL
CMP CL,9
JNZ PP
MOV AH,4CH
INT 21H
END

Output:
THE multiplication OF TWO MATRIX IS
03 03 03
03 03 03
03 03 03

PROGRAM TO ADD TWO 3X3 MATRICES


.MODEL SMALL
.386
.DATA
M1 DB 00H,01H,10H,12H,02H,03H,0F0H,0C0H,04H
M2 DB 00H,05H,01H,02H,50H,90H,03H,04H,0AAH
M3 DB 9 DUP(0)
M4 DB ' $'
MES1 DB "THE SUM OF TWO MATRIX IS  $"
.CODE
.STARTUP

MOV DX,OFFSET MES1
MOV AH,09H
INT 21H
MOV CL,0

P1:
XOR BX,BX
MOV BL,CL
MOV AL,M1[BX]
MOV DL,M2[BX]
ADD AL,DL
MOV M3[BX],AL
INC CL
CMP CL,9
JNZ P1
MOV DX,0AH
MOV AH,02H
INT 21H
MOV CL,0
MOV CH,0
PP:XOR BX,BX
MOV BL,CL
MOV AL,M3[BX]
MOV DL,AL
ROL DL,4
AND DL,0FH
ADD DL,30H
CMP DL,'9'
JBE F1
ADD DL,7H
F1:
MOV AH,02H
INT 21H
MOV AL,M3[BX]
AND AL,0FH
MOV DL,AL
ADD DL,30H
CMP DL,'9'
JBE F2
ADD DL,7

F2:
MOV AH,02H
INT 21H
MOV DX,OFFSET M4
MOV AH,09H
INT 21H
INC CH
CMP CH,3
JNZ L1
MOV DX,0AH
MOV AH,02H
INT 21H
MOV CH,0

L1:
INC CL
CMP CL,9
JNZ PP
MOV AH,4CH
INT 21H
END

Output:

THE SUM OF TWO MATRIX IS 
00 06 11
14 52 93
F3 C4 AE

PROGRAM TO DISPLAY NUMBER OF EVEN AND ODD NUMBERS IN THE LIST

mmicroprocessor.blogspot.com
.MODEL SMALL

.DATA
DATA1 DW 1000H, 0A0BH, 0005H, 2012H, 0A13H
MSG1 DB 0AH, "The number of even numbers in the list are: ", "$"
MSG2 DB 0AH, "The number of odd numbers in the list are: ", "$"

.CODE
.STARTUP

XOR AL, AL
XOR AH, AH
MOV BX, OFFSET DATA1
MOV CX, 5

L1:
MOV DX, [BX]
AND DX, 0001H
CMP DX, 0
JZ L2
INC AH
JMP L3
L2:
INC AL
L3:
ADD BX, 2
LOOP L1

MOV CL, AL
MOV CH, AH

MOV DX, OFFSET MSG1
MOV AH, 09H
INT 21H

ADD CL, 30H
MOV DL, CL
MOV AH, 02H
INT 21H

MOV DX, OFFSET MSG2
MOV AH, 09H
INT 21H

ADD CH, 30H
MOV DL, CH
MOV AH, 02H
INT 21H

MOV AH, 4CH
INT 21H

END

Output:

The number of even numbers in the list are:  2
The number of odd numbers in the list are:  3

PROGRAM TO CONVERT 8-BIT BINARY NUMBER TO ITS GRAY CODE FORM

mmicroprocessor.blogspot.com
.model small

.data
opr db 04h
res db ?

.code
.startup
mov al,opr
mov bl,al
rcr al,1
xor al,bl
mov res,al
mov al,res
mov dl,al
mov bh,al
and dl,0f0h
mov cl,4
ror dl,cl
add dl,30h
cmp dl,'9'
jbe a1
add dl,7h
a1:
mov ah,02h
int 21h
mov dl,bh
and dl,0fh
add dl,30h
cmp dl,'9'
jbe a0
add dl,7h
a0:
mov ah,02h
int 21h
mov ah,4ch
int 21h
end


Output:
06

SQUARE ROOT OF A NUMBER ASSUMING NUMBER IS PERFECT SQUARE

mmicroprocessor.blogspot.com
.MODEL SMALL

.DATA ; Data segment starts
NUM1 DB 19H ; Initialize num1 to 0019
SQRT DB 01 DUP (?) ; Reserve 1 word of uninitialised data space to offset sqrt

.CODE ; Code segment starts
.STARTUP
MOV AL,NUM1 ;Move the number(num1) to AL
XOR BL,BL ;XOR is performed and result is stored in BL
MOV BL,01H ;Initialize BL to 01H
MOV CL,01H ;Initialize CL to 01H
LOOP1: SUB AL,BL ;AL=AL-BL
JZ LOOP2 ; If zero flag is zero jump to loop2
INC CL ; Increment CL by 1
ADD BL,02H ;BL=BL+02H
JMP LOOP1 ; Jump to loop1

LOOP2: MOV SQRT,CL ; Store result
MOV DL,CL
ADD DL,30H
CMP DL,'9'
JBE L1
ADD DL,7H
L1:
MOV AH,02H
INT 21H
MOV AH,4CH
INT 21H
END


Output:
5

PROGRAM TO CONVERT BCD NUMBER TO BINARY NUMBER

mmicroprocessor.blogspot.com
.model small

.data
bcd equ 12h
result db ?

.code
.startup
mov al,bcd
mov bl,bcd
and al,0f0h
mov cl,4
rol al,cl
mov cl,10d;binary=(6x10d+7)
mul cl
and bl,0fh
add al,bl
mov result,al

mov dl,al
mov bh,al
and dl,0f0h
mov cl,4
ror dl,cl
add dl,30h
cmp dl,'9'
jbe a1
add dl,7h
a1:mov ah,02h
int 21h
mov dl,bh
and dl,0fh
add dl,30h
cmp dl,'9'
jbe a0
add dl,7h
a0:
mov ah,02h
int 21h
mov ah,4ch
int 21h
end


Output:
0C

PROGRAM TO PERFORM ARITHMETIC OPERATIONS(ADD,SUB,DIV)

mmicroprocessor.blogspot.com
.model small

.data
opr1 db 11h
opr2 db 11h
sum db 2 dup(0)
subt db 2 dup(0)
div1 db 2 dup(0)
div2 db 2 dup(0)
m1 db " sum is : $"
m2 db 0Dh,0Ah," difference is : $"
m3 db 0Dh,0Ah," division is : $"

.code
.startup
mov dx,offset m1
mov ah,09h
int 21h
mov al,opr1
mov bl,opr2
add al,bl
mov sum,al
mov al,sum
CALL P1

mov dx,offset m2
mov ah,09h
int 21h

mov al,opr1
sub al,bl
mov subt,al
mov al,subt
CALL P1

mov dx,offset m3
mov ah,09h
int 21h

mov al,opr1
cbw
div bl
mov div1,al
mov DIV2,ah
mov al,DIV2
CALL P1
MOV AL,DIV1
CALL P1
mov ah,4ch
int 21h

P1 PROC NEAR
mov dl,al
mov bh,al
and dl,0f0h
mov cl,4
ror dl,cl
add dl,30h
cmp dl,'9'
jbe a0
add dl,7h
a0:
mov ah,02h
int 21h

mov dl,bh
and dl,0fh
add dl,30h
cmp dl,'9'
jbe a1
add dl,7h
a1:
mov ah,02h
int 21h
RET
P1 ENDP

end


Output:
sum is : 22
 difference is : 00
 division is : 0001