ورود

View Full Version : سوال: جایگذاری تاریخ ؟؟؟؟؟؟



lolojoon
پنج شنبه 10 بهمن 1387, 09:53 صبح
با سلام به همه دوستان برنامه نویس خودم

من یک مشکلی در یک برنامه دارم که نمی دونم باید چکارش کنم
باید یه برنامه بنویسم که از ورودی یک عدد بین 0 تا 365 دریافت کنه و بعد محاسبه در خروجی روز و ماه مربوط به سال 2009 رو چاپ کنه ( مثلا 01/01/2009 ) که سال 2009 ثابت و تغییر نمی کنه و فقط عدد ورودی باید در قسمت ماه و روز قرار بگیره

کد برنامه رو نوشتم ولی چند تا اشکال ریز داره که نتونستم برطرفش کنم
ممنون می شم که دوستان کمک کنن .
اشکالات برنامه :
1 - در روی Emulator 386 کار نمی کنه که فکر کنم چون دستور .386 رو نداره این ایراد رو پیدا کرده .
2 – در محاسبه و جایگذاری درست عمل نمی کنه . ( مثلا عدد 75 که وارد می کنید در ماه عدد 2 را وارد می کنه و در روز عدد 25 رو وارد می کنه )

کد :



;------------------- Define Prog------------------
org 1000
;//--------------------------------------------------
.model small
.stack 64
;-------------------- Data Segment--------------
.data
input_Entry dw 0;
str_Conv_int_array db 3 dup(?); { memory For Characters }
year db 0;
month db 0;
days db 0;
len dw 0;
int_Str dw 0;

;------------------- Code Segment----------------
.code
call input ; { Procedure input}
call convert_Str_To_Int ; { Procedure convert_Str_To_Int}
call Call_Replace_date ; { Procedure Call_Replace_date }
call Display_On_Monitor ; { Procedure Display_On_Monitor }
mov ah,10
int 16h

;---------------Input Procedure--------------------
input proc ;{ Entry Data From KeyBoard }
mov cx,0 ;{Counter = 0 }
lea si,str_Conv_int_array
lb1:
mov ah,10
int 16h
cmp al,30
jb external_0 ;{Jump external_0 }
cmp al,39
ja external_0 ;{Jump external_0 }
inc cx ;{ CX ++ }
mov ah,0eh
int 10h
mov [si],al
cmp cx,3
jne lb1 ;{Jump Lable 1 }
external_0:
mov len,cx
ret
input endp ;{End Procedure}
;--------------convert_Str_To_Int Procedure---------------------------
convert_Str_To_Int proc
mov dl,10
mov ax,0
mov bl,1
lea si,str_Conv_int_array
mov cx,len
add si,2
lb2:
mov al,[si]
and al,00fh
mul bl
add input_Entry,ax
mov al,bl
mul dl
dec si
loop lb2 ;{Jump Lable 2 }
ret
convert_Str_To_Int endp ;{End Procedure}
;-----------------Call_Replace_date procedure---------------------------
Call_Replace_date proc
mov dx,0
mov ax,input_Entry
mov bx,365 ; { Calculate year }
div bx
mov year,al
mov ax,dx
mov bx,0
mov bl,30 ; { Calculate Month}
div bl
mov month,ah
mov days,al
ret
Call_Replace_date endp ;{End Procedure}
;--------------Display_On_Monitor Procedure--------------------------
Display_On_Monitor proc
;------ { Display 20}------------------
mov al,'2'
mov ah,0eh
int 10h
mov al,'0'
int 10h;
;-------- Calculate And Display Year ---------
mov ah,0
mov al,9
add al,year
cmp al,10
jb lb3; ; { Jump year }
mov bl,10
div bl
or al,030h
push ax
mov ah,0eh
int 10h
pop ax
mov al,ah
lb3: ;{ Calculate And Display Year}
or al,030h
mov ah,0eh
int 10h
;-------- Calculate Month ---------
;--------- { Display '/' Seprector } -----------------
mov al,'/'
;-----------------------------------------------------------
mov ah,0eh
int 10h
mov ah,0
mov al,month
cmp al,10
jb lb4 ;{ Jump Month}
mov bl,10
div bl
or al,030h
push ax
mov ah,0eh
int 10h
pop ax
mov al,ah
lb4: ;{ Calculate And Display Month}
or al,030h
int 10h
;-------- Calculate Days ---------
;--------- { Display '/' Seprector } -----------------
mov al,'/'
;-----------------------------------------------------------
mov ah,0eh
int 10h
mov ah,0
mov al,days
cmp al,10
jb lb5 ;{Jump Days}
mov bl,10
div bl
or al,030h
push ax
mov ah,0eh
int 10h
pop ax
mov al,ah
lb5: ;{ Calculate And Display Days}
or al,030h
int 10h
ret
Display_On_Monitor endp ;{End Procedure}
end

lolojoon
دوشنبه 14 بهمن 1387, 14:31 عصر
دوستان یعنی کسی نیست بتونه کمک کنه ؟ :گریه::گریه::گریه::گریه: