یك شنبه 3 بهمن 1395 


  Aftabgardan Cultural Center
  Aftabgardan Forums



...Welcome
پیام‌های خصوصی

كنترل پنل                جستجو                 پرسشهای متداول              .:: آخرین پست‌های انجمن ::.              لیست اعضا              مدیران سایت               درجات          ورود
فهرست انجمن‌ها -> عمومي برنامه‌نويسي -> انجمن سورس‌
پاسخ دادن به این موضوع رفتن به صفحه 1, 2  بعدی
برنامه های اسمبلی 8086
پست تاریخ: سه‌شنبه 11 خرداد 1389 - 17:37    
Gytyonline
مديريت كل انجمن‌ها
مديريت كل انجمن‌ها


پست: 899
عضو شده در: 14 شهریور 1384
محل سکونت: tehran
iran.gif


امتياز: 8184

عنوان: برنامه های اسمبلی 8086 خواندن مشخصات فردی ارسال پیام شخصی ارسال email

سلام
امروز تصمیم گرفتم که در این تاپیک سورس برنامه هایی به زبان اسمبلی رو که خودم نوشته ام و یا اینکه از سایت های دیگر پیدا می کنم و به نظرم به درد کاربران سایت می خوره همراه با توضیحاتی در مورد اون برنامه و سورس آن در این تاپیک قرار بدهم تا مورد استفاده شما دوستان عزیز قرار بگیره امید وارم شما هم من رو در این راه یاری کنید و اگر برنامه ای نوشته اید یا اینکه به نظرتون بدرد سایت می خوره برای من ارسال کنید تا با اسم خودتون قرار بدهم یا اینکه خودتان همراه توضیحاتی در مورد برنامه و همچنین سورس آن در این تاپیک ارسال کنید
با تشکر
امین ;

[ وضعيت كاربر: ]

تشکر کردن از پست  پاسخگویی به این موضوع بهمراه نقل قول 
تشکرها از این پست: Hamid (سه‌شنبه 11 خرداد 1389 - 19:24) youse (شنبه 4 آبان 1392 - 13:18)

پست تاریخ: چهار‌شنبه 12 خرداد 1389 - 18:57    
Gytyonline
مديريت كل انجمن‌ها
مديريت كل انجمن‌ها


پست: 899
عضو شده در: 14 شهریور 1384
محل سکونت: tehran
iran.gif


امتياز: 8184

عنوان: پاسخ به «برنامه های اسمبلی 8086» خواندن مشخصات فردی ارسال پیام شخصی ارسال email

سلام
اولین برنامه این تاپیک .

نام برنامه : چاپ مغلوب عدد صحیح علامت دار
زبان برنامه : اسمبلی
توضیحات برنامه : توسط این برنامه شما می توانید از کاربر یک عدد n رقمی صحیح علامت دار دریافت نمایید و مغلوب آن را چاپ نمایید به طور مثال :

عدد دریافتی : 125- خروجی برنامه : 521-


سورس برنامه :
کد:
sseg segment
    dw 50 dup(?)
    sseg ends

dseg segment
    s dw ?
    dseg ends

cseg segment
    assume cs:cseg,ss:sseg,ds:dseg
   
    getch proc
        mov ah,0
        int 16h
        ret
        getch endp   
   
    putch proc
        push bx
        mov bh,0
        mov bl,0fh
        mov ah,0eh
        int 10h
        pop bx
        ret
        putch endp
   
start:mov cx,0
    call getch
   
    cmp al,'+'
    jne manfi
    mov s,0
    jmp get
   
manfi:mov s,1
     
get:call putch
lp1:call getch
    cmp al,13
    je chap
    push ax
    inc cx
    call putch
    jmp lp1
   
   
chap:mov al,' '
     call putch
     mov dx,s
     cmp dx,0
     jne man
     mov al,'+'
     call putch
     jmp lp2
 man:mov al,'-'   
     call putch
     
 lp2:pop ax
     call putch
     dec cx
     jz end     
     jmp lp2
     
 end:mov ah,4ch
     int 21h
     cseg ends
end start


