contact  us  
 
 
 
  โรงงานอุตสาหกรรม
  โรงสี โรงมัน
  ซื้อขายหน้าร้าน
  ไมโครคอนโทเลอร์
  โปรแกรมโรงแรม
  โปรแกรมไฟแนนซ์
  โปรแกรมจัดการเอกสาร
  โปรแกรมขนส่ง
  รวมทุกโปรแกรม
  โปรแกรมอื่น ๆ
  Demo Product
  โครงสร้าง
  เครื่องจักร
จำหน่าย Source Code
วิธีการ SET
แลกเปลี่ยน Source Code
ProductController
  กันขโมยส่ง sms
  วัดสัญญาณเข้า computer
  เแปลงสัญญาณ
  เครื่องวัดอุณหภูมิ
SoftwareArticle
  Visual C++
  Visual Basic
  Assmbly
  Ladder PLC
  SCADA
  Delphi
  FoxPro
Electric Design
  ออกแบบระบบไฟฟ้า
  ตารางไฟฟ้า
 

 

หจก .ซอฟท์แอนด์แวร์ 872/1 ต.บ้านเกาะ อ.เมือง จ.นครราชสีมา 30000 : จำหน่ายและออกแบบโปรแกรมทุกชนิด ...โทร 044-372160
 
 
 
[ 10 ข้อควรจำสำหรับภาษา Assembly ของ MCS-51]
พบ 2 หน้า   หน้าก่อนนี้ << >> หน้าถัดไป     หน้าที่ 1 จาก 2 
(เรียบเรียงใหม่ ... มีนาคม 2544 เกรียงศักดิ์ บุญเสริมสุวงศ์)
การพัฒนางานทางด้านไมโครคอนโทรลเลอร์ด้วยภาษา Assembly นั้น  ถือว่ายังเป็นที่นิยมอยู่มาก
ในบ้านเรา   เรียกได้ว่าเป็นส่วนใหญ่เลย   ในขณะที่ต่างประเทศนั้น  ภาษา Assembly จะนิยมรอง
ลงมาจากภาษา C ที่ใช้กันเป็นอันดับหนึ่ง   อาจจะเป็นเพราะว่าความคุ้นเคย  หรือเพราะความตรง
ไปตรงมาของภาษา Assembly ที่เป็นจุดเด่นอย่างหนึ่งก็ได้   ไม่ว่าจะอย่างไรก็ตาม  การเข้าถึง
ภาษา Assembly ได้นั้น  ถือว่าเป็นการเรียนรู้และเข้าใจได้ลึกซึ้งที่สุด  และถ้ารู้จักนำมาประยุกต์
ใช้งานให้เหมาะสมแล้ว  ก็จะเป็นประโยชน์ต่อการพัฒนาเทคโนโลยีต่าง ๆ เป็นอย่างมาก 
สำหรับชิพตระกูล MCS-51 นั้น (ขอย้ำ ... ตระกูลครับ ... ไม่ใช่เบอร์ 51 ... แต่มากันเป็นร้อย ๆ เบอร์)
จากประสบการณ์ที่ได้สะสมมา  พอจะสรุปเป็นประเด็นต่าง ๆ ได้ 10 ประเด็น  ที่นักพัฒนาทั้งหลาย
ควรจะจดจำไว้ให้แม่น  เพื่อจะช่วยให้การพัฒนาเป็นไปได้อย่างไม่ติดขัด ... ดังนี้ครับ
  1. Internal RAM พื้นที่ยุทธศาสตร์
