# برنامه نویسی سطح پایین > برنامه نویسی اسمبلی خانواده x86 >  بدست آوردن سن از طریق تاریخ

## soonami

دوستان یه برنامه هست که کاربرتاریخ تولد و فامیل طرف میگیره بعد وسط صفحه نمایش نشون میده 
__________________________________________________  ________________________

خوب من  اسم و فامیل میگیرم با تاریخ  بعد وسط صفحه نشون میدم 
__________________________________________________  ____

مشکل اینجا ست که چطوری  سن طرف با استفاده از تاریخ نشون بدم 

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

__________________________________________________  ___________

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

----------


## unknown.unforgiven

سلام
اول سالی که از تاریخ سیستم گرفتی رو از سالی که کاربر وارد کرده کم کن و تو یه متغیر (مثلاً سن) ذخیره کن، بعدش ماهی که از تاریخ سیستم گرفته رو با ماهی که کاربر وارد کرده مقایسه کن. سه حالت پیش میاد:
1. ماهی که از تاریخ سیستم گرفته کمتر از ماهیه که کاربر وارد کرده. در این صورت از سن یه واحد کم کن (تمام)
2. ماهی که از تاریخ سیستم گرفته با ماهی که کاربر وارد کرده برابرن. در این صورت 2 حالت پیش میاد:
الف. روزی که از تاریخ سیستم بدست اومده کمتر از روزی باشه که کاربر وارد کرده. در این صورت از سن یه واحد کم کن (تمام)
ب. روزی که از تاریخ سیستم بدست اومده بزرگتر یا مساوی روزی باشه که کاربر وارد کرده. در این صورت سنی که بدست آوردی دست نخورده باقی میمونه
3. ماهی که از تاریخ سیستم گرفته بزرگتر از ماهیه که کاربر وارد کرده. در این صورت سن بدست اومده دست نخورده باقی میمونه
با این تفاصیر فقط باید شرط های 1 و 2.الف رو چک بکنی

----------


## soonami

دوست عزیز گیج شدم  :متعجب: 

من گفتم بلد نیستم اینطوری که شما  گفتید ------------!!!!!!!!

طرف ماه وارد نمی کند  خدمتتون گفتم وارد میکند 1364 به طور مثال

حال چطوری نشان بده سن 

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

----------


## unknown.unforgiven

واسه گرفتن تاریخ سیستم از INT 21h/2Ah استفاده میکنی دیگه؟ عددی رو که کاربر وارد میکنه (مثلاً همون 1364) بریز تو ax، بعد cx رو منهای ax بکن (sub cx,ax)

----------


## soonami

همین > ؟؟؟؟ بله 

من می ریختم تو ah حالا باید بجاش بریزم تو ax و سپس طبف رمایش شما کم کنم ؟ 


```
mov ah,2ah
int 21h
 
 
 
 
```

----------


## unknown.unforgiven

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

----------


## soonami

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

همونطوری که من گفتم باید انجام بدم ؟

----------


## unknown.unforgiven

باید براش شرط بذاری که به یه فرم وارد بکنه، نمیتونی کاری بکنی که هم میلادی هم شمسی جواب بده مگر اینکه قبلش از کاربر بپرسی و برنامه رو متناسب با ورودی اجرا بکنی.
mov ah,2ah
int 21h
mov ax,1985 ;ya har tarikhe miladi ke karbar vared karde
sub cx,ax

----------


## soonami

ویرایش شد ....................................

----------


## unknown.unforgiven

بیخیال Ax! برنامه ای که بالا گذاشتم واسه تاریخ میلادیه



> mov ah,2ah
> int 21h


این واسه گرفتن تاریخ سیستمه، با این کاری نداشته باش

----------


## soonami

دوست عزیز اینو بلدم 

طرف میزنه 1986  بعد تاریخ سیستم کم میشه میشه سن طرف

----------


## unknown.unforgiven

> دوست عزیز اینو بلدم 
> 
> طرف میزنه 1986  بعد تاریخ سیستم کم میشه میشه سن طرف


خب الآن مشکل چیه؟ :متفکر:  کجای برنامه گیر کردی؟

----------


## soonami

برنامه کار نمی کنه با emu مینویسم 

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

----------


## unknown.unforgiven

برنامه رو بذار اینجا. داده هایی رو که وارد کردی هم بگو

----------


## soonami

دوست عزیز پیغام خصوصی دادم

----------