lبا توجه به مقدار متغییر s متوجه می شویم که عددی که وارد شده است منفی است یا مثبت که 0 نشانگر عدد مثبت و 1 عدد منفی می باشد.
که ابتدا ما تک تک رقم ها را دریافت کرده و آنها را داخل یک پشته میریزیم و موچاپ تک تک رقم ها را از پشته خارج کرده و به ترتیب چاپ می کنیم برنامه بسیار ساده ای هستش .
اگر جایی رو سوال یا اشکال داشتید در همین تاپیک مطرح نمایید.
امین;

[ وضعيت كاربر: ]

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

پست تاریخ: پنج‌شنبه 13 خرداد 1389 - 11:40    
Gytyonline
مديريت كل انجمن‌ها
مديريت كل انجمن‌ها


پست: 899
عضو شده در: 14 شهریور 1384
محل سکونت: tehran
iran.gif


امتياز: 8184

عنوان: برنامه ب.م.م و ک.م.م به زبان اسمبلی خواندن مشخصات فردی ارسال پیام شخصی ارسال email

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

مشخصات برنامه :
نام برنامه : بدست آوردن ب.م.م و ک.م.م
زبان برنامه : اسمبلی

سورس برنامه :
کد:

seg1 segment
    a dw 20
    b dw 15
    zarb dw ?
    bmm dw ?
    kmm dw ?
    seg1 ends
seg2 segment
    assume cs:seg2,dc:seg1
    L:mov ax,seg1
    mov ds,ax
    mov ax,a
    mov bx,b
    mul bx
    mov zarb,ax
   
    f2:mov dx,0
    mov ax,a
    mov bx,b   
    div bx         
    cmp dx,0
    je f1

    mov a,bx
    mov b,dx
    jmp f2
       
    f1:mov bmm,bx   
    mov ax,zarb
    div bmm
    mov kmm,ax

    mov ah,4ch
    int 21h
    seg2 ends
end L


این برنامه ب.م.م و ک.م.م دو عدد 15 و 20 رو که توی متغییر های a و b ذخیره شده اند بدست می اورد ( که مقدار این دو متغییر رو شما می توانید در اول برنامه تغییر دهید)
شیوه کار این بر نامه به این صورت هستش که اول دو عدد را در یکدیگر ضرب کرده و نتیجه رو در متغییر zarb ذخیره میکنه و سپس دو عدد اولیه را بر هم تقسیم متوالی می کنه تا باقی مانده 0 شود در این که در این صورت اخرین خارج قسمت ما که داخل شط قرار دارد ب.م.م می باشد و ما آن را داخل متغییر bmm قرار می دهیم و حال از تقسیم حاصل ضرب دو عدد اولیه ( که در متغییر zarb قرار دارند ) بر ب.م.م ، ک.م.م اعداد ما حاصل می شود که ما آن را داخل متغییر kmm ذخیره می کنیم .
در انتها ب.م.م و ک.م.م به ترتیب داخل متغیر های bmm و kmm در برنامه ذخیره شده اند.
خوب این برنامه هم تموم شدش اگه سوال یا مشکلی داشتید در همین تاپیک مطرح کنید .
امین ;

[ وضعيت كاربر: ]

تشکر کردن از پست  پاسخگویی به این موضوع بهمراه نقل قول 
تشکرها از این پست: ebrahimjavan (دوشنبه 6 خرداد 1392 - 22:47)

پست تاریخ: جمعه 14 خرداد 1389 - 18:22    
Gytyonline
مديريت كل انجمن‌ها
مديريت كل انجمن‌ها


پست: 899
عضو شده در: 14 شهریور 1384
محل سکونت: tehran
iran.gif


امتياز: 8184

عنوان: برنامه محاسبه میانگین خواندن مشخصات فردی ارسال پیام شخصی ارسال email

سلام امروز می خوام یکی دیگه از برنامه هایی رو که به زبان اسمبلی نوشتم براتون با سورسش بزارم برنامه محاسبه میانگین و ماکزیمم و مینیمم 3 عدد.

نام برنامه : محاسبه میانگین و ماکزیمم و مینیمم
زبان برنامه : اسمبلی


سورس برنامه :
کد:

seg1 segment
    a dw 3
    b dw 5
    c dw 4
    min dw ?
    max dw ?
    sum dw 0
    avg dw 0
    seg1 ends
seg2 segment
    Assume CS:seg2,DS:seg1
    L:mov ax,seg1       
    mov ds,ax
   
    ;shoroe jam shodan adad ba ham
   
    mov ax,a
    add ax,b
    add ax,c
   
    ; be dast avardane miyangin
   
    mov sum,ax 
    mov bx,3
    div bx
    mov avg,ax
   
    ;shoro mogayese barae taine min va max
   
    mov ax,a
    cmp ax,b
    ja f1
    mov ax,b
    mov max,ax
    mov cx,a
    mov min,cx
    cmp ax,c
    ja f3
    mov bx,c
    mov max,bx
    mov dx,sum
    mov ax,avg
    jmp end
   
    f1:mov max,ax
    mov bx,b
    mov min,bx
    mov cx,sum
    mov dx,avg
    cmp ax,c
    ja f2
    mov cx,c
    mov max,cx
    mov ax,sum
    mov dx,avg
    jmp end
   
    f2:cmp c,bx
    ja end
    mov cx,c
    mov min,cx
    mov bx,avg
    mov dx,sum
    jmp end
   
    f3:mov dx,avg
    mov bx,c
    cmp bx,min
    mov bx,sum
    ja end
    mov min,bx
    mov cx,sum
    mov dx,avg
    jmp end   
   
    end:mov ah,4ch
    int 21h
    seg2 ends
end L

در این برنامه متغییر های a و b و c 3متغییری هستند که اعدادی را که ذخیره کردن میانگین و ماکزیمم و مینیمم آنها محاسبه می شوند که مقدار آنها را می توان به دلخواه هر عددی انتخاب کرد .
که در این برنامه ابتدا 3 عدد را با هم جمع می کنیم و داخل متغییر sum ذخیره می کنیم و سپس تقسیم بر 3 کرده و میانگین این اعداد را داخل avg قرار می دهیم و بعد 3 عدد را برای تعیین ماکزیمم و مینیمم با یکدیگر مقایسه می کنیم .
اگه سوالی داشتید توی همین تاپیک مطرح کنید Embarassed .

[ وضعيت كاربر: ]

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

پست تاریخ: شنبه 15 خرداد 1389 - 20:10    
Gytyonline
مديريت كل انجمن‌ها
مديريت كل انجمن‌ها


پست: 899
عضو شده در: 14 شهریور 1384
محل سکونت: tehran
iran.gif


امتياز: 8184

عنوان: برنامه چاپ کاراکتر خواندن مشخصات فردی ارسال پیام شخصی ارسال email

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

سورس برنامه :
کد:

chap segment
    assume cs:chap
   
    start:mov ah,0
    int 16h
    cmp ah,1
    je exit
 
    mov bh,0
    mov bl,25h
    mov cx,2000
    mov ah,0ah
    int 10h
    jmp start
   
    exit:mov ah,4ch
    int 21h
chap ends


در این برنامه ما با استفاده از وقفه 16h و تابع شماره 0 آن یک کاراکتر از کاربر در یافت کرده و کد اسکی ان را داخل al قرار می دهیم و سپس این کاراکتر رو با کد اسکی 1 که برای کلید enter هستش مقایسه می کنیم اگه برابر بودش از برناکمه خارج می شیم در غیر این صورت کل صفحه را با این کاراکتر پر می کنیم یعنی کاراکتر را در کل صفحه چاپ می کنیم .
یکسری متغییر های خواس در این برنامه :
1- bh : که شماره صفحه ای را که قرار کاراکتر در ان چاپ شود مشخص می کنه که می توانداز اعداد 0 ، 1 ،2 ، 3 و ... 7 را شامل بشه
2- bl : کد رنکی را که قرار کاراکتر با ان رنگ چاپ بشود مشخص می کند
3- cx : تعداد دفعاتی که قرار کاراکتر چاپ بشود را مشخص می کند ( در اینجا طبق پیش فرض فرض شده است که هر صفحه شاما 2000 کاراکتر می باشد )
و در اخر سر هم با وقفه شماره 10h و تابع شماره 0ah ان شروع به چاپ کاراکتر در صفحه می کنیم.
این برنامه هم تموم شدش به همین سادگی Wink Embarassed

[ وضعيت كاربر: ]

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

پست تاریخ: یکشنبه 16 خرداد 1389 - 18:01    
Gytyonline
مديريت كل انجمن‌ها
مديريت كل انجمن‌ها


پست: 899
عضو شده در: 14 شهریور 1384
محل سکونت: tehran
iran.gif


امتياز: 8184

عنوان: محاسبه تعداد ارقام یک عدد خواندن مشخصات فردی ارسال پیام شخصی ارسال email

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

مشخصات برنامه :
نام برنامه : محاسبه تعداد ارقام یک عدد n رقمی
زبان برنامه : اسمبلی

سورس برنامه :
کد:

seg1 segment
    n dw 65535
    x dw ?
    seg1 ends
seg2 segment
    assume CS:seg2,DS:seg1
    L:mov ax,seg1
    mov ds,ax
    mov CX,0
    mov BX,10
    mov ax,n
    Q:mov dx,0
    DIV BX
    inc CX
    CMP ax,0
    JNE Q
    mov x,cx
    mov ah,4ch
    int 21h
    seg2 ends
end L


هر عددی را که می خواهیم می توانیم داخل متغییر n که در اول برنامه تعریف کردیم قرار دهیم کار این برنامه به این صورت هستش که عددمون رو تقسیم بر 10 می کنیم و تا زمانی که خارج قسمتمون برابر 0 نشده این کار رو تکرار می کنیم .
متغییر های برنامه :
1- cx : که شمارنده تعداد ارقام عدد ما می باشد و در اول برنامه مقدار آن را برابر 0 قرار می دهیم
2- bx : مقدار این متغییر را برابر 10 قرار می دهیم تا عددمان را بر آن تقسیم کنیم
ابتدا cx را برابر 0 و bx را برابر 10 قرار می دهیم و عددمان را نیز داخل شط و حال ax را تا زمانی که خارج قسمتمان برابر 0 نشده تقسیم بر 10 می کنیم و وقتی برابر 0 شد قدار cx را در x قرار می دهیم که نشان دهنده تعداد ارقام عدد ما می باشد.

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

[ وضعيت كاربر: ]

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

پست تاریخ: پنج‌شنبه 17 آذر 1390 - 12:45    
bahmanpdf
تازه به جمع ما پيوسته
تازه به جمع ما پيوسته


پست: 1
عضو شده در: 17 آذر 1390



امتياز: 9

عنوان: پاسخ به «برنامه های اسمبلی 8086» خواندن مشخصات فردی ارسال پیام شخصی

Gytyonline,
سلام
استاد یه پروژه برنامه نویسی می خواد
حرف a از گوشه ی صفحه شروع به چاپ شدن بکنه به صورت اریب،
وقتی به پایین صفحه رسید مسیرش رو ، رو به بالا عوض کنه و همینجور ادامه پیدا کنه
تا کاربر یه کلید فشار بده (شبیه اسکرین سیور هایی که این کارو میکنن)
برنامه رو تا حدودی نوشتم
موضوع اینجاست که شماره ی سطر و ستون رو تو چه ریجیستری بریزم که تغییری نکنه
تا وقتی که حلقه یک دور زد شماره سطر و ستون رو اضافه کنم که بصورت اریب حرف A روچاپ کنه
میتونید راهنمایی کنید؟
با تشکر

[ وضعيت كاربر: ]

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

پست تاریخ: سه‌شنبه 5 دی 1391 - 20:19    
mmiinnoo
تازه به جمع ما پيوسته
تازه به جمع ما پيوسته


پست: 1
عضو شده در: 5 دی 1391



امتياز: 9

عنوان: پاسخ به «برنامه های اسمبلی 8086» خواندن مشخصات فردی ارسال پیام شخصی

سلام
بابت برنامه هايي كه قرار دادين تشكر مي كنم . من حتما براي امتحان ترم اونا رو مي خونم . يه خواهشي دارم
اگه ميشه سورس برنامه اي كه از كاربر 10 عدد را دريافت كند و سپس ماكسيمم آنها را پيدا كند را هم قرار دهيد. من خودم برنامه را نوشتم ولي هميشه آخرين عدد دريافتي را چاپ مي كند

[ وضعيت كاربر: ]

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

