Posts

C program to copy contents of a file to another file

Program: #include<stdio.h> #include<fcntl.h> #include<sys/stat.h> int main(int argc, char * argv[]){ char block[1024]; int in,out,nread; in = open("t.txt",O_RDONLY); out = open("o.txt",O_WRONLY|O_CREAT,S_IRUSR|S_IWUSR); if(in == -1 || out == -1){ printf("Unable to copy file\n"); return 0; } while((nread=read(in,block,1024)) > 0) write(out,block,nread); printf("File copied.\n"); close(in); close(out); return 0; }

ALP to display string line by line.

ASSUME CS:CODE,DS:DATA DATA SEGMENT STR1 DB "THIS IS STRING ONE$" STR2 DB "THIS IS STRING TWO$" STR3 DB 0AH,"$" DATA ENDS CODE SEGMENT START: MOV AX,DATA MOV DS,AX LEA DX,STR1 MOV AH,09H INT 21H LEA DX,STR3 MOV AH,09H INT 21H LEA DX,STR2 MOV AH,09H INT 21H MOV AH,4CH INT 21H CODE ENDS END START

ALP to check the given user number is prime or not.

ASSUME CS:CODE,DS:DATA DATA SEGMENT STR1 DB 0AH,"PRIME NUMBER$" STR2 DB 0AH,"NOT A PRIME NUMBER$" STR3 DB "ENTER NUMBER :$" DIVIDEND DB ? DIVISOR DB ? DATA ENDS CODE SEGMENT START: MOV AX,DATA MOV DS,AX LEA DX,STR3 MOV AH,09H INT 21H MOV AH,01H INT 21H SUB AL,30H MOV DIVIDEND,AL mov ch,00h MOV CL,DIVIDEND DEC CL MOV DL,00H;FLAG L: MOV DIVISOR,CL MOV AH,00H MOV AL,DIVIDEND MOV BL,DIVISOR DIV BL CMP Ah,00H JnE SKIP cmp DIVISOR,01H JE S INC DL;FLAG S: SKIP: LOOP L DONE: CMP DL,00H      JE ELSE1                   LEA DX,STR2         JMP DISPLAY               ELSE1:             LEA DX,STR1         DISPLAY:             MOV AH,09H             INT 21H MOV AH,4CH INT 21H CODE ENDS END START

Fibonacci series to display first 5 terms

assume cs:code,ds:data data segment str1 db "First 5 number's of Fibonacci series are : 1$" data ends code segment start: mov ax,data mov ds,ax mov al,00h mov bl,01h mov ch,00h mov cl,04h LEA DX,STR1 MOV AH,09H INT 21H l: add al,bl;c=a+b mov dl,al ;c add dl,30h mov ah,02h int 21h sub dl,30h mov al,bl;a=b mov bl,dl;b=c loop l mov ah,4ch int 21h code ends end start

ALP to demonstrate rotate operations

ASSUME CS:CODE,DS:DATA DATA SEGMENT A DW 9223H DATA ENDS CODE SEGMENT START:  MOV AX,DATA  MOV DS,AX    ;add ax,00h instruction is clear carry flag   MOV AX,A  ROR AX,1  ADD AX,00H  MOV AX,A  RCR AX,1   ADD AX,00H  MOV AX,A  ROL AX,1   ADD AX,00H  MOV AX,A  RCL AX,1  MOV AH,4CH  INT 21H CODE ENDS END START

ALP to demonstrate shift operations

ASSUME CS:CODE,DS:DATA DATA SEGMENT A Dw 54H DATA ENDS CODE SEGMENT START:  MOV AX,DATA  MOV DS,AX  ;add ax,00h instruction is clear auxiliary flag   add ax,00h  MOV AX,A  SHL AX,1  add ax,00h  MOV AX,A  SAL AX,1  add ax,00h  MOV AX,A  SHR AX,1  add ax,00h  MOV AX,A  SAR AX,1  MOV AH,4CH  INT 21H CODE ENDS END START

ALP to demonstrate logical operations

Image
ASSUME CS:CODE,DS:DATA DATA SEGMENT A DB 4H B DB 7H DATA ENDS CODE SEGMENT START:  MOV AX,DATA  MOV DS,AX  MOV AL,A  MOV BL,B  AND AL,BL  MOV AL,A  MOV BL,B  OR AL,BL  MOV AL,A  MOV BL,B  XOR AL,BL  MOV AL,A  NOT AL  MOV AH,4CH  INT 21H CODE ENDS END START OUTPUT: IN DEBUG MODE

ALP to demonstrate even or odd number using procedure

