Group Blog
 
All blogs
 

ทดลองเขียน ASM บน Linux

วันนี้มาลองเขียน asm บน linux กัน

โดยไปดูจากที่นี้ และ (2)
1. ติดตั้งโปรแกรม NASM โดย พิมพ์ sudo apt-get install nasm
และถ้าพิมพ์ whereis nasm ก็จะรู้ตำแหน่งที่ติดตั้งโปรแกรม
ตามจริงเค้าบอกว่า ใน linux มี assembler อยู่แล้วชื่อ gas แต่ syntax จะแตกต่างกับทาง dos เลย กล่าวคือ

AT&T mnemonic source, destination
NASM mnemonic    destination, source
ดังนั้นจึงมาเลือกใช้ nasm แทน

2. การเขียนโปรแกรม asm เหมือนการไปเรียกใช้งาน linux system call ที่มี fucntion ให้ใช้งานจำนวน 190 ตัว
3. เราต้องใส่เบอร์ function ที่ต้องการใช้งาน ใน register EAX และใส่พารามิเตอร์ใน Register EBX ECX และมีอีก รวมประมาณ 6 ตัว
4. เสร็จแล้วเราก็ใช้คำสั่ง int 80h เพื่อเรียกfunction มาใช้งาน
5. นอกจากนี้ยังมีการแบ่ง section เป็น
    section .data เพื่อระบุค่าต่างๆ
    section .text เพื่อเขียนcode
ุ6. การ compile ก็พิมพ์ประมาณนี้
nasm -f elf myfile.asm
  ld -o myfile myfile.o
ก็จะได้ไฟล์ myfile เอาไว้ execute ได้
ึ7.ตัวอย่าง code
     


จาก code จะมีการเรียกใช้ system call 2 function คือ 4 = write กับ 1= exit




 

Create Date : 08 มีนาคม 2557    
Last Update : 8 มีนาคม 2557 21:51:26 น.
Counter : 384 Pageviews.  

OpenGL เบื้องต้น กับ Ubuntu

  วันนี้มาทดลองใช้ OpenGL กันบ้างเพราะต้องการทดสอบ 3D ใน linux แต่ไม่รู้ว่าจะมีความรู้ทำได้ขนาดไหน -*-

หาข้อมูลจาก (1) และ (2)
Copy Code ตามเขามาก็ได้ประมาณนี้


เวลา compile ก็พิมพ์ประมาณนี้
g++ glEx01.cpp -o glEx01 -lGL -lglut

ก็จะได้ไฟล์ glEx01 มาใช้งาน

ลืมไปต้องมีการติดตั้ง library ด้วยโดยพิมพ์
sudo apt-get install mesa-common-dev และ
sudo apt-get install  freeglut3-dev







 

Create Date : 28 กุมภาพันธ์ 2557    
Last Update : 8 มีนาคม 2557 21:13:06 น.
Counter : 393 Pageviews.  

Raspberry Pi : ติอต่อจอ LCD 1.8 แบบใหม่

 บันทึกกันลืม การต่อออกจอ 1.8 นิ้ว

โดยขออนุญาต copy จาก 
https://www.facebook.com/notes/เกิดมา-ทำลาย/ต่อจอ-18-tft-สำหรับเฟิร์มแวร์-2013-12-20-
 wheezy-raspbian-2014-01-03-fbtft/775640895797378


ข้อความ ที่copy มา

sudo nano /etc/modprobe.d/raspi-blacklist.conf

