Tuesday, 20 November 2012

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