پست تاریخ: دوشنبه 6 خرداد 1392 - 22:53    
ebrahimjavan
تازه به جمع ما پيوسته
تازه به جمع ما پيوسته


پست: 2
عضو شده در: 6 خرداد 1392



امتياز: 18

عنوان: Re: برنامه ب.م.م و ک.م.م به زبان اسمبلی خواندن مشخصات فردی ارسال پیام شخصی

Gytyonline نوشته است:
سلام به همه دوستان
امروز می خوام یکی دیگه از برنامه هایی رو که به زبان اسمبلی نوشتم باتون با سورس بزارم.

مشخصات برنامه :
نام برنامه : بدست آوردن ب.م.م و ک.م.م
زبان برنامه : اسمبلی

سورس برنامه :
کد:

seg1 segment
    a dw 20
    b dw 15
    zarb dw ?
    bmm dw ?
    kmm dw ?
    seg1 ends
seg2 segment
    assume cs:seg2,dc:seg1
    L:mov ax,seg1
    mov ds,ax
    mov ax,a
    mov bx,b
    mul bx
    mov zarb,ax
   
    f2:mov dx,0
    mov ax,a
    mov bx,b   
    div bx         
    cmp dx,0
    je f1

    mov a,bx
    mov b,dx
    jmp f2
       
    f1:mov bmm,bx   
    mov ax,zarb
    div bmm
    mov kmm,ax

    mov ah,4ch
    int 21h
    seg2 ends
end L


این برنامه ب.م.م و ک.م.م دو عدد 15 و 20 رو که توی متغییر های a و b ذخیره شده اند بدست می اورد ( که مقدار این دو متغییر رو شما می توانید در اول برنامه تغییر دهید)
شیوه کار این بر نامه به این صورت هستش که اول دو عدد را در یکدیگر ضرب کرده و نتیجه رو در متغییر zarb ذخیره میکنه و سپس دو عدد اولیه را بر هم تقسیم متوالی می کنه تا باقی مانده 0 شود در این که در این صورت اخرین خارج قسمت ما که داخل شط قرار دارد ب.م.م می باشد و ما آن را داخل متغییر bmm قرار می دهیم و حال از تقسیم حاصل ضرب دو عدد اولیه ( که در متغییر zarb قرار دارند ) بر ب.م.م ، ک.م.م اعداد ما حاصل می شود که ما آن را داخل متغییر kmm ذخیره می کنیم .
در انتها ب.م.م و ک.م.م به ترتیب داخل متغیر های bmm و kmm در برنامه ذخیره شده اند.
خوب این برنامه هم تموم شدش اگه سوال یا مشکلی داشتید در همین تاپیک مطرح کنید .
امین ;


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

برنامه ای بنویسید که ب م م دو عدد x و y از نوع word را در یک ارایه ذخیره کند ؟

[ وضعيت كاربر: ]

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

پست تاریخ: دوشنبه 6 خرداد 1392 - 22:54    
ebrahimjavan
تازه به جمع ما پيوسته
تازه به جمع ما پيوسته


پست: 2
عضو شده در: 6 خرداد 1392



امتياز: 18

عنوان: پاسخ به «برنامه های اسمبلی 8086» خواندن مشخصات فردی ارسال پیام شخصی

Gytyonline,Gytyonline,


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

برنامه ای بنویسید که ب م م دو عدد x و y از نوع word را در یک ارایه ذخیره کند ؟

[ وضعيت كاربر: ]

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


نمایش پستها:                 مشاهده موضوع قبلی :: مشاهده موضوع بعدی  
پاسخ دادن به این موضوع
 
رفتن به صفحه 1, 2  بعدی
صفحه 1 از 2

تمام زمانها بر حسب GMT + 3.5 Hours می‌باشند
 Related Topics 


 information 

 

پرش به:  
شما نمی توانید در این بخش موضوع جدید پست کنید
شما نمی توانید در این بخش به موضوعها پاسخ دهید
شما نمی توانید موضوع های خودتان را در این بخش ویرایش کنید
شما نمی توانید موضوع های خودتان را در این بخش حذف کنید
شما نمی توانید در این بخش رای دهید


Copyright 2004-2016. All rights reserved.
© by Aftabgardan Cultural Center : Aftab.cc