ورود

View Full Version : ترسیم دایره در مختصات مورد نظر کاربر



karaj.designer
سه شنبه 26 آذر 1392, 20:23 عصر
سلام دوستان
من یه کد دایره دارم که به خوبی کار می کنه و یه دایره ی توو خالی ترسیم می کنه.
می خوام به این کد این قسمت هم اضافه شه:
قبل از اینکه دایره رسم شه،برنامه ازم دو تا ورودی بخواد:
لطفا شماره سطر رو وارد کنید
لطفا شماره ستون را وارد کنید
و بعد از وارد کردن اعداد توسط کاربر،دایره توو سطر و ستون وارد شده،رسم بشه.

این کد دایره:

.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,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

دوستان کمکم کنید تا اون تیکه کد کوچولو هم به برنامه ام اضافه کنم.
من تا حالا با کد کیبورد کار نکردم و نمی دونم دقیقا کد کیبورد و گرفتن ورودی رو کجا بنویسم تا بتونم به خروجی مطلوبم برسم.
اساتید لطفا راهنمایی بفرمایند