ASSUME CS:CODE,DS:DATA DATA SEGMENT STR1 DB "ENTER NUMBER:$" STR2 DB 0AH,"NUMBER IS EVEN$" STR3 DB 0AH,"NUMBER IS ODD$" DATA ENDS CODE SEGMENT START: MOV AX,DATA MOV DS,AX LEA DX,STR1 MOV AH,09H INT 21H MOV AH,01H INT 21H SUB AL,30H ; al has the number call evenodd MOV AH,4CH INT 21H evenodd proc near  MOV BL,02H  DIV BL CMP AH,00H JNE E LEA DX,STR2 MOV AH,09H INT 21H         JMP O   E: LEA DX,STR3 MOV AH,09H   INT 21H   O:     ret evenodd endp  CODE ENDS END START

ALP to evaluate arithmetic expression

ASSUME CS:CODE,DS:DATA ; EVALUATION OF EXPRESSION E= (A+B)-(C+D) DATA SEGMENT STR DB 0AH,"ENTER NUMBER :$" STR2 DB 0AH,"$" NUM DB ? DATA ENDS CODE SEGMENT START:  MOV AX,DATA  MOV DS,AX  MOV CX,4H  LEA SI,NUM  L:  LEA DX,STR  MOV AH,09H  INT 21H  MOV AH,01H  INT 21H  SUB AL,30H  MOV [SI],AL  INC SI  LOOP L  LEA SI,NUM  MOV AL,[SI]  ADD AL,[SI+1]  MOV BL,[SI+2]  ADD BL,[SI+3]  ;NEW LINE START  LEA DX,STR2  MOV AH,09H  INT 21H  ;NEW LINE END  SUB AL,BL  ADD AL,30H  MOV DH,00H  MOV DL,AL  MOV AH,02H  INT 21H  MOV AH,4CH  INT 21H CODE ENDS END START

ALP to display all prime numbers from 1 to 9

ASSUME CS:CODE,DS:DATA DATA SEGMENT DIVIDEND DB ? DIVISOR DB ? NUM DB 9h DATA ENDS CODE SEGMENT START:  MOV AX,DATA  MOV Ds,AX  ALL:  MOV AL,NUM  dec AL  MOV DIVIDEND,AL  MOV NUM,AL  MOV CH,00H  MOV CL,DIVIDEND  DEC CL  MOV DL,00H;FLAG  L:  MOV DIVISOR,CL  MOV AH,00H  MOV AL,DIVIDEND  MOV BL,DIVISOR  DIV BL  CMP AH,00H  JNE SKIP  CMP DIVISOR,01H;TO SKIP DIVISOR AS 1  JE SKIP1  INC DL;FLAG  SKIP1:  SKIP:  LOOP L DONE:  CMP DL,00H  JE ELSE1   ;NOT PRIME  JMP DIS  ELSE1:  MOV DH,00H  MOV DL,DIVIDEND  ADD DL,30H  MOV AH,02H  INT 21H DIS: cmp num,01h je ex CMP NUM,02H JNE ALL      ex: MOV AH,4CH INT 21H CODE ENDS END START

ALP to check the given number is prime or not.

ASSUME CS:CODE,DS:DATA DATA SEGMENT STR1 DB "PRIME NUMBER$" STR2 DB "NOT A PRIME NUMBER$" DIVIDEND DB 07H ;assuming that 7 is the given number DIVISOR DB ? DATA ENDS CODE SEGMENT START: MOV AX,DATA MOV DS,AX mov ch,00h MOV CL,DIVIDEND DEC CL MOV DL,00H;FLAG L: MOV DIVISOR,CL MOV AH,00H MOV AL,DIVIDEND MOV BL,DIVISOR DIV BL CMP Ah,00H JnE SKIP cmp DIVISOR,01H JE S INC DL;FLAG S: SKIP: LOOP L DONE: CMP DL,00H      JE ELSE1                     LEA DX,STR2         JMP DISPLAY                  ELSE1:             LEA DX,STR1         DISPLAY:             MOV AH,09H              INT 21H MOV AH,4CH INT 21H CODE ENDS END START

ALP to find the factors of a number

ASSUME CS:CODE,DS:DATA DATA SEGMENT STR1 DB "ENTER NUNBER: $" STR2 DB 0AH,"FACTOR'S ARE : $" str3 db 0ah,"$" NUM DB ? DATA ENDS CODE SEGMENT START:  MOV AX,DATA  MOV DS,AX  LEA DX,STR1  MOV AH,09H  INT 21H  MOV AH,01H  INT 21H  SUB AL,30H  mov ch,00h  MOV CL,AL  MOV NUM,AL  LEA DX,STR2  MOV AH,09H  INT 21H  L:  MOV AH,00H  MOV AL,NUM  DIV CL  CMP AH,00H  JNE SKIP lea dx,str3;new line string mov ah,09h int 21h  MOV DH,00H  MOV DL,CL  ADD DL,30H  MOV AH,02H  INT 21H  SKIP:  LOOP L  MOV AH,4CH  INT 21H CODE ENDS END START

