الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ممكن مساعده في تنفيذ البرامج

مغلق
بدأه SaFaA.StB في 18 يناير 2008 · 2 رد · 1,210 مشاهدة · في أرشيف قسم الـــ Assembly
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

مرحبا ازا ممكن حد يساعدني في معرفة ما هي الامورالتي تعمل على تنفيذها البرامج التاليه بكون شاكره لئلكم

البرنامج الاول

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

تم تعديل هذه المشاركة بواسطة SaFaA.StB في 18 يناير 2008 في 01:37

#2

كثير ... يرجى توضيح الجزئيات الغير مفهومة فقط !

كما ان بداية كل ملف تذكر ما يقوم به !

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#3
GamingMasteR كتب:
كما ان بداية كل ملف تذكر ما يقوم به !

:rolleyes: فقط لا غير

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…