0% found this document useful (0 votes)
22 views8 pages

Mic Internal

Uploaded by

alinashk0608
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
0% found this document useful (0 votes)
22 views8 pages

Mic Internal

Uploaded by

alinashk0608
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/ 8

;addition of 8 bit ;addition of 16 bit

assume cs:code,ds:data assume cs:code,ds:data

code segment code segment


start: start:
mov ax,data mov ax,data
mov ds,ax mov ds,ax

mov al,no1 mov ax,no1


mov bl,no2 mov bx,no2
add al,bl add ax,bx
mov sum,al mov sum,ax

mov ah,4ch mov ah,4ch


int 21h int 21h

code ends code ends

data segment data segment


no1 db 12h no1 dw 1020h
no2 db 03h no2 dw 3020h
sum db ? sum dw ?
data ends data ends

end start end start


;SUB of 8 bit ;SUB of 16 bit
assume cs:code,ds:data assume cs:code,ds:data

code segment code segment


start: start:
mov ax,data mov ax,data
mov ds,ax mov ds,ax

mov al,no1 mov ax,no1


mov bl,no2 mov bx,no2
sub al,bl sub ax,bx
mov result,al mov result,ax

mov ah,4ch mov ah,4ch


int 21h int 21h

code ends code ends

data segment data segment


no1 db 12h no1 dw 1020h
no2 db 03h no2 dw 3020h
result db ? result dw ?
data ends data ends

end start end start


;mul of 8 bit signed ;mul of 16 bit signed
assume cs:code,ds:data assume cs:code,ds:data

code segment code segment


start: start:
mov ax,data mov ax,data
mov ds,ax mov ds,ax

xor ax,ax xor ax,ax


mov al,n1 mov ax,n1
mov bl,n2 mov bx,n2
mul bl mul bx
mov result,ax mov lsb,ax
mov ah,4ch mov msb, dx
int 21h mov ah,4ch
code ends int 21h
data segment code ends
n1 db 10h data segment
n2 db 05h n1 dw 1000h
result dw 1 dup(0) n2 dw 0100h
data ends lsb dw 1 dup(0)
end msb dw 1 dup(6)

data ends
end
;block transfer without string inst ;block transfer with string
DATA SEGMENT DATA SEGMENT
BLOCK1 DB 10H,20H,30H,40H,45H BLOCK1 DB 10 DUP(10H)
BLOCK2 DB 5 DUP(0) DATA ENDS
ENDS EXTRA SEGMENT
CODE SEGMENT BLOCK2 DB 10 DUP(0)
ASSUME CS:CODE,DS:DATA EXTRA ENDS
START: MOV DX,DATA CODE SEGMENT
MOV DS,DX ASSUME CS:CODE,DS:DATA,ES:EXTRA
MOV CX,0005H START: MOV AX,DATA
MOV SI, OFFSET BLOCK1 MOV DS,AX
MOV DI, OFFSET BLOCK2 MOV BX,EXTRA
NEXT: MOV AL,[SI] MOV ES,BX
ADD AL,10H LEA SI,BLOCK1
MOV [DI],AL LEA DI,BLOCK2
INC SI MOV CX,000AH
INC DI CLD
LOOP NEXT REP MOVSB
MOV AH,4CH MOV AH,4CH
INT 21H INT 21H
CODE ENDS CODE ENDS
End Start END START
;;compare two string without inst ; compare with string inst
CODE SEGMENT CODE SEGMENT
ASSUME CS:CODE,DS:DATA ASSUME CS:CODE, DS:DATA
MOV AX,DATA MOV AX,DATA
MOV DS,AX MOV DS,AX
MOV CX, 04H MOV ES,AX
MOV BX,0000H MOV CL,L
BACK: MOV AL, ST1[BX] CLD
MOV SI, OFFSET ST1
CMP AL,ST2[BX] MOV DI, OFFSET ST2
JNZ UNEQ REPE CMPSB
INC BX JNZ NEQ
LOOP BACK MOV R,'E'
MOV R,'Y' JMP LAST
JMP EN NEQ: MOV R, 'N'
UNEQ: MOV R,'N' LAST: HLT
EN: MOV AH,4CH CODE ENDS
INT 21H DATA SEGMENT
CODE ENDS ST1 DB "TESTING PG"
DATA SEGMENT ST2 DB "TEXTING PG"
ST1 DB 'TEXT' L DB 0AH
ST2 DB 'TEST' R DB ?
R DB ? DATA ENDS
DATA ENDS END
END
CODE SEGMENT ; START OF CODE SEGMENT
ASSUME CS: CODE, DS:DATA
start: MOV AX, DATA
MOV DS, AX
CALL BCD_SUM ; PROCEDURE CALL BCD_SUM
CALL BCD_SUB ; PROCEDURE CALL BCD_SUB
CALL BCD_MUL ; PROCEDURE CALL BCD_MUL
CALL BCD_DIV ; PROCEDURE CALL BCD_DIV
MOV AX, 4C00H
INT 21H
BCD_SUM PROC ; PROCEDURE FOR ADDITION
MOV AL, NUM1
MOV BL, NUM2
ADD AL, BL
DAA
JNC DN
INC SUM1
DN: MOV SUM, AL
RET
BCD_SUM ENDP

