Group Blog
 
All blogs
 
ทดลองเขียน ASM บน Linux : อ่านจำนวน argument ที่ส่งให้โปรแกรม

  ในภาษาซีการเขียนโปรแกรมจะเริ่ม execute จาก int main(int argc, char *argv[])
เราจะมาหาค่า argc กัน เช่น
./test 1 2 3  ใน nasm จะนับได้ 4 จำนวน โดยจะรวมชื่อโปรแกรมเข้าไปด้วย
และระบบจะทำการเก็บข้อมูลใน stack ประมาณนี้

--------------------------
|       4                        |
--------------------------
|     ./test                    |
--------------------------
|       1                        |
--------------------------
|       2                        |
--------------------------
|       3                        |
--------------------------
ดังนั้นถ้าเราใช้คำสั่ง pop ecx ก็จะเก็บค่าจำนวน argument ใน Register ECX
ต่อไปเราต้องนำมาแสดงผล โดยใช้หลักการโปรแกรมครั้งก่อน แต่เจอปัญหาคือ
ค่าargument จะเปลี่ยนไปตาม จำนวน arg แก้ปัญหาโดยการกำหนดตัวแปรที่

section .bss
num: resd 1 สร้างที่เก็บตัวแปรขนาด 32 bit 

และเรารู้ว่าascii code ของเลข ศูนย์ คือ 30h ดังนั้นเราจึงเอาค่า ใน ECX มาบวก 30h
แล้วนำมาเก็บไว้ที่ตำแหน่งของ num สุดท้ายก็นำมาแสดงผล
code ก็จะประมาณนี้


ผลลัพธ์ ประมาณนี้




Create Date : 10 มีนาคม 2557
Last Update : 10 มีนาคม 2557 20:18:43 น. 0 comments
Counter : 470 Pageviews.

ชื่อ :
Comment :
  *ใช้ code html ตกแต่งข้อความได้เฉพาะสมาชิก
 
รหัสส่งข้อความ
กรุณายืนยันรหัสส่งข้อความ

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.