تاریخ: چهارشنبه 12 خرداد 1389 - 18:57
|
Gytyonline
مديريت كل انجمنها
پست: 899
عضو شده در: 14 شهریور 1384
محل سکونت: tehran
امتياز: 8184
|
عنوان: پاسخ به «برنامه های اسمبلی 8086» |
|
|
سلام
اولین برنامه این تاپیک .
نام برنامه : چاپ مغلوب عدد صحیح علامت دار
زبان برنامه : اسمبلی
توضیحات برنامه : توسط این برنامه شما می توانید از کاربر یک عدد 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
امتياز: 8184
|
عنوان: برنامه ب.م.م و ک.م.م به زبان اسمبلی |
|
|
سلام به همه دوستان
امروز می خوام یکی دیگه از برنامه هایی رو که به زبان اسمبلی نوشتم باتون با سورس بزارم.
مشخصات برنامه :
نام برنامه : بدست آوردن ب.م.م و ک.م.م
زبان برنامه : اسمبلی
سورس برنامه :
کد: |
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
امتياز: 8184
|
عنوان: برنامه محاسبه میانگین |
|
|
سلام امروز می خوام یکی دیگه از برنامه هایی رو که به زبان اسمبلی نوشتم براتون با سورسش بزارم برنامه محاسبه میانگین و ماکزیمم و مینیمم 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 عدد را برای تعیین ماکزیمم و مینیمم با یکدیگر مقایسه می کنیم .
اگه سوالی داشتید توی همین تاپیک مطرح کنید . |
|
[ وضعيت كاربر: ]
|
تشکرها از این پست:
|
تاریخ: یکشنبه 16 خرداد 1389 - 18:01
|
Gytyonline
مديريت كل انجمنها
پست: 899
عضو شده در: 14 شهریور 1384
محل سکونت: tehran
امتياز: 8184
|
عنوان: محاسبه تعداد ارقام یک عدد |
|
|
سلام
برنامه ای که امروز براتون قرار می دهم کارش این می باشد که عددی رو که بهش می دهیم تعداد ارقام ان رو محاسبه می کنه و داخل 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 رقمی ( دلخواه ) را بدست بیاوریم .
اگر سوالی در مورد سورس برنامه داشتید در همین تاپیک مطرح کنید.
موفق باشید. |
|
[ وضعيت كاربر: ]
|
تشکرها از این پست:
|
تاریخ: دوشنبه 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 را در یک ارایه ذخیره کند ؟ |
|
[ وضعيت كاربر: ]
|
تشکرها از این پست:
|
|
|
رفتن به صفحه 1, 2 بعدی
صفحه 1 از 2
تمام زمانها بر حسب GMT + 3.5 Hours میباشند
|
|
شما نمی توانید در این بخش موضوع جدید پست کنید شما نمی توانید در این بخش به موضوعها پاسخ دهید شما نمی توانید موضوع های خودتان را در این بخش ویرایش کنید شما نمی توانید موضوع های خودتان را در این بخش حذف کنید شما نمی توانید در این بخش رای دهید
|
|
|