ALP to perform linear search

ASSUME CS:CODE,DS:DATA DATA SEGMENT LIST DB ? STR1 DB "ENTER N :$" STR2 DB 0AH,"ENTER NUMBER :$" STR3 DB 0AH,"ELEMENT FOUND.$"; STR4 DB 0AH,"ELEMENT NOT FOUND.$" STR5 DB 0AH,"ENTER AN ELEMENT TO SEARCH :$" N DB ? DATA ENDS CODE SEGMENT START: MOV AX,DATA MOV DS,AX LEA DX,STR1 MOV AH,09H INT 21H MOV AH,01H INT 21H SUB AL,30H MOV CL,AL MOV N,AL LEA SI,LIST L: LEA DX,STR2 MOV AH,09H INT 21H MOV AH,01H INT 21H SUB AL,30H MOV [SI],AL INC SI LOOP L MOV CL,N MOV BL,00H ;ACTS AS FLAG LEA DX,STR5 MOV AH,09H INT 21H MOV AH,01H INT 21H SUB AL,30H LEA SI,LIST S: CMP AL,[SI] JE FOUND INC SI INC BL LOOP S CMP BL,N JE NOTFOUND FOUND: LEA DX,STR3 JMP O NOTFOUND: LEA DX,STR4 O: MOV AH,09H INT 21H MOV AH,4CH INT 21H CODE ENDS END START

ALP to display quotient and remainder

ASSUME CS:CODE,DS:DATA DATA SEGMENT STR1 DB 0AH,"ENTER NUMBER:$" STR2 DB 0AH,"QUOTIENT IS $" STR3 DB 0AH,"REMAINDER IS $" DIVIDEND DB ? DIVISOR DB ? DATA ENDS CODE SEGMENT START: MOV AX,DATA MOV DS,AX LEA DX,STR1 MOV AH,09H INT 21H MOV AH,01H INT 21H SUB AL,30H MOV DIVIDEND,AL LEA DX,STR1 MOV AH,09H INT 21H MOV AH,01H INT 21H SUB AL,30H MOV DIVISOR,AL MOV AX,00H MOV AL,DIVIDEND MOV BL,DIVISOR DIV BL MOV DIVIDEND,AL ;placing quotient in divident MOV DIVISOR,AH ;placing remainder in divisor LEA DX,STR2 MOV AH,09H INT 21H MOV AH,00H MOV AL,DIVIDEND ADD AL,30H MOV DX,AX MOV AH,02H INT 21H LEA DX,STR3 MOV AH,09H INT 21H MOV AH,00H MOV AL,DIVISOR ADD AL,30H MOV DX,AX MOV AH,02H INT 21H MOV AH,4CH INT 21H CODE ENDS END START

ALP to check if the given number is even or odd

ASSUME CS:CODE,DS:DATA DATA SEGMENT STR1 DB "ENTER NUMBER:$" STR2 DB 0AH,"NUMBER IS EVEN$" STR3 DB 0AH,"NUMBER IS ODD$" DATA ENDS CODE SEGMENT START: MOV AX,DATA MOV DS,AX LEA DX,STR1 MOV AH,09H INT 21H MOV AH,01H INT 21H SUB AL,30H  MOV BL,02H  DIV BL CMP AH,00H JNE E LEA DX,STR2         JMP O   E: LEA DX,STR3   O:   MOV AH,09H   INT 21H MOV AH,4CH INT 21H  CODE ENDS END START

ALP to take n values from user and sort them in ascending order

ASSUME CS:CODE,DS:DATA DATA SEGMENT INPUT DB ? STR1 DB "ENTER N:$" STR2 DB 0AH,"ENTER NUMBER:$" STR3 DB 0AH,"SORTED LIST IS :$" N DB ? DATA ENDS CODE SEGMENT START:  MOV AX,DATA  MOV DS,AX  LEA DX,STR1  MOV AH,09H  INT 21H  MOV AH,01H  INT 21H  SUB AL,30H  MOV N,AL  MOV CL,AL  LEA SI,INPUT  L:  LEA DX,STR2  MOV AH,09H  INT 21H  MOV AH,01H  INT 21H  SUB AL,30H  MOV [SI],AL  INC SI  LOOP L  ;SORTING START  MOV CL,N  DEC CL  OUTER:  LEA SI,INPUT  INNER:  MOV AL,[SI]  CMP AL,[SI+1]  JLE SKIP   MOV aH,[SI+1]   MOV BH,[SI]   MOV [SI],aH   MOV [SI+1],BH  SKIP:  INC SI  MOV BX,N  DEC BX  CMP SI,BX  JLE INNER  LOOP OUTER  ;SORTING DONE  LEA DX,STR3  MOV AH,09H  INT 21H  LEA SI,INPUT  MOV CX,N  L2...