BCD_SUB PROC
BCD_SUB PROC ; PROCEDURE FOR SUBTRACTION
MOV Al, NUM2
SUB Al, NUM1
;DAS
MOV DIFF, Al
RET
BCD_SUB ENDP

BCD_MUL PROC ; PROCEDURE FOR MULTIPLICATION


MOV Al, NUM1
MUL NUM2
daa
;AAM
MOV MULTI, Ax
RET
BCD_MUL ENDP

BCD_DIV PROC ; PROCEDURE FOR DIVISION


MOV Al, NUM1
CWD
DIV NUM2
AAD
MOV QUO, Al
MOV REM, ah
RET
BCD_DIV ENDP

DATA SEGMENT
NUM1 DB 04H
NUM2 DB 25H
SUM DB ?
SUM1 DB 0
DIFF Db ?
MULTI Dw ?
QUO Db ?
REM Db ?
DATA ENDS
CODE ENDS
END START
;SMALL NUMBER FROM ;LARGE NUMBER FROM
ARRAY ARRAY
.MODEL SMALL .MODEL SMALL
.data .data
array DB array DB
11H,23H,43H,94H,19H 11H,23H,43H,94H,19H
small db 0 LARGE DW 0
.code .code
MOV AX,@DATA MOV AX,@DATA
MOV DS,AX MOV DS,AX
MOV Cx,5 MOV Cx,5
MOV SI,OFFSET array MOV SI,OFFSET array
MOV AL,[SI] MOV AX,[SI]
DEC CX DEC CX
UP: INC SI UP: INC SI
CMP AL,[SI] CMP AX,[SI]
JNC NEXT JNC NEXT
MOV AL,[SI] MOV AL,[SI]
NEXT: LOOP UP NEXT: LOOP UP
MOV SMALL,AL MOV LARGE,AX
ENDS ENDS
END END
;Reverse the given String - string reverse ;String concatenate ;FIND STRING
DATA SEGMENT CODE SEGMENT LENGTH
STRING1 DB 'ASSEMBLY LANGUAGE ASSUME DATA
PROGRAM$' CS:CODE,DS:DATA,ES:DA SEGMENT
STR2 DW $-STRING1-1 TA STR1 DB
DATA ENDS MOV AX,DATA 'POLYCLINIC$'
CODE SEGMENT MOV DS,AX STR_LEN DB
ASSUME CS: CODE, DS:DATA MOV ES,AX 00H
MAIN: MOV AX, DATA MOV SI, OFFSET ST1 DATA ENDS
MOV DS, AX MOV AL,'$' CODE
MOV SI, OFFSET STRING1 NEXT1: CMP AL, [SI] SEGMENT
MOV CX, STR2 JE EXIT1 ASSUME CS:
ADD SI, CX INC LEN1 CODE, DS:DATA
BACK: MOV DL, [SI] INC SI START: MOV
MOV AH, 02H JMP NEXT1 AX, DATA
INT 21H EXIT1: MOV SI, OFFSET MOV DS,AX
DEC SI ST2 MOV AL,'$'
LOOP BACK NEXT2: CMP AL,[SI] MOV CX,00H
MOV AH, 4CH JE EXIT2 MOV SI,
INT 21H INC LEN2 OFFSET STR1
code ends INC SI BACK: CMP
JMP NEXT2 AL, [SI]
EXIT2: MOV SI, OFFSET JE DOWN
ST1 INC CL
MOV DI, OFFSET R INC STR_LEN
MOV CL, LEN1 INC SI
REP MOVSB JMP BACK
MOV SI, OFFSET ST2 DOWN: MOV
MOV CL, LEN2 STR_LEN,CL
REP MOVSB MOV AH,4CH
MOV AH,4CH INT 21H
INT 21H CODE ENDS
CODE ENDS END START
DATA SEGMENT
ST1 DB " SYCO-$"
LEN1 DB ?
ST2 DB "B 2024$"
LEN2 DB ?
R DB ?
DATA ENDS
END
;odd ;even no
CODE SEGMENT CODE SEGMENT
ASSUME CS:CODE, DS:DATA CODE SEGMENT
MOV AX,DATA ASSUME CS: CODE, DS:DATA
MOV DS,AX START: MOV AX, DATA
MOV CX,05H MOV DS, AX
MOV SI, OFFSET NUM MOV CL,5
NEXT: MOV AL, [SI] MOV SI, OFFSET NUM
ROR AL,01 NEXT: MOV AL, [SI]
JNC DOWN ROR AL,1
INC COUNT JC DOWN
DOWN: INC SI INC EVEN_NO
LOOP NEXT DOWN: ADD SI,1
MOV AX, 4C00H LOOP NEXT
INT 21H MOV AH,4CH
CODE ENDS INT 21H
DATA SEGMENT CODE ENDS
NUM DB 19H,17H,12H, 39H,45h DATA SEGMENT
COUNT DB 5 DUP(0) NUM Db 13H,67H,76H,96H,24H
DATA ENDS EVEN_NO DW 0H
END DATA ENDS
END START
;pos neg 16
CODE SEGMENT
ASSUME CS: CODE, DS:DATA
START: MOV AX, DATA
MOV DS, AX
MOV DX,0000H
MOV CX, COUNT
MOV SI, OFFSET ARRAY
NEXT: MOV AX, [SI]
ROR AX,01H
JC NEGATIVE
INC DL
JMP COUNT_IT
NEGATIVE: INC DH
COUNT_IT: INC SI
INC SI
LOOP NEXT
MOV NEG_COUNT, DL
MOV POS_COUNT, DH
MOV AH,4CH
INT 21H
CODE ENDS
DATA SEGMENT
ARRAY DW 0F423H,6523H,0B658H,7612H,2300H,1559H
COUNT DW 06H
POS_COUNT DB ?
NEG_COUNT DB ?
DATA ENDS
END START
; Program To COUNTS '1'S IN GIVEN 8-BIT NO. ; PROGRAM TO COUNT '0'S IN
DATA SEGMENT 16 BIT
DATA1 DB 42H NO.
COUNT DB ? DATA SEGMENT
DATA ENDS DATA1 DW 2456H
CODE SEGMENT COUNT DB ?
ASSUME CS:CODE,DS:DATA DATA ENDS
START: MOV AX,DATA CODE SEGMENT
MOV DS,AX ASSUME CS:CODE,DS:DATA
SUB BL,BL START: MOV AX, DATA
MOV DL,08 MOV DS, AX
MOV AL,DATA1 SUB BL, BL
AGAIN: ROL AL,1 MOV DL,0A
JNC NEXT;JUMP TO NEXT WHEN NO CARRY MOV AX, DATA1
INC BL AGAIN: ROL AX,1
NEXT: DEC DL JC NEXT; JUMP TO NEXT WHEN
JNZ AGAIN;JUMP TO AGAIN WHEN NON ZER0 CARRY
NOP INC BX
MOV COUNT,BL NEXT: DEC DL
MOV AH,4CH JNZ AGAIN; JUMP TO AGAIN
INT 21H WHEN NON ZER0
CODE ENDS NOP
END START MOV COUNT, BL
MOV AH,4CH
INT 21H
CODE ENDS
END START
;ascending ;descending
CODE SEGMENT CODE SEGMENT
ASSUME CS: CODE, DS:DATA ASSUME CS:CODE,DS:DATA
MOV AX,DATA MOV AX,DATA
MOV DS,AX MOV DS,AX
MOV CH,04H MOV CH,04H
UP2:MOV CL,04H UP2: MOV CL,04H
LEA SI,STRING1 LEA SI,STRING1
UP1:MOV AL,[SI] UP1:MOV AL,[SI]
MOV BL,[SI+1] MOV BL,[SI+1]
CMP AL,BL CMP AL,BL
JC DOWN JNC DOWN
MOV DL, [SI+1] MOV DL,[SI+1]
XCHG [SI], DL XCHG[SI],DL
MOV [SI+1], DL MOV [SI+1],DL
DOWN: INC SI DOWN: INC SI
DEC AH DEC CL
JNZ UP1 JNZ UP1
DEC AL DEC CH
JNZ UP2 JNZ UP2
INT 3 INT 3
MOV AH,4CH CODE ENDS
INT 21H DATA SEGMENT
CODE ENDS STRING1 DB
DATA SEGMENT 99H,12H,56H,45H,36H
STRING1 DB 02H,01H,34H,32H,31H DATA ENDS
DATA ENDS END
END

You might also like