کمک در حرکت دایره با توجه به مختصاتی که کاربر وارد می کنه

karaj.designer

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

karaj.designer

عضو جدید
در اصل می خوام قبل از رسم دایره،یا حتی بعد از رسم ،2 تا پیغام صادر شه
پیغام 1:لطفا شماره سطر را وارد کنید
پیغام 2:لطفا شماره ستون را وارد کنید
بعد دایره توو این مختصاتی که کاربر وارد کرده رسم بشه.

کد دایره:
کد:
.model small.stack 256h
.data
	MSG db "baraye rasm dayere lotfan yeki az kelid haye keyboard ra befesharid",'$'
.code
	main proc far
		mov ax,@data
		mov ds,ax
		
		mov ah,02 
        mov ah,9h
		lea dx,MSG
		int 21h
		
		mov ah,1h
		int 21h
		
		mov ah,0h
		mov al,12h
		int 10h
		
		mov ax,50
		push ax		;Ox
		push ax		;Oy
		mov ax,20	;size
		push ax
		mov al,5
		mov ah,0
		push ax
		mov al,5
		mov ah,0
		push ax		
		mov ax,1h	;color
		push ax
		call circle
		
		mov ah,8h
		int 21h
		
		mov ax,4c00h
		int 21h
	main endp
	circle proc
		push bp           
		mov  bp,sp 
		push ax
		push bx
		push cx
		push dx
		push si
		push di
		pushf
		mov  ax,[bp+8]   
		mov  bx,1000      
		imul bx           
		mov  cx,[bp+6]   
		idiv cx          
		push ax         
		xchg ax,cx     
		mov  cx,[bp+8] 
		imul bx          
		idiv cx        
		mov  [bp+6],ax  
		pop  ax        
		mov  [bp+8],ax  
		mov  ax,[bp+10] 
		mov  bx,1000  
		imul bx        
		xor  di,di    
	cr5:
		push ax         
		push dx        
		xor  bx,bx   
		add  ax,500  
		adc  dx,bx        
		mov  bx,1000   
		idiv bx        
		mov  bx,ax      
		add  ax,[bp+14]  
		mov  dx,[bp+12]  
		sub  dx,di      
		mov  cx,ax     
		mov  al,[bp+4]
		mov ah,0
		push dx
		push cx
		push ax
		call put_pixel 
		sub  cx,bx     
		sub  cx,bx       
		push dx
		push cx
		push ax
		call put_pixel    
		add  dx,di 
		add  dx,di
		push dx
		push cx
		push ax
		call put_pixel
		add  cx,bx     
		add  cx,bx   
		push dx
		push cx
		push ax
		call put_pixel
		xchg cx,bx 
		inc  di      
		mov  ax,di   
		mov  bx,[bp+6]  
		imul bx          
		idiv cx          
		xor  dx,dx       
		mov  si,ax      
		idiv bx         
		cmp  ax,1          
		jae  cr7  
		pop  dx       
		pop  ax  
		neg  si       
		mov  bx,-1     
		add  ax,si     
		adc  dx,bx      
		jmp   cr5  
	cr7:
		pop  dx       
		pop  ax  
		mov  ax,di      
		mov  bx,1000   
		imul bx         
		mov  di,cx      
		dec  di         
	cr8:
		push ax           
		push dx          
		xor  bx,bx     
		add  ax,500 
		adc  dx,bx        
		mov  bx,1000   
		idiv bx        
		mov  bx,ax      
		add  ax,[bp+12]  
		mov  cx,[bp+14]  
		add  cx,di      
		mov  dx,ax        
		mov  al,[bp+4]
		mov ah,0			
		push dx
		push cx
		push ax
		call put_pixel    
		sub  cx,di      
		sub  cx,di    
		push dx
		push cx
		push ax
		call put_pixel        
		sub  dx,bx      
		sub  dx,bx      
		push dx
		push cx
		push ax
		call put_pixel  
		add  cx,di      
		add  cx,di     
		push dx
		push cx
		push ax
		call put_pixel        
		sub  dx,[bp+12]  
		neg  dx         
		xchg cx,dx      
		or   di,di       
		js   cr11       
		dec  di         
		mov  ax,di      
		mov  bx,[bp+8]  
		imul bx        
		idiv cx         
		mov  si,ax   
		pop  dx          
		pop  ax             
		xor  bx,bx
		or   si,si      
		jns  cr10       
		mov  bx,-1        
	cr10:
		add  ax,si       
		adc  dx,bx        
		jmp  cr8  
		pop dx
		pop ax
		jmp ci_ret
	cr11:
		pop dx
		pop ax
	ci_ret:
		popf
		pop di
		pop si
		pop dx
		pop cx
		pop bx
		pop ax
		pop bp          
		ret 12     
	circle endp
	put_pixel proc
		push bp
		mov bp,sp
		push ax
		push bx
		push cx
		push dx
		pushf
		mov bh,0
		mov ax,[bp+4]
		mov cx,[bp+6]
		mov dx,[bp+8]
		mov ah,0ch
		int 10h
		popf
		pop dx
		pop cx
		pop bx
		pop ax
		pop bp
		ret 6
	put_pixel endp
end main
 
آخرین ویرایش:

karaj.designer

عضو جدید
برنامه فقط یه مشکل کوچولو داره.....لطفا کمک کنید

برنامه فقط یه مشکل کوچولو داره.....لطفا کمک کنید

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

اینم کد کاملتر شده:

کد:
.model small.stack 256h
.data
    message1 db "lotfan satr mored nazar ravared konid !!!", "$" 
    message2 db "lotfan sotun mored nazar ravared konid !!!", "$" 
	MSG db "baraye rasm dayere lotfan yeki az kelid haye keyboard ra befesharid",'$'
.code
	main proc far
		mov ax,@data
		mov ds,ax 
		 
				 mov AX,seg message1
         mov DS,AX
         mov AH,09
         lea DX,message1
         int 21h  
         
         mov ax, @data  ;this line may depend on actual assembler (works with MASM, check for exact syntax of your assembler if it doesn't work for you)
         mov ds, ax       
         mov ah, 0Ah ; Function 0Ah
         int 21h
         
          
         mov AX,seg message2
         mov DS,AX
         mov AH,09
         lea DX,message2
         mov ax,50
          
		 mov ax, @data  ;this line may depend on actual assembler (works with MASM, check for exact syntax of your assembler if it doesn't work for you)
         mov ds, ax       
         mov ah, 0Ah ; Function 0Ah
         int 21h
		
		


		mov ah,02 
        mov ah,9h
		lea dx,MSG
		int 21h
		
		mov ah,1h
		int 21h
		
		mov ah,0h
		mov al,12h
		int 10h 
		
		mov ax,50
		


		 
		 push ax		;Ox 
		
		
		
           
		push ax		;Oy
		
		mov ax,20	;size
		push ax
		mov al,5
		mov ah,0
		push ax
		mov al,5
		mov ah,0
		push ax		
		mov ax,1h	;color
		push ax
		call circle
		
		mov ah,8h
		int 21h
		
		mov ax,4c00h
		int 21h
	main endp
	circle proc
		push bp           
		mov  bp,sp 
		push ax
		push bx
		push cx
		push dx
		push si
		push di
		pushf
		mov  ax,[bp+8]   
		mov  bx,1000      
		imul bx           
		mov  cx,[bp+6]   
		idiv cx          
		push ax         
		xchg ax,cx     
		mov  cx,[bp+8] 
		imul bx          
		idiv cx        
		mov  [bp+6],ax  
		pop  ax        
		mov  [bp+8],ax  
		mov  ax,[bp+10] 
		mov  bx,1000  
		imul bx        
		xor  di,di    
	cr5:
		push ax         
		push dx        
		xor  bx,bx   
		add  ax,500  
		adc  dx,bx        
		mov  bx,1000   
		idiv bx        
		mov  bx,ax      
		add  ax,[bp+14]  
		mov  dx,[bp+12]  
		sub  dx,di      
		mov  cx,ax     
		mov  al,[bp+4]
		mov ah,0
		push dx
		push cx
		push ax
		call put_pixel 
		sub  cx,bx     
		sub  cx,bx       
		push dx
		push cx
		push ax
		call put_pixel    
		add  dx,di 
		add  dx,di
		push dx
		push cx
		push ax
		call put_pixel
		add  cx,bx     
		add  cx,bx   
		push dx
		push cx
		push ax
		call put_pixel
		xchg cx,bx 
		inc  di      
		mov  ax,di   
		mov  bx,[bp+6]  
		imul bx          
		idiv cx          
		xor  dx,dx       
		mov  si,ax      
		idiv bx         
		cmp  ax,1          
		jae  cr7  
		pop  dx       
		pop  ax  
		neg  si       
		mov  bx,-1     
		add  ax,si     
		adc  dx,bx      
		jmp   cr5  
	cr7:
		pop  dx       
		pop  ax  
		mov  ax,di      
		mov  bx,1000   
		imul bx         
		mov  di,cx      
		dec  di         
	cr8:
		push ax           
		push dx          
		xor  bx,bx     
		add  ax,500 
		adc  dx,bx        
		mov  bx,1000   
		idiv bx        
		mov  bx,ax      
		add  ax,[bp+12]  
		mov  cx,[bp+14]  
		add  cx,di      
		mov  dx,ax        
		mov  al,[bp+4]
		mov ah,0			
		push dx
		push cx
		push ax
		call put_pixel    
		sub  cx,di      
		sub  cx,di    
		push dx
		push cx
		push ax
		call put_pixel        
		sub  dx,bx      
		sub  dx,bx      
		push dx
		push cx
		push ax
		call put_pixel  
		add  cx,di      
		add  cx,di     
		push dx
		push cx
		push ax
		call put_pixel        
		sub  dx,[bp+12]  
		neg  dx         
		xchg cx,dx      
		or   di,di       
		js   cr11       
		dec  di         
		mov  ax,di      
		mov  bx,[bp+8]  
		imul bx        
		idiv cx         
		mov  si,ax   
		pop  dx          
		pop  ax             
		xor  bx,bx
		or   si,si      
		jns  cr10       
		mov  bx,-1        
	cr10:
		add  ax,si       
		adc  dx,bx        
		jmp  cr8  
		pop dx
		pop ax
		jmp ci_ret
	cr11:
		pop dx
		pop ax
	ci_ret:
		popf
		pop di
		pop si
		pop dx
		pop cx
		pop bx
		pop ax
		pop bp          
		ret 12     
	circle endp
	put_pixel proc
		push bp
		mov bp,sp
		push ax
		push bx
		push cx
		push dx
		pushf
		mov bh,0
		mov ax,[bp+4]
		mov cx,[bp+6]
		mov dx,[bp+8]
		mov ah,0ch
		int 10h
		popf
		pop dx
		pop cx
		pop bx
		pop ax
		pop bp
		ret 6
	put_pixel endp
end main
 

karaj.designer

عضو جدید
با سلام،
چه مشکی پیش میاد؟

سلام استاد

مشکل اینجاست که نمی تونم ورودی رو به دایره وصل کنم.
یعنی وقتی کاربر ورودی رو وارد می کنه،دایره بدون توجه به ورودی ،دایره رو توو همون نقطه ی ثابت رسم می کنه.
من می خوام کد ورودیم به کد دایره وصل شه و دایره با توجه به مختصات سطر و ستونی که کاربر وارد می کنه،رسم شه.

ممنون می شم کمکم کنید
 
آخرین ویرایش:

sayyad84

متخصص زبان Assembly
کاربر ممتاز
نمی دونم کد رو چطوری نوشتید ولی ناقصه!! بعد از چاپ پیام باید یه رشته دریافت کنید، رشته رو به عدد تبدیل کنید و عدد رو به زیربرنامه ی رسم بفرستید. برای این کار، از وقفه ی دریافت رشته و زیربرنامه ای که رشته رو به عدد تبدیل می کنه استفاده کنید. فکر کنم توضیحاتش رو توی تاپیک برنامه های نوشته شده دادم ولی به طور خلاصه، چون ابعاد صفحه حداکثر سه کاراکتره مثلاً موقعیت افقی 452 پس باید تا سه تا کاراکتر پیش برید، کاراکتر رو به رقم تبدیل و در 0، 10 و 100 ضرب کنید و جمع کنید تا کل بدست بیاد. مثلاً 2+50+400!!!
 

Similar threads

بالا