ALP to reverse a string

ASSUME CS:CODE,DS:DATA DATA SEGMENT fstr db "SANTOSH",'$' slen dw $-fstr  ;now slen has a value of 7+1=8 rstr db 20 dup (?) DATA ENDS CODE SEGMENT START:  MOV AX,DATA  MOV DS,AX  MOV ES,AX  LEA SI,FSTR  LEA DI,RSTR  MOV CX,SLEN  DEC CX  DEC CX  ADD SI,CX  MOV CX,SLEN  DEC CX L:  MOV DX,[SI]  DEC SI  MOV [DI],DX  INC DI  LOOP L  MOV AL,'$'  MOV [DI],AL  LEA DX,RSTR  MOV AH,09H  INT 21H  MOV AH,4CH  INT 21H CODE ENDS END START

ALP to transfer a block of data from one location to another

Image
ASSUME CS:CODE,DS:DATA DATA SEGMENT DATA1 DB 01H,02H,03H,04H DATA2 DB ? DATA ENDS CODE SEGMENT START: MOV AX,DATA MOV DS,AX MOV ES,AX  MOV CX,04H  LEA SI,DATA1  LEA DI,DATA2  L:  MOV AL,[SI]  MOV [DI],AL  INC SI  INC DI  LOOP L ;HERE WE SHOULD CHECK RESULT IN DEBUG MODE OR DISPLAY DATA2 ITEMS MOV AH,4CH  INT 21H CODE ENDS END START OUTPUT:

ALP to take n values from user and calculate maximum and minimum values

ASSUME CS:CODE,DS:DATA DATA SEGMENT LARGE DB ? SMALL DB ? STR1 DB "ENTER N :$" STR2 DB 0AH,"ENTER NUMBER :$" STR3 DB 0AH,"MAXIMUM NUMBER IS :$" STR4 DB 0AH,"MINIMUM NUMBER IS :$" DATA ENDS CODE SEGMENT START: MOV AX,DATA MOV DS,AX LEA DX,STR1 MOV AH,09H INT 21H MOV AH,01H INT 21H SUB AL,30H MOV CL,AL ; FOR COUNTER MOV AL,09H ;ASSUMING THAT 9 IS THE MAXIMUM VALUE MOV SMALL,AL MOV AL,00H ;ASSUMING THAT 0 IS THE MINIMUM VALUE MOV LARGE,AL L: LEA DX,STR2 MOV AH,09H INT 21H MOV AH,01H INT 21H SUB AL,30H MOV BL,AL ;MAKING A COPY OF NUMBER CMP AL,LARGE JGE SKIP MOV AL,LARGE SKIP: MOV LARGE,AL CMP BL,SMALL JLE SKIP2 MOV BL,SMALL SKIP2: MOV SMALL,BL LOOP L MOV AL,LARGE LEA DX,STR3 MOV AH,09H INT 21H MOV DX,AX ADD DX,3030H MOV AH,02H INT 21H MOV AL,SMALL LEA DX,STR4 MOV AH,09H INT 21H MOV DX,AX ADD DX,3030H MOV AH,02H INT 21H MOV A...

ALP to take n values from user and calculate their sum.

ASSUME CS:CODE,DS:DATA DATA SEGMENT SUM DB ? STR1 DB "ENTER N:$" STR2 DB 0AH,"ENTER NUMBER:$" STR3 DB 0AH,"SUM IS :$" DATA ENDS CODE SEGMENT START: MOV AX,DATA MOV DS,AX LEA DX,STR1 MOV AH,09H INT 21H MOV AH,01H INT 21H SUB AL,30H MOV CL,AL MOV AL,00H MOV SUM,AL  L:   LEA DX,STR2 MOV AH,09H INT 21H MOV AH,01H INT 21H SUB AL,30H ADD AL,SUM MOV SUM,AL LOOP L LEA DX,STR3 MOV AH,09H INT 21H MOV AH,00H  MOV AL,SUM MOV DX,AX         ADD dx,3030H MOV AH,02H INT 21H MOV AH,4CH INT 21H  CODE ENDS END START