Mic Internal
Mic Internal
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
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