MCS-51 ถูกออกแบบให้มี Internal RAM ภายใน 128 Byte (เบอร์ 8051) หรือ 256 Byte (เบอร์ 8052)
และนี่เป็นความตั้งใจของผู้ผลิตที่จะให้ใช้พื้นที่ส่วนนี้เพื่อการทำงานต่าง ๆ คือเป็น Working Area ไม่ว่าจะ
เป็นส่วน Register, Stack, และ Buffer   ชุดคำสั่งเกือบจะทั้งหมดจะกระทำกับ Internal RAM นี้   ถ้าเรา
จะพยายามใช้ส่วนของ External RAM เป็นพื้นที่ในรูปแบบ Working Area ก็จะเป็นเรื่องที่ยุ่งยากเกินไป
ส่วน External RAM เหมาะสำหรับการเก็บข้อมูลแบบต่อเนื่อง หรือทำเป็น Buffer จำนวนมาก ๆ เท่านั้น
เพราะเนื่องจากมีคำสั่งที่ใช้งานได้ไม่กี่คำสั่ง  เช่น  MOVX A,@DPTR    ในส่วน Internal RAM นั้น  เรา
สามารถใช้งานโดยตรงได้โดยไม่ต้องใช้ Register ให้ยุ่งยากเลย  ตัวอย่างเช่น
                  MOV   COUNT,#18H
LOOP:     ...
                  ...
                  ...
                  DJNZ COUNT,LOOP
ในที่นี้ COUNT คือชื่อที่อ้างถึงพื้นที่ Internal RAM ที่กำหนดจากคำสั่ง EQU หรือ DS อีกที  สังเกตุว่าเรา
ใช้งานได้เสมือนกับเป็น Register R0-R7 เลย   อีกประเด็นหนึ่งที่เกี่ยวกับ Internal RAM ก็คือ  การอ้าง
ถึงพื้นที่ RAM ตั้งแต่ Address 80-FFH (เบอร์ 8052) ซึ่งมี Address ซ้อนทับกับส่วน SFR 80-FFH ด้วย
จะต้องแยกด้วยคำสั่งที่ใช้งาน  ถ้าเป็นกรณีอ้างถึง RAM ที่ตำแหน่ง A0H จะต้องใช้คำสั่งแบบ Indirect ดังนี้
    MOV R0,#0A0H
    MOV A,@R0
แต่ถ้าเป็นกรณีอ้างอิงถึง SFR ที่ตำแหน่ง A0H เช่นกัน จะต้องใช้คำสั่งแบบ Direct ดังนี้
    MOV A,0A0H
  2. ระบบ Stack และการเรียงข้อมูล
ระบบ Stack ของ MCS-51 จะเป็นแบบนับขึ้น โดยมีค่าเริ่มต้นหลังจาก Reset เป็น 07H เสมอ  ถ้ามีการใช้
คำสั่ง PUSH หรือ CALL   ค่า Stack จะเพิ่มขึ้นก่อน แล้วจึงเก็บข้อมูลลงไป  ซึ่งก็จะเป็น Address 08H เป็น
ตัวแรก   ระบบ Stack สามารถโยกย้ายไปที่ใดก็ได้ใน Internal RAM  ซึ่งรวมไปถึงส่วน Address 80-FFH
ด้วย  โดยจะไม่ปะปนกับส่วน SFR แต่อย่างใด  ... ส่วนการเรียงลำดับข้อมูลขนาด 16 บิทในคำสั่งต่าง ๆ
จะเรียงจาก High ไป Low เสมอ  เช่นการใช้คำสั่ง LJMP ไปที่ Address 87FFH จะแปลงเป็น Op-Code
คือ 02H,87H,FFH อ่านต่อ..
พบ 2 หน้า   หน้าก่อนนี้ << >> หน้าถัดไป     หน้าที่ 1 จาก 2 
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

:::www.softanware.com ::

Home | Download | Member | Customer | Webboard | contact us | Guestbook | Fortune

หจก .ซอฟท์แอนด์แวร์ (softanware)
872/1 ม.1 ถ.สุรนารายณ์ ต.บ้านเกาะ อ.เมือง จ.นครราชสีมา 30000
โทรศัพท์ 044-372160 โทรสาร 044-372161
:: Email softanware@yahoo.com :::