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

PROGRAM TO PERFORM ADDITION OF TWO 8-BIT BCD NUMBERS

mmicroprocessor.blogspot.com
.model small
.data
opr1 db 99h
opr2 db 32h
sum db 2 dup(0)
m1 db "bcd : $"
.code
.startup
mov dx,offset m1
mov ah,09h
int 21h
mov al,opr1
mov bl,opr2
add al,bl
daa
mov sum,al
jnc l1
mov dl,31h
mov ah,02h
int 21h
l1:mov dl,sum
xor bx,bx
mov bl,dl
mov dl,bl
mov cl,4
rol dl,cl
and dl,0fh
add dl,30h
cmp dl,'9'
jbe a1
add dl,7h
a1:mov ah,02h
int 21h
mov dl,bl
and dl,0fh
add dl,30h
cmp dl,'9'
jbe a2
add dl,7h
a2:mov ah,02h
int 21h
mov ah,4ch
int 21h
end

Output:
bcd :131

TO ARRANGE A SERIES OF HEXADECIMAL NUMBERS IN ASCENDING ORDER

mmicroprocessor.blogspot.com
mmicroprocessor.blogspot.com
.model small
.data
list db 90h,3ah,80h,40h
SA DB ?

.code
.startup
mov cl,0
p1:XOR BX,BX
MOV BL,CL

mov al,LIST[BX]
MOV SI,BX
mov ch,0
p2:
XOR BX,BX
MOV BL,CH
mov dl,LIST[BX]
cmp al,dl
jbe mn
jmp m1
mn:

mov al,LIST[SI]
MOV DL,LIST[BX]
xchg al,Dl
mov LIST[SI],al
mov LIST[BX],dl
m1:
inc ch
cmp ch,CL
jB p2
inc cl
cmp cl,4
jNZ p1

mov cl,0
pp:
XOR BX,BX
MOV BL,CL
MOV AL,LIST[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,LIST[BX]
AND AL,0FH
MOV DL,AL
ADD DL,30H
cmp dl,'9'
jbe f2
add dl,7

f2:
MOV AH,02H
INT 21H
INC CL
CMP CL,4
JNZ pp

MOV AH,4CH
INT 21H
End

Output:
3A408090

PROGRAM TO FIND TOTAL NUMBER OF POSITIVE AND NEGATIVE NUMBERS IN A LIST

mmicroprocessor.blogspot.com
.model small

.data
m1 db "Total positive numbers $"
m2 db 0Dh,0Ah,"Total negative numbers $"
list dw 2579h,0a345h,0d876h,7896h,0b900h
count equ 05h

.code
.startup
xor si,si
xor dx,dx

mov cl,count
mov bx,offset list

again:mov ax,[bx]
shl ax,01
jc negi

inc si
jmp next

negi:inc dx
next:add bx,2
dec cl
jnz again

push dx
push si

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

pop ax

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

pop ax

call disph
mov ah,4ch
int 21h
disph proc near

mov cl,4
mov ch,4

disph1:rol ax,cl
push ax
and al,0fh
add al,30h
cmp al,'9'
jbe disph2
add al,7
disph2:
mov ah,2
mov dl,al
int 21h
pop ax
dec ch
jnz disph1
ret
disph endp
end


Output:
Total positive numbers  0002
Total negative numbers  0003

PROGRAM TO FIND WHETHER A GIVEN NUMBER IS ODD OR EVEN

mmicroprocessor.blogspot.com
.model small

.data
message1 db 'number is odd$'
message2 db 'number is even$'

.code
.startup
call readh
push ax
mov dl,0ah
mov ah,02h
int 21h
pop ax
mov bl,01h
and al,bl
jz evn
mov dx,offset message1
mov ah,09h
int 21h
jmp label1

evn:
mov dx,offset message2
mov ah,09h
int 21h

label1:
mov dl,0ah
mov ah,02h
int 21h
mov ah,4ch
int 21h

readh proc near
mov cl,4
mov si,2
mov bl,00h
readh1:
mov ah,1
int 21h
call conv
shl bl,cl
add bl,al
dec si
jnz readh1
mov al,bl
ret
readh endp

conv proc near
cmp al,'9'
jbe conv2
cmp al,'a'
jb conv1
sub al,20h

conv1:
sub al,7

conv2:
sub al,30h
ret
conv endp
end


Output:
22
number is even

PROGRAM TO FIND LARGEST NUMBER IN A GIVEN ARRAY OF 8 BIT NUMBERS

mmicroprocessor.blogspot.com
.model small
.data
list db 02h,23h,0A9h,0B8h,17h
m1 db "largest number is $"
.code
.startup
mov bx,0h
mov dl,list[bx]
mov cx,4
inc bx
l1:mov al,dl
cmp al,list[bx]
ja smaller
mov dl,list[bx]
smaller:
inc bx
loop l1
xor bx,bx
mov bl,dl
mov dx,offset m1
mov ah,09h
int 21h
mov dl,bl
mov cl,4
rol dl,cl
and dl,0fh
add dl,30h
cmp dl,'9'
jbe a1
add dl,7h
a1:mov ah,02h
int 21h
mov dl,bl
and dl,0fh
add dl,30h
cmp dl,'9'
jbe a2
add dl,7h
a2:mov ah,02h
int 21h
mov ah,4ch
int 21h
end

Output:
largest  number is B8

PROGRAM FOR ADDITION OF SERIES OF 8 BIT NUMBERS

mmicroprocessor.blogspot.com
.model small

.data
list db 34h,32h,33h

.code
.startup
mov cl,2
mov si,offset list
mov al,[si]
l1:
add al,[si+1]
inc si
loop l1
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:
99

PROGRAM TO DISPLAY A HEXADECIMAL VALUE IN AX

mmicroprocessor.blogspot.com
.MODEL TINY

.CODE
.STARTUP
MOV AX,345Ah
MOV BX, AX
MOV CH, 4         
PP: MOV AX, BX
       ROL AX,4
       ROL BX,4
       AND AX, 000FH         
       ADD AX, 30H
       CMP AX, '9'
       JBE DP
       ADD AL, 7
DP:        MOV DL, AL
                MOV AH, 2H      
                INT 21H
                SUB CH,1                            
JNZ PP
MOV AH, 4CH
INT 21H
END


Output:
345A

Sunday 18 November 2012