# برنامه نویسی سطح پایین > برنامه نویسی اسمبلی خانواده x86 >  برنامه های کاربردی در اسمبلی

## qazwsx

در اینجا میخواهم برنامه های مهم در اسمبلی را قرار دهم لطفا اگر برنامه خوب و آموزشی دارید در اینجا قرار دهید

----------


## qazwsx

برنامه فعال کردن موس بدون استفاده 33h

----------


## qazwsx

باز و بسته شدن درب سیدی رام

----------


## qazwsx

محیط برای زبان اسمبلی در win32

----------


## qazwsx

یک سیستم عامل کوچک و خوب برای آموزش

----------


## qazwsx

خوب فکرکنم برنامه ها رو کسی نمی خواد و به این قسمت هم کسی علاقه نداره پس بای

----------


## Delphi Coder

بهتر بود ادامه میدادی. تا اینجا که جالب بود. نمیشه انتظار داشت یه بخشی مثل اسمبلی که اکثر User هاش میان فقط پروژه دانشجویی شونو اینجا سفارش بدن رغبت به این برنامه ها نشون بدن ولی توجه داشته باشید که این مطالب تو سایت میمونه و بعدا هستن کسانی که بخوان از این مطالب استفاده کنن. مثل من که شاید 2 ماه نیست با اینجا آشنا شدم ولی حتی از مطالب و پست های 4 سال پیش این سایت هم خصوصا بخش اسمبلی و دلفی به خاطر علاقه ای که دارم یه چیزایی یاد گرفتم. بنابراین اگر هدفتون Share کردن اطلاعات بود فکر میکنم بهتره ادامه بدید.

----------


## qazwsx

یعنی ما برنامه نویس حرفه ای نداریم

----------


## qazwsx

اطلاعات موس را نمایش میدهد

----------


## qazwsx

یک سیدی پلیر با  asm win32

----------


## qazwsx

*Binary Clock 1.0*

----------


## Delphi Coder

> *Binary Clock 1.0*


 تست کردید اینو؟

----------


## raravaice

وضعیت پورتهای شبکه

----------


## raravaice

نمایش ترافیک شبکه با گراف

----------


## raravaice

Mail Checker POP3

----------


## raravaice

Chat In TCP/IP

----------


## raravaice

Shutdown,Logoff or Restart Window

----------


## raravaice

KeyLogger
البته آنتی ویروس های فعلی این کد رو به عنوان ویروس شناسایی میکنند.

----------


## raravaice

MP3 Player

----------


## raravaice

Water Effect

----------


## raravaice

HTML Color Mixer

----------


## raravaice

RAS function

----------


## Delphi Coder

http://win32assembly.programminghorizon.com/source.html
یا
http://win32assembly.online.fr/source.html

----------


## qazwsx

assembler for 8080, 8085 and Z80 microprocessors

----------


## najafzade

> یعنی ما برنامه نویس حرفه ای نداریم


اختتیار دارین.
ولی این Source هایی که شما گذاشتین تو اینترنت همش هست.
یه چیز جدیدتر بزارین. :لبخند:  (در گوشی: توهین هم نکنین)

----------


## mahshid_glna

> برنامه فعال کردن موس بدون استفاده 33h


سلام خوبین ؟
ببخشید من این کد رو گرفتم ولی نتونستم اجرا کنم از nasm هم استفاده کردم ! ممنکنه اگه کد دیگه ای در این رابطه دارید بدین با در رابطه با همین کد کمکم کنید . ممنونم .

----------


## amirsadeghi

ممنون از برنامه های خوبتون
سورسی راجع به برنامه ماشین حساب هم دارید.
در حدی که فقط نحوه کار رو بفهمیم کفایت می کنه.
ممنونم

----------


## amirsadeghi

> کسی می تونه این پروژه ها انجام بده ؟
> 
> 
> برنامه‌ای بنویسید که یک عدد با حداکثر سه رقم صحیح و دو رقم اعشاری از کاربر بگیرد و آن را به حروف فارسی روی مانیتور نمایش دهد
> 
> برنامه‌ای بنویسید که کاراکتر موجود در هر نقطه از صفحه نمایش که کاربر کلیک دكمه چپ ماوس کند را محو کند و با کلیک راست، آن را مجدداً نمایش دهد.
> 
>  برنامه مقیم در حافظه‌ای بنویسید که در حین اجرای هر برنامه‌ای، هرگاه کلید Num Lock فشرده شود، بوق کامپیوتر را به صدا درآورد.
> 
> ...


شرمنده مهندس : قرار شد پروژه های دانشجویی درخواست ندید. آستینا رو بالا بزنید و همت کنید شروع به نوشتن کنید و هر جا به مشکل برخوردید کمک بگیرد.
با تشکر

----------


## parsdadeh

با سلام
حدود 200 برنامه وجود داره نمیدونم کدومشون مورد نیاز است، کسی برنامه میخوائ اعلام کنه...

----------


## kashaneh

برنامه ماشین حساب با 4 عمل اصلی با این تفاوت که بتواند اعداد تا 40 رقم رو محاسبه کند! محدودیت ماشین حسابهای معمولی اسمبلی در اینه که حداکثر تا 8 رقم رو میشه باهاشون محاسبه کرد... از توجه اساتید این تالار متشکرم

----------


## smart2009

سلام؛
واقعا دستتون درد نکنه. خیلی باحاله، از این به بعد من مشتری می شم.

----------


## sorena178

سلام وخسته نباشید
من نیاز به MASM و LINK ورژن 6 به بالا دارم. کدها رو نوشتم اما عمل نمیکنه استاد میگه باید با masm بالاتر کمپایل بشه. نتونستم گیر بیارم . ممنون و سپاس فراوان

----------


## irprodesigner

ادیتور متن

----------


## مائده 100

> با سلام
> حدود 200 برنامه وجود داره نمیدونم کدومشون مورد نیاز است، کسی برنامه میخوائ اعلام کنه...


 سلام من یه بازی ماشین به زبان اسمبلی همراه با توضیحاتش و یه هر برنامه در حد کارشناسی همراه با توضیحاتش می خواستم اگه دارین لطفا برام بذارین

----------


## jaafar1363

> parsdadeh[/B];521806]با سلام
> حدود *200 برنامه* وجود داره نمیدونم کدومشون مورد نیاز است، کسی برنامه میخوائ اعلام کنه...


 
سلام
شما که 200 برنامه داری می خوام ببینم *برنامه محاسبه ماتریس معکوس 2*2* رو هم داری؟

----------


## sara25

سلام من به برنامه اعداد كامل احتياج دارم خيلي فوري اگه دارين ترخدا هر چه سريعتر برام بذارين ممنون

----------


## MoAm36866513

ممنون از همه فايل هل باز هم بذار

----------


## motahare

> با سلام
> حدود 200 برنامه وجود داره نمیدونم کدومشون مورد نیاز است، کسی برنامه میخوائ اعلام کنه...


 سلام.می خواستم بدونم برنامه ای درباره   defrag یا scan diskدارید.ممنون می شم اگه کمک بهم بدین.

----------


## izsxizsx

این فایلها منبع خوبی برای تازه کارا هستن.
لطفا ادامه بدید
(اینطور نیست که همه دنبال تمرینات حل شده باشن)


تشکر

----------


## vahidsaberi1991

damet garm hal dad

----------


## Blunch

با سلام و تشكر از لطف جنابعالي
اگه ميشه لطف كنيد وكد برنامه تعيين زوج و فرد بودن يك عدد را بذارين

با تشكر

----------


## $ M 3 H R D A D $

برنامه زوج و فرد

.MODEL SMALL

.STACK 64

.DATA

STR1 DB "ZOJ$"
STR2 DB "FARD$"

.CODE
MAIN PROC FAR
    
    MOV AX,@DATA
    MOV DS,AX
    ;-----
    MOV AX,4 ;ADADE MOREDE NAZAR / BL-> IF MOD IS 0 = EVEN
    
    MOV BL,2
    DIV BL
    CMP AH,0
    
    JNE LF
    
    MOV AH,09H
    LEA DX,STR1
    INT 21H
    JMP EXIT
    
    
    LF:
    MOV AH,09H
    LEA DX,STR2
    INT 21H
     
    
    EXIT:
    ;----
    MOV AH,00H
    INT 16H
    ;----
    MOV AX,4C00H
    INT 21H

MAIN ENDP
END MAIN

----------


## Blunch

با عرض سلام و تشكر از دوست گرامي!

خواستم اگه ميشه لطف كنيد و مرا راهنمايي فرماييد كه چگونه مي توان در يك برنامه آرايه اي از كاراكترها را تعريف نمود به گونه اي كه كاراكترها بصورت يك در ميان چاپ گردند؟

با تشكر

----------


## $ M 3 H R D A D $

برای تعریف آرایه تو اسمبلی از DB استفاده میکنیم که میاد اعداد یا کاراکتر ها رو تو خونه های یک بایت ای  پشت سر هم قرار میده

STR DB "MEHRDAD$" STR[0]=M,STR[1]=E
و به همین صورت ادامه....

از سرویس 02 اینتراپت 21 استفاده میکنیم به این صورت که یک شمارنده میزاریم که اولش از 0 باشه و اگه کاراکتری که اندیس داره بهش شاره میکنه غیر از دالر بود و یا یکی قبلش دالر نبود بیاد چاپ کنه و بعدش شمارنده 2 بار اضافه بشه که یک درمیان چاپ بشه

چون 2بار اضافه میشه ممکن بود از دالر رد بشه و هرچی کاراکتر تو حافظه بود و چاپ میکرد واسه همین شرط یکی قبلش بررسی شد

امیدوارم مستقیم نری سر کد من و کپی کنی...اگه اشکال داشت بفرمایید

.MODEL SMALL

.STACK

.DATA

STR DB "ABCDEFGH$"

.CODE

MAIN PROC FAR
    
    MOV AX,@DATA
    MOV DS,AX
    MOV ES,AX
    ;----
    
    MOV BX,0
    
    L1:
    MOV AL,STR[BX]
    CMP AL,'$'
    JE EXIT
    MOV AL,STR[BX-1]
    CMP AL,'$'
    JE EXIT
    MOV AH,02H
    MOV DL,STR[BX]
    INT 21H
    INC BX
    INC BX
    JMP L1
    
    ;----
    EXIT:
    MOV AH,00H
    INT 16H
    
    MOV AX,4C00H
    INT 21H
    
MAIN ENDP
END MAIN

----------


## Blunch

*با سلام خدمت دوست گرامی و با تشکر از راهنماییهای جنابعالی*

*می خواستم ببینم در مورد برنامه زیر از چه کدی باید استفاده نمود تا از کاربر تایید گرفت :*

*برنامه ای که تعدادی عدد از کاربر دریافت کرده* و* کوچکترین* *و بزرگترین عدد ورودی را نمایش دهد ، پس از ورود هر عدد از کاربر*سؤ*ال می شود که اگر پاسخ صحیح داد(y)*
*عدد دیگری دریافت شده* *و در غیر اینصورت بزرگترین و کوچکترین اعداد ورودی نمایش داده شوند .*

*با تشكر*

----------


## $ M 3 H R D A D $

سلام به دوستای گلم

خوب اینو آموزش میدم که جنبه حل تمرین نباشه

خوب قالب اصلی برنامه نویسی اسمبلی و که همه بلدیم اینجوریه

.MODEL SMALL

.STACK 64

.DATA

.CODE

MAIN PROC FAR
    
    MOV AX,@DATA
    MOV DS,AX
    MOV ES,AX
;------------------------------------------------------------------


    EXIT:
;-----------------------PAUS-------------------------------------
    MOV AH,00H
    INT 16H
;----------------------------------------------------------------
    
    MOV AX,4C00H
    INT 21H
    
MAIN ENDP

END MAIN


اینم قسمت داده ها

.DATA
;----------------------DATA-------------

MAX_NUM DB 0

MIN_NUM DB 0

STR DB "CONTINUE ? $" 

MAXSTR DB "MAX IS : $" 

ENDL DB 0AH,0DH,'$'

MINSTR DB " MIN IS : $"

S DB "ENTER NUM : $"

;---------------------------------------


در شروع برنامه هم ماکز و هم مین صفر درنزر گرفته میشه

و منتق برنامه اینه که اگه عددی که کاربر وارد میکنه از ماکزیمم بیشتر ماکز بشه اون عدد و بعدش شرط مین هم چک میشه


MOV AH,09H
    LEA DX,S
    INT 21H
     
    
    MOV AH,01H
    INT 21H
    MOV MIN_NUM,AL
    MOV MAX_NUM,AL
    
    MOV AH,06H
    MOV AL,0
    MOV CX,0
    MOV DH,24
    MOV DL,79
    MOV BH,00001001B
    INT 10H
    
    JMP L2
    
    FOR: 
    
    MOV AH,06H
    MOV AL,0
    MOV CX,0
    MOV DH,24
    MOV DL,79
    MOV BH,00001001B
    INT 10H
    
    MOV AH,02H
    MOV BX,0
    MOV DX,0
    INT 10H
    
    MOV AH,09H
    LEA DX,S
    INT 21H
    
     
    MOV AH,01H
    INT 21H
    
    
    SUB AL,30H
    
    CMP MAX_NUM,AL
    JNA L4
    ADD AL,30H
    MOV MAX_NUM,AL
    
    L4:
    CMP AL,30H
    JB L5
    CMP AL,39H
    JA L5     
    CMP MIN_NUM,AL
    JNB L2
    ADD AL,30H
    MOV MIN_NUM,AL
    
    JMP L2
    
    L5:
    SUB AL,30H
    CMP MIN_NUM,AL
    JNB L2
    ADD AL,30H
    MOV MIN_NUM,AL
    
     
    ;---------
    
    
    L2:
    ;SOAL 
    
    ;CLEAR SCREAN
    
    
    MOV AH,06H
    MOV AL,0
    MOV CX,0
    MOV DH,24
    MOV DL,79
    MOV BH,00001001B
    INT 10H
    
    ;------MOV X,Y
    
    MOV AH,02H
    MOV BX,0
    MOV DX,0
    INT 10H 
    
    ;------    
    MOV AH,09H
    LEA DX,STR
    INT 21H
    
    MOV AH,01H
    INT 21H
    CMP AL,'Y'
    
    JE FOR
    
    MOV AH,06H
    MOV AL,0
    MOV CX,0
    MOV DH,24
    MOV DL,79
    MOV BH,00001001B
    INT 10H
    
    MOV AH,09H
    LEA DX,ENDL
    INT 21H
    
    
    MOV AH,09H
    LEA DX,MAXSTR
    INT 21H
    
    MOV AH,02H
    
    MOV DL,MAX_NUM
    INT 21H 
    
    MOV AH,09H
    LEA DX,ENDL
    INT 21H
    
    
    MOV AH,09H
    LEA DX,MINSTR
    INT 21H
    
    MOV AH,02H
    MOV DL,MIN_NUM
    INT 21H

اول برنامه یک عدد گرفته میشه و هم ماکز و هم مین برابر اون عدد میشه

و بعد تا وقتی کاربر در جواب اینکه ادامه میدید بگه Y (حرف بزرگ) که اونم میتونید OR بنویسید عدد گرفتن ادامه پیدا میکنه
و بعدش اگه گفت نه میاد بزرگ و کوچیک و چاپ میکنه
(بازم شرمنده باید برم جایی اونجور که باید توضیح ندادم)
امیدوارم استفاده کنید

----------


## babolsarcity

کسی هست که بدونه چه جوری دو تا عدد 4 بایتی ( 32 بیتی ) رو تو اسمبلی باهم تقسیم کرد؟ 
البته کدش اینه اما منظورم برنامه کاملشه که با پوش و پاپ نوشته میشه


کد:
xor edx, edx
mov edx, 100
mov ebx, 10
div ebx

----------


## Blunch

با عرض سلام و تشكر خدمت دوست گرامي !

من تمامي مراحلي كه فرموده بوديد رو انجام دادم و در هر قسمت كد مربوطه را نوشتم اما
وقتي برنامه را اجرا مي كنم ابتدا "Enter num  " ظاهر مي شود و من يك عدد مثلا 8 را وارد 
مي كنم ، سپس عبارت Continue  را از من سوال مي كند و من عدد 5 را وارد كردم
اما هم ماكزيمم و هم مينيمم را عدد 8 اعلام مي كند ، ميشه لطف كنيد علت آن را بيان كنيد و يا لطف كنيد كد كامل برنامه را بنويسيد . ممنون ميشم اگه اين لطف را كنيد !!

با تشكر

----------


## $ M 3 H R D A D $

> با عرض سلام و تشکر خدمت دوست گرامی !
> 
> من تمامی مراحلی که فرموده بودید رو انجام دادم و در هر قسمت کد مربوطه را نوشتم اما
> وقتی برنامه را اجرا می کنم ابتدا "Enter num  " ظاهر می شود و من یک عدد مثلا 8 را وارد 
> می کنم ، سپس عبارت Continue  را از من سوال می کند و من عدد 5 را وارد کردم
> اما هم ماکزیمم و هم مینیمم را عدد 8 اعلام می کند ، میشه لطف کنید علت آن را بیان کنید و یا لطف کنید کد کامل برنامه را بنویسید . ممنون میشم اگه این لطف را کنید !!
> 
> با تشکر


عزیز continue و هرجا تو ببینی منظورش چیه؟
میگه ادامه میدید یا نه؟
یا Y)بزرگ) یا N یا هرچیز غیر از Y

اگه Y بزنی بازم عدد میگیره

تا وقتی غیر از اون بزنی

مثلا بزن

اول 2
بعد 5
بعد 8
بعد که سوال کرد بزن N

----------


## $ M 3 H R D A D $

> کسی هست که بدونه چه جوری دو تا عدد 4 بایتی ( 32 بیتی ) رو تو اسمبلی باهم تقسیم کرد؟ 
> البته کدش اینه اما منظورم برنامه کاملشه که با پوش و پاپ نوشته میشه
> 
> 
> کد:
> xor edx, edx
> mov edx, 100
> mov ebx, 10
> div ebx


عزیز من با 32 بیتی کار نکردم هنوز اما ایشالا یاد میگیرم
یک دوستی برام یک سری مقالات فرستاد که خودم هنوز نخوندم اما باید تو این زمینه مفید باشه

ایمیلتو بده برات forward کنم

----------


## babolsarcity

> عزیز من با 32 بیتی کار نکردم هنوز اما ایشالا یاد میگیرم
> یک دوستی برام یک سری مقالات فرستاد که خودم هنوز نخوندم اما باید تو این زمینه مفید باشه
> 
> ایمیلتو بده برات forward کنم


 دمت گرم
pouya_20666@yahoo.com
فقط Subject رو بنویس مقاله تا بدونم کدومه  :تشویق:

----------


## Blunch

سلام دوست گرامي
اگه ميشه لطف كنيد برنامه اي كه بين چند عدد متمايز، ماكزيمم و مينيمم آنها را در خروجي بنويسد را بذاريد

ممنون ميشم

----------


## rahagh

کی برنامه محاسبه مساحت مستطیل رو داره؟ :افسرده:

----------


## babolsarcity

> کی برنامه محاسبه مساحت مستطیل رو داره؟


 این که خیلی آسونه
برنامه بنویس 2 تا عدد بگیره ، اوای طول و دومی عرض مستطیل
هر کدومو بریز تو ثبات بعد هم mul کن

mov ah,01
int 21h
mov N1,al
mov ah,01
int 21h
mov N2,al
mul bl,N1
mul bl,N2

قبلش N1 , N2 , ... رو تعریف میکنی بقیشم که حله

----------


## Delphi Coder

> این که خیلی آسونه
> برنامه بنویس 2 تا عدد بگیره ، اوای طول و دومی عرض مستطیل
> هر کدومو بریز تو ثبات بعد هم mul کن
> 
> mov ah,01
> int 21h
> mov N1,al
> mov ah,01
> int 21h
> ...


این اشتباهه شما در حقیقت کد اسکی کلیدهایی که فشار داده شده رو سعی کردید به هم ضرب کنید. و دستور mul هم فقط یه پارامتر داره.

----------


## babolsarcity

> این اشتباهه شما در حقیقت کد اسکی کلیدهایی که فشار داده شده رو سعی کردید به هم ضرب کنید. و دستور mul هم فقط یه پارامتر داره.


خب اگه بخوایم از روی کد Ascii جمع یا ضرب کنیم چه مشکلی داره 

 می خوام یه برنامه بنویسم که تو خط اول 2 عملوند و یک عملگر دریافت کنه و تشخیص بده عملگر کدوم یک از + - * / است
برای اینکه بفهمه عملگر کدوم هست نباید از کد اسکی ورودی ها استفاده بشه؟
راهنمایی کامل کنید لطفا

----------


## Delphi Coder

موضوع بی ربط هست با این تاپیک اگر خواستید تاپیک جدید بزنید در خدمتم.
من فکر میکنم مدیران نسبت به بخش اسمبلی یه خورده کم لطف هستن توی بخشهای دیگه وضعیت خیلی بهتره و سوالات بی ربط به چند ساعت نمیکشه که پاک میشن اما اینجا این پست:



> سلام دوست گرامي
> اگه ميشه لطف كنيد برنامه اي كه بين چند عدد متمايز، ماكزيمم و مينيمم آنها  را در خروجي بنويسد را بذاريد
> 
> ممنون ميشم


الان نزدیک سه ماه هست که اینجاس حالا چه ربطی اصلا به بحث داره الله اعلم.
بعدشم اومدن یه سوال دیگه تو ادامه همین تاپیک پرسیدن و ....

----------


## hadi2najafi

اگه  بلدی یه برنامه بنویس که سری اعداد فیبوناچی تا 20 رقم اول رو در یک آرایه بریزه .بعد به صورت باینری چاپشون کنه

----------


## parasto0

bebakhshid man daneshjoe computer hastam va shadidan ba darse zaban mashin moshkel peida kardam age mishe barname miangin 20 adade be forme binery va namayeshe jamo miangineshono bezarid
mamnoon misham

----------


## sabagch

خیلی جالب بودن. ممنون

----------


## sami990

با سلام 
من سه تا برنامه میخوام
1. نمایشتمامی کدهای اسکی روی صفحه نمایش 
2. برنامه جدول ضرب
3. مثلث خیام پاسکال
ممنون میشم اگر کمکم کنید.

----------


## parisahp

میشه این برنامه رو برام بنویسین و برام بفرستین؟ 
با استفاده از برنامه نویسی زبان ماشین 6 عدد 16 بیتی را با هم جمع کنید  (که حاصل جمع آن از 16 بیت بیشتر نشود ) و اگر حاصل آن از 7FFF بیشتر شد در  حافظه به نام negative ذخیره شود و در غیر این صورت در حافظه ای به نام  posetive ذخیره میشود.

----------


## siona barnamenevis

سلام 
کسی میتونه تو نوشتن یه اسکرین سیور ساده به زبان اسمبلی به من کمک کنه؟؟؟؟؟؟؟؟
خیلی لازم دارم ، ا از اینترنت چند تا گرفتم ولی نمی دونم کدوم بهتره ......
ممنوم میشم

----------


## golchehre

سلام دوست عزیز 
خواهش میکنم اگه امکان داره یه برنامه اسکرین سیور یا دفترچه تلفن بزارید خیلی احتیاج دارم ممنوووون :قلب:

----------


## salmanbnd

سلام دوستان
کدهایی که شما از اونها استفاده می کنید خیلی تفاوت داره با کدهایی که به ما یاد دادن!
مثلا جمع دو عددی که خودم نوشتم تو اسمبلی این میشه :



> .386
> .MODEL FLAT
> ExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORD
> INCLUDE io.h
> .data
> prompt1 BYTE    "Enter n1:  ",0
> prompt2 BYTE    "Enter n2:  ",0
> temp DWORD   ?
> string  BYTE    11 DUP (?)
> ...


تفاوت در چیه؟ :متفکر:

----------