ใส่คอมเม้นท์ (#) ไว้หน้าบรรทัด blacklist spi-bcm2708

sudo nano /boot/cmdline.txt


เพิ่มต่อท้ายไว้ในบรรทัดเดียวกันดังนี้

fbcon=map:10 fbcon=rotate:0 fbcon=font:MINI4x6


sudo nano /etc/modules


เพิ่มลงไปในไฟล์ดังนี้

fbtft_device name=sainsmart18 cs=1 speed=16000000 gpios=reset:25,dc:24,cs:8 width=160 height=128 rotate=90


ตรวจสอบบูตโหลดเดอร์ดูก่อน

sudo apt-cache show raspberrypi-bootloader
       

ต้องทำการมาร์คเอาไว้ก่อนว่าให้โฮบูตโหลดเดอร์เอาไว้ไม่ต้องอัพเดท

เพราะการอัพเดทโดยปกติทั่วไปจะทำให้ไดรเวอร์หาย kernel และ module จะถูกเขียนทับ

ทำให้ใช้จอไม่ได้

sudo apt-mark hold raspberrypi-bootloader
       

อัพเดทและอัพเกรดระบบ

sudo apt-get update
sudo apt-get upgrade
       

ติดตั้งตัวอัพเดทเฟิร์มแวร์

sudo wget https://raw.github.com/Hexxeh/rpi-update/master/
rpi-update -O /usr/bin/rpi-update && sudo chmod +x 
 /usr/bin/rpi-update


อัพเดทเฟิร์มแวร์โดยไม่อัพเดท kernel

sudo SKIP_KERNEL=1 rpi-update
       

จากนั้นเริ่มเครื่องใหม่

sudo reboot


======================================

หมายเหตุ

ตอนติดตั้ง ต้องดูว่าเกิด error เนื่องจาก load ไฟล์จาก network หรือเปล่า ถ้ามี error ให้ทำอีกครั้ง





 

Create Date : 20 กุมภาพันธ์ 2557    
Last Update : 7 พฤศจิกายน 2557 20:26:06 น.
Counter : 436 Pageviews.  

Gambas3 Programming ตอน 8: อ่านข้อมูล ตัวอักษรในเกม romancing saga 2

  เมื่่อเราอ่านข้อมูลจาก binary file ได้แล้ว ต่อไปก็ทดลอง นำข้อมูลมาแปลงเป็นตัวอักษร จากเกม RS2 เผื่อมีประโยชน์ในการแปล เกมต่อไป ^ ^

สิ่งที่ได้เรียนรู้คือ การใช้ Drawing Area
  Draw.Begin(da)
    Draw.FillRect(x, y, 20, 20, cc)
  Draw.End
ที่สำคัญ ต้องกำหนด properties ของ Drawing Area ที่ cached = true





 

Create Date : 15 กุมภาพันธ์ 2557    
Last Update : 15 กุมภาพันธ์ 2557 22:47:22 น.
Counter : 352 Pageviews.  

Gambas3 Programming ตอน 7: อ่านข้อมูล binary file แสดงใน Gridview

  ทำฐานข้อมูลมาหลายครั้งแล้วต่อไปมาลองการ อ่านไฟล์ดูบาง

โดยอ่านข้อมูล binary file แล้วมาแสดงใน GridView มีสิ่งที่น่าสนใจดังนี้
1. ที่เลือกใช้ GridView แทน ColumnView เพราะว่า ถ้ามี้ข้อมูลหลายบรรทัด เป็นแสนบรรทัด การใช้ ColumnView ไม่สะดวก เพราะเราต้องใช้ Event
Public Sub GridView1_Data(Row As Integer, Column As Integer)
เพื่อทำการ update ข้อมูลใน GridView ได้โดยง่าย โดยไม่ต้องอ่านมาทั้้งแสน บรรทัดครั้้งเดียว
2. Properties ของ GridView ต้องกำหนดมากกว่า ได้แก่
2.1 Mode : เลือก single ถ้าไม่เลือก none เวลาเราไป click จะไม่มีแถบ highlight แสดง
2.2 Header: เลือก Horizontal

3. การเปิดไฟล์
 hFile = Open Application.Path & "/rs2.smc" For Read Write
ที่สำคัญต้องอ้างอิง Application.Path ถ้าไม่ทำอย่างนี้จะเกิด Access Forbidden แปล่าไม่มีสิทธิ์์เข้าถึงข้อมูล ทั้งที่จริงแล้วมีสิทธิ์ ?

4. การอ่านข้อมูล
Read #hFile, iData
ที่แปลกก็คือต้องมี่เครื่่องหมาย # หน้า hFile
ส่วน iData เป็นข้อมูลแบบ byte

5. การเขียนข้อมูล
 Seek #hFile, 0
 Write #hFile, Chr(10) & Chr(25)

ไปที่ตำแหน่งที่ต้องการแก้ไข ด้วยคำสั่ง Seek
และต้องเขียนข้อมูลด้วยคำสั่ง Write แต่ที่แปลกคือ ต้องกำหนดเป็น String ในการเขียนข้อมูล ในที่นี้ต้องการเขียนค่า 10 และ 25 เราต้องแปลงเป็น String (char) ด้วยคำสั่ง Chr ก่อน

Source Code  หมายเหตุ ต้องใส่ไฟล์อะไรก็ได้ แ่ต่ตั้งชื่อว่า rs2.smc ด้วยครับ






 

Create Date : 12 มกราคม 2557    
Last Update : 12 มกราคม 2557 12:03:15 น.
Counter : 556 Pageviews.  

1  2  3  4  5  6  

wink99_th
Location :
พิษณุโลก Thailand

[Profile ทั้งหมด]

ให้ทิปเจ้าของ Blog [?]
ฝากข้อความหลังไมค์
Rss Feed
Smember
ผู้ติดตามบล็อก : 7 คน [?]




New Comments
Friends' blogs
[Add wink99_th's blog to your web]
Links
 

 Pantip.com | PantipMarket.com | Pantown.com | © 2004 BlogGang.com allrights reserved.