document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. ;----------------------------------------------------------------------------------------
  2. ; ASSIGNMENT NO : 2
  3. ; TITLE : WRITE ALP TO SIMULATE COPY COMMAND USING PSP.
  4. ;----------------------------------------------------------------------------------------
  5.  
  6. PRINT MACRO MSG
  7.         MOV AH,09H
  8.         LEA DX,MSG
  9.         INT 21H
  10. ENDM
  11.  
  12. DATA SEGMENT
  13.  
  14.         SPACE DB "    $"
  15.         NEWL  DB 10,13, "$"
  16.  
  17.         FNAME1 DB 100 DUP(?)
  18.         FNAME2 DB 100 DUP(?)
  19.  
  20.         FP1  DW ?
  21.         FP2  DW ?
  22.  
  23.         BUFFER DB 1024 DUP(\'$\')
  24.         CNT DW ?
  25.  
  26.         SUCCESS DB 10,13, "FILE OPERATION SUCCESSFUL$"
  27.         FAIL DB 10,13, "FILE OPERATION FAILED$"
  28.         CONTENTS DB 10,13, "CONTENTS OF THE FILE ARE$"
  29.  
  30. DATA ENDS
  31.  
  32. ASSUME CS:CODE ,DS:DATA
  33.  
  34. CODE SEGMENT
  35.  
  36. START:
  37.  
  38.         MOV AX,DATA
  39.         MOV DS,AX
  40.  
  41.         MOV AH,62H                      ;LOAD BASE ADDRESS OF PSP
  42.         INT 21H
  43.                        
  44.         MOV ES,BX                       ;BX HAS BASE ADDRESS LOADED IN ES
  45.         MOV SI,80H                      ;OFFSET OF FILE NAME
  46.         MOV CH,ES:[SI]              ;LENGTH OF FILE NAME
  47.         DEC CH
  48.         MOV SI,82H                      ;OFFSET OF FILE CONTENTS
  49.        
  50.         LEA DI,FNAME1
  51.  
  52.  
  53. L1:                             ;LOOP TO MOVE FILE NAME IN FNAME
  54.         MOV BL,ES:[SI]
  55.         MOV [DI],BL
  56.         INC SI
  57.         INC DI
  58.         DEC CH
  59.         CMP BL," "
  60.         JNE L1          
  61.        
  62.  
  63.         LEA DI,FNAME2
  64.  
  65. L2:                                 ;LOOP TO MOVE FILE NAME IN FNAME
  66.         MOV BL,ES:[SI]
  67.         MOV [DI],BL
  68.         INC SI          
  69.         INC DI          
  70.         DEC CH
  71.         JNZ L2
  72.  
  73.         LEA DX,FNAME1            
  74.         MOV AH,3DH                  ;INTERRUPT FOR OPENING FILE
  75.         MOV AL,00H                      ;READ MODE
  76.         INT 21H
  77.         MOV FP1,AX                  ;AFTER OPENING AX HAS UNIQUE FILE HANDLE
  78.  
  79.         JNC L3                          ;IF SUCCESSFUL CARRY FLAG IS RESET
  80.         PRINT FAIL
  81.         JMP END1
  82.  
  83. L3:
  84.         PRINT NEWL
  85.         PRINT SUCCESS
  86.  
  87.         MOV BX,FP1
  88.         MOV AH,3FH                      ;FOR READING CONTENTS
  89.                                         ;COUNT OF ELEMENTS TO BE READ
  90.         LEA DX,BUFFER                   ;DX HAS ADDRESS OF DESTINATION
  91.         INT 21H                
  92.         MOV CNT,AX                      ;CNT CONTAINS THE COUNT OF BYTES TO BE COPIED
  93.         JNC L4
  94.  
  95.         PRINT NEWL
  96.         PRINT FAIL
  97.         JMP END1
  98.  
  99. L4:
  100.         PRINT NEWL
  101. ;        PRINT SUCCESS
  102.  
  103.         PRINT NEWL
  104.         PRINT CONTENTS
  105.         PRINT NEWL
  106.  
  107.  
  108.         LEA SI,BUFFER
  109.         MOV CX,CNT
  110.  
  111. A1:                                  ;LOOP TP DISPLAY CONTENTS OF BUFFER
  112.         MOV AH,02H
  113.         MOV DL,[SI]
  114.         INT 21H
  115.         INC SI
  116.         DEC CX
  117.         JNZ A1
  118.  
  119.         MOV AH,3EH                      ;INTERRUPT FOR CLOSING THE FILE
  120.         MOV BX,FP1
  121.         INT 21H
  122.  
  123.         MOV AH,3CH                      ;INTERRUPT FOR CREATING A NEW FILE
  124.         MOV DX,SEG FNAME2
  125.         MOV DS,DX                   ;DS MUST HAVE BASE ADDRESS OF FILE NAME 2
  126.         LEA DX,FNAME2               ;DX MUST HAVE THE OFFSET ADDRESS OF FILE NAME 2
  127.         MOV CX,00H                  ;CX MUST HAVE FILE ATTRIBUTE
  128.                                     ;00 :-NORMAL MODE
  129.                                     ;01 :-READ MODE
  130.         INT 21H
  131.         MOV  FP2,AX
  132.  
  133.         JNC L5
  134.         PRINT NEWL
  135.         PRINT FAIL
  136.         JMP END1
  137.        
  138. L5:
  139.         PRINT NEWL
  140. ;        PRINT SUCCESS
  141.  
  142.         MOV AH,40H                      ;INTERRUPT FOR COPYING CONTENTS
  143.         MOV BX,FP2                      ;HANDLE OF THE FILE SHOULD BE IN BX
  144.         MOV DX,SEG BUFFER
  145.         MOV DS,DX
  146.         LEA DX,BUFFER
  147.         MOV CX,CNT                      ;CX CONTAINS COUNT OF BYTES TO BE MOVED
  148.         INT 21H
  149.  
  150.         JNC L6
  151.         PRINT FAIL
  152.         JMP END1
  153.  
  154. L6:
  155.         PRINT NEWL
  156.         PRINT SUCCESS
  157.  
  158. END1:
  159.         MOV AH,4CH
  160.         INT 21H
  161.  
  162. CODE ENDS
  163.  
  164. END START
  165.  
  166. ;----------------------------------------------------------------------------------------
  167. ; END OF THE PROGRAM
  168. ;----------------------------------------------------------------------------------------
');