مرحبا ازا ممكن حد يساعدني في معرفة ما هي الامورالتي تعمل على تنفيذها البرامج التاليه بكون شاكره لئلكم
البرنامج الاول
TITLE EX1.ASM : Print the Sum of 10 array element ; Using Register Indirect Mode.MODEL SMALL .STACK 100H.DATA MSG_1 DB 0DH,0AH,7H,'The Sumation is : $' ARRAY DB 10,20,30,40,50,60,70,80,90,100 .CODE MAIN PROC ; initializing Data Segment MOV AX,@DATA MOV DS,AX ; point register SI to ARRAY LEA SI,ARRAY ; for 1 to 10 add the sum of array element MOV CX,10 XOR AX,AX XOR DX,DX @TOP: MOV DL,[SI] ADD AX,DX INC SI LOOP @TOP PUSH AX ; prin the Sumation LEA DX,MSG_1 MOV AH,9 INT 21H POP AX XOR CX,CX MOV BX,10 @FOR: XOR DX,DX DIV BX PUSH DX INC CX OR AX,AX JNE @FOR MOV AH,2 @PRINT: POP DX OR DX,30H INT 21H LOOP @PRINT ; return to dos MOV AH,4CH INT 21H MAIN ENDP END MAIN
البرنامج الثاني
TITLE EX2.ASM : Enter 10 - Element array and Display it.MODEL SMALL .STACK 100H.DATA PROMPT_1 DB 0DH,0AH,07H,'Enter the Element : ',0DH,0AH,07H,'$' MSG_1 DB 0DH,0AH,07H,'The Element is : ',0DH,0AH,07H,'$' ARRAY DW 10 DUP (0) .CODE MAIN PROC MOV AX,@DATA MOV DS,AX MOV AH,9 LEA DX,PROMPT_1 INT 21H LEA SI,ARRAY MOV CX,10 @TO2P: CALL INPUT_DECIMAL MOV [SI],AX ADD SI,2 MOV AH,2 MOV DL,0DH INT 21H MOV DL,0AH INT 21H LOOP @TO2P MOV CX,10 LEA SI,ARRAY MOV AH,9 LEA DX,MSG_1 INT 21H @PRINT: MOV AX,[SI] CALL OUTPUT_DECIMAL ADD SI,2 MOV AH,2 MOV DL,20H INT 21H LOOP @PRINT MOV AH,4CH INT 21H MAIN ENDP;***************************************** ;***************************************** ;************ INPUT_DECIMAL ************** ;***************************************** ;***************************************** ; JOB : input decimal number ; INPUT : none ; OUTPUT : AX INPUT_DECIMAL PROC @BEGIN: PUSH BX PUSH CX PUSH DX XOR CX,CX XOR BX,BX MOV AH,1 INT 21H CMP AL,0DH JE @END_INPUT CMP AL,'-' JE @MINUS CMP AL,'+' JE @PLUS JMP @INPUT @MINUS: MOV CX,1 @PLUS : INT 21H @INPUT: CMP AL,'0' JL @ERROR CMP AL,'9' JG @ERROR AND AX,000FH PUSH AX MOV AX,10 MUL BX POP BX ADD BX,AX MOV AH,1 INT 21H CMP AL,0DH JE @END_INPUT JMP @INPUT @END_INPUT: MOV AX,BX CMP CX,1 JNE @NEXT NEG AX @NEXT: POP DX POP CX POP BX RET @ERROR: MOV AH,2 MOV DL,0DH INT 21H MOV DL,0AH INT 21H JMP @BEGIN INPUT_DECIMAL ENDP ;***************************************** ;***************************************** ;************ OUTPUT_DECIMAL ************* ;***************************************** ;***************************************** ; JOB : output decimal number ; INPUT : AX ; OUTPUT : none OUTPUT_DECIMAL PROC PUSH BX PUSH CX PUSH DX XOR CX,CX MOV BX,10D CMP AX,0 JGE @NEXT_ PUSH AX MOV AH,2 MOV DL,'-' INT 21H POP AX NEG AX @NEXT_: @OUTPUT: XOR DX,DX DIV BX PUSH DX INC CX CMP AX,0 JNE @OUTPUT MOV AH,2 @TOP: POP DX OR DL,30H INT 21H LOOP @TOP POP DX POP CX POP BX RET OUTPUT_DECIMAL ENDPEND MAIN
البرنامج الثالث
TITLE EX3.ASM : Select Sort.MODEL SMALL .STACK 100H.DATA ARRAY DB 5,2,1,3,4 .CODE MAIN PROC MOV AX,@DATA MOV DS,AX LEA SI,ARRAY MOV BX,5 CALL SELECT_SORT MOV AH,4CH INT 21H MAIN ENDP ;************************************************************************** ;---------------------------- Select Sort --------------------------------- ;************************************************************************** ; input : SI contain the offset address of array ; BX containe the number of element ; output : SI contain the new offset of sorted array SELECT_SORT PROC PUSH BX PUSH CX PUSH DX PUSH SI DEC BX JE @END_SORT MOV DX,SI @SORT_LOOP: MOV SI,DX MOV CX,BX MOV DI,SI MOV AL,[DI] @FIND_BIG: INC SI CMP [SI],AL JNG @NEXT MOV DI,SI MOV AL,[DI] @NEXT: LOOP @FIND_BIG CALL SWAP DEC BX JNE @SORT_LOOP @END_SORT: POP SI POP DX POP CX POP BX RET SELECT_SORT ENDP ;************************************************************************** ;-------------------------------- Swap ------------------------------------ ;************************************************************************** ; input : SI contain the first element ; DI containe the second element SWAP PROC PUSH AX MOV AL,[SI] XCHG AL,[DI] MOV [SI],AL POP AX SWAP ENDP END MAIN