PDA

View Full Version : برنامه نویسی پورت پارالل با اسمبلی



setayesh2
دوشنبه 27 اردیبهشت 1389, 14:40 عصر
با سلام
من می خوام برنامه ای با اسمبلی بنویسم که دو تا کامپیوتر رو با پورت پارالل به هم متصل کنه و فقط یه فایل داده ای رو بتونند با هم رد و بدل کنند
ولی من اصلا نمی دونم از کجا باید شروع کنم و از چه وقفه هایی استفاده کنم
خواهش می کنم اگه کسی می تونه ، منو راهنمایی کنه
ممنون

tdkhakpur
دوشنبه 27 اردیبهشت 1389, 17:17 عصر
از وقفه 17h میتوانید استفاده کنید ولی برای انتقال داده های شخصی باید بصورت مستقیم این پورت را کنترل کنید


برای انتقال
mov al, 'a'
out 378h, al
برای دریافت
in al, 378h

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

setayesh2
سه شنبه 28 اردیبهشت 1389, 19:17 عصر
مي شه لطف كنيد بيشتر توضيح بديد
با پورت سريال چطور؟
ومنظورتون از بافر سخت افزار چيه ؟
خواهش مي كنم بيشتر توضيح بديد من واقعا گير افتادم و بايد خيلي زود اين برنامه رو تحويل بدم
يه كم از شروع برنامه نويسي برام بگو اگه ميشه
من تا عمر دارم دعات مي كنم

tdkhakpur
سه شنبه 28 اردیبهشت 1389, 22:10 عصر
با پورت سريال چطور؟
پورت سریال هم به این شکله ولی قبلا باید به پورت تنظیمات خاصی داده بشود و نسبت به paralel پیچیدگی بیشتری دارد.

ومنظورتون از بافر سخت افزار چيه ؟
خب وقتی شما داده را به یک پورت ارسال میکنید مثل این می ماند که شما یک دستگاه دیگری را به کامپیوتر وصل کرده باشید و داده را به اون دستگاه ارسال میکنید به همین خاطر پورتها هم به نوعی رابطی هست که داده از طریق ان به یک دستگاه ارسال میشود و یک به این مجرا شماره خاص مانند 387h داده شده است که وقتی شما با استفاده از دستور out داده را به این شماره ارسال کنید مستقیما داده به پورت ارسال و از آنجا راهی دستگاه مورد نظر که میتواند rs232 یا یک کنترلر paralel باشد ارسال میشود.
ولی وقتی شما اسم دستگاه یا به قولی سخت افزار را به چیزی میدید مطمئننا داخل این سخت افزار بافر هایی هم هست که میتواند داده های رسیده را برای مدتی ذخیره کند تا مورد پردازش قرار دهد.


يه كم از شروع برنامه نويسي برایم بگویید

خب شما برای شروع میتوانید دو کامپیوتر را از طریق کابل رابط paralel به هم وصل کنید و در ابتدا با برنامه های آماده تست کنید ببینید این دو کامپیوتر از نظر پورت اشکالی ندارند اگر از این کار مطمئن شدید میتوانید یک برنامه کوچک بنویسید که یک بایت خاص را از کامپیوتر 1 به پورت ارسال و برنامه دیگری بنویسید که داده را از پورت کامپیوتر 2 دریافت نماید که با این کار میشه گفت پروژه تان را تمام کرده اید بقیه اش یک الگوریتم ساده هست که باید پیاده سازری شود.
برنامه زیر نمونه پیشرفته ای هست که کار شما را انجام میدهد ولی به دلیل اینکه کتابخانه لازم در این پروژه در دسترس نیست نمیتوانید آنرا کامپایل کنید ولی میتوانید از سورس موجود قسمتهای ارسال و دریافت داده به پورت را بگیرید و یا کلا مطالعه کنید.

setayesh2
جمعه 07 خرداد 1389, 12:54 عصر
واقعا ازت ممنونم

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

mov x,1


mov ah,09
mov dx,offset buffer1
int 21h


mov ah,0ah
mov dx,offset buffer2
int 21h


mov ah,3dh ;open file
mov dx,offset bufer2+2
int 21h
jc erroropen


mov shenaseh,ax
mov cx,20
up:
mov dx,offset str
mov bx,ax
mov cx,1
mov ah,3fh ;read from file
int 21h
jc errorread

mov al,str
mov dx,0
mov ah,01 ;sending to port
int 14h


mov ah,42
mov al,0 ;enteghale esharegare file
mov dx,x
jmp endprog
inc x
loop up
jmp endprog

erroropen:
mov ah,09
mov dx,offset msg1 ;print msg1
int 21h
jmp endprog

errorread:
mov ah,09
mov dx,offset msg2 ; print msg2
int 21h


endprog:

mov ah,09
mov dx,offset msg3
int 21h
; add your code here

lea dx, pkey
mov ah, 9
int 21h ; output string at ds:dx

; wait for any key....
mov ah, 1
int 21h

mov ax, 4c00h ; exit to operating system.
int 21h
البته یکی دیگه هم برای دریافت دادهاست و با پورت rs232 هم کار کردم
به نظرت چطوره
البته باید بدونم که پینی که باهاش کامپیوتر دوم کد ACK برای کامپیوتر اول ارسال می کنه که بهش بگه دادها رو دریافت کردم چیه و از چه وقفه ای باید استفاده کنم

tdkhakpur
جمعه 07 خرداد 1389, 16:07 عصر
باید پورت سریال تنضیم بشود به همین راحتی بدون اغازش یا تنظیم کردن نمیشه داده ای را ارسال و دریافت کرد.
اگر بخواهید راحتتر به نتیجه برسید از پورت موازی استفاده کنید و فقط روی اون متمرکز بشید.
همانطور بالا برایتان توضیح داده شد عمل کنید تا سریعتر به نتیجه برسید.