งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

การโอนย้ายข้อมูล ธนาวินท์ รักธรรมานนท์

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "การโอนย้ายข้อมูล ธนาวินท์ รักธรรมานนท์"— ใบสำเนางานนำเสนอ:

1 การโอนย้ายข้อมูล ธนาวินท์ รักธรรมานนท์

2 2 คำสั่งการโอนย้ายข้อมูล คำสั่ง MOV การโอนย้ายข้อมูลระหว่างรีจิสเตอร์กับรีจิสเตอร์ การโอนย้ายข้อมูลกับหน่วยความจำ การกำหนดค่าคงที่ให้กับหน่วยความจำ รูปแบบ MOV ปลายทาง, ต้นทาง MOV reg,reg MOV reg,mem MOV mem,reg MOV reg,imm MOV mem,imm reg : รีจิสเตอร์ mem : ตำแหน่ง หน่วยความจำ imm : immediate ( ค่าคงที่ )

3 3 ข้อจำกัดของคำสั่ง MOV โอเปอร์แรนด์ทั้งสองตัวต้องมีขนาด เท่ากัน สิ่งไม่สามารถคัดลอก ข้อมูลจากหน่วยความจำไปยัง หน่วยความจำโดยตรง ค่าคงที่ (immediate) ไปยังเซกเมนต์ รีจิสเตอร์โดยตรง ในการคัดลอกค่าคงที่ไปยัง หน่วยความจำต้องระบุขนาดของ หน่วยความจำด้วย

4 4 ตัวอย่างการใช้คำสั่ง MOV MOVAX,100h MOVBX,AX MOVDX,BX MOVAX,1234h MOVDX,5678h MOVAL,DL MOVBH,DH MOVAX,1000h MOV[100h],AX MOVBX,[100h] กำหนดค่า 100h ให้กับ AX จากนั้นคัดลอกไปให้ BX และ DX กำหนดค่า 1234h ให้กับ AX และค่า 5678h ให้กับ DX จากนั้นคัดลอกค่าใน DL ไปให้ AL และ DH ไป ให้ BH กำหนดค่า 1000h ให้กับ AX จากนั้นคัดลอกข้อมูลจาก AX ไป ยังหน่วยความจำตำแหน่งที่ DS:100h และคัดลอกข้อมูล กลับมายัง BX

5 5 ตัวอย่างการใช้คำสั่ง MOV MOVBYTE PTR [200h],10h MOVWORD PTR [300h],10h MOVAX,2300h MOVDS,AX กำหนดค่า 10h แบบ ไบต์ให้กับ หน่วยความจำที่ DS:200h และแบบ เวิร์ดที่ DS:300h กำหนดค่า 2300h ให้กับ DS โดยผ่านทาง AX

6 6 การโอนย้ายข้อมูลระหว่าง รีจิสเตอร์ การโอนย้ายข้อมูลระหว่างรีจิสเตอร์สามารถ ทำได้ถ้าขนาดของรีจิสเตอร์ทั้งคู่เท่ากัน คู่รีจิสเตอร์ 16 บิต กับ 8 บิต MOVAX,1000h MOVAL,3Ah MOVAH,AL MOVAX,234h AXAHAL 1000h10h00h AXAHAL 103Ah10h3Ah AXAHAL 3A3Ah3Ah AXAHAL 234h02h34h

7 7 การโอนย้ายข้อมูลกับ หน่วยความจำ การระบุตำแหน่งในหน่วยความจำ โดยทั่วไป ในการระบุตำแหน่งในหน่วยความจำเราจะระบุ เฉพาะออฟเซ็ตเท่านั้น โดยออฟเซ็ตที่ระบุจะถูกนำไป ประกอบกับค่าในเซ็กเมนต์ รีจิสเตอร์ที่เหมาะสม เช่นในการ อ้างถึงข้อมูลออฟเซ็ตจะถูกนำไปประกอบกับ DS เป็นต้น ตัวอย่าง MOVAX,6789h MOVDX,1234h MOV[100h],AX MOV[102h],DX MOV[104h],AH MOV[105h],DL MOVBX,[104h] MOVCX,[103h] MOV[106h],CL DS:100h DS:101h DS:102h

8 8 DS:100h DS:101h DS:102h MOV[102h],DX 1234 MOV[100h],AX 8967 MOV[104h],AH 67 MOV[105h],DL 34 MOVBX,[104h] 3467 MOVCX,[103h] 6712 MOVAX,6789h MOVDX,1234h MOV[100h],AX MOV[102h],DX MOV[104h],AH MOV[105h],DL MOVBX,[104h] MOVCX,[103h] MOV[106h],CL 89h 67h 34h 12h 67h 34h

9 9 การโอนย้ายข้อมูลกับ หน่วยความจำ ข้อสังเกตในการจัดเรียงลำดับไบต์ของข้อมูล สังเกตว่าในการเก็บค่าในหน่วยความจำเมื่อเราเก็บ ค่าเป็น 16 บิต การเรียงไบต์ในหน่วยความจำจะเก็บ ค่าในไบต์ที่มีนัยสำคัญสูงไว้ในไบต์ที่มีแอดเดรสสูง กว่า และไบต์ที่มีนัยสำคัญต่ำไว้ในแอดเดรสที่มี แอดเดรสต่ำกว่า เราเรียกว่าเป็นการเรียงแบบ little endian การ เรียงข้อมูลแบบนี้ใช้ในหน่วยประมวลผลตระกูล Intel ในหน่วยประมวลผลตระกูลอื่นเช่น SPARC หรือ MIPS จะเรียงไบต์กลับกันการเรียงอีกแบบนี้เรา เรียกว่าการเรียงแบบ big endian

10 10 การโอนย้ายข้อมูลกับ หน่วยความจำ เราสามารถระบุออฟเซ็ตของหน่วยความจำ ทางอ้อมได้โดยผ่านทางรีจิสเตอร์ BX MOVAX,102h MOVBX,100h MOVCX,4004h MOVDX,1201h MOV[BX],AX MOV[BX+2],CX MOV[BX+3],DX MOV[BX+4],BX MOVBX,[102h] MOVAX,[BX] DS:100h DS:101h DS:102h 0100 AX 0104 BX AX = ? 02h 01h 04h 40h 01h 12h 00h 10h

11 11 การกำหนดค่าให้กับ หน่วยความจำ ลองสังเกตคำสั่งต่อไปนี้ การคัดลอกค่าไปยังหน่วยความจำจะเป็นแบบ 16 บิต ( คัดลอก 0010h) หรือ 8 บิต ( คัดลอก 10h) ในการเขียนค่าคงที่ลงในหน่วยความจำเราจะต้อง ระบุขนาดของหน่วยความจำด้วย สังเกตว่าความกำกวมนี้ไม่เกิดในกรณีของ MOV[100h],10h MOVWORD PTR [100h],10h MOVBYTE PTR [100h],10h MOV[100h],AX

12 12 DEBUG

13 13 คำสั่งทั่วไปของโปรแกรม DEBUG คำสั่ง ?: แสดงรายการคำสั่ง คำสั่ง R (register) : จัดการกับ รีจิสเตอร์ คำสั่ง D (dump) : แสดงค่าใน หน่วยความจำ คำสั่ง A (assemble) : สั่งให้ โปรแกรม DEBUG แปล โปรแกรมลงในแอดเดรสที่ระบุ คำสั่ง U (unassemble) : สั่งให้ โปรแกรม DEBUG แสดง โปรแกรมที่อยู่ในแอดเดรสที่ระบุ

14 14 คำสั่งทั่วไปของโปรแกรม DEBUG คำสั่ง T (trace) : คำสั่งตามรอยการทำงาน ครั้งละ 1 คำสั่ง คำสั่ง P (proceed) : คำสั่งให้ทำงานจนถึง บรรทัดถัดไป ใช้ในกรณีมีการเรียกโปรแกรมย่อยหรือมีการเรียกใช้ บริการของระบบ คำสั่ง G (go) : คำสั่งเริ่มการทำงานและ ทำงานจนจบ

15 15 สิ่งควรรู้ก่อนการใช้โปรแกรม DEBUG โปรแกรม DEBUG เป็นโปรแกรมหนึ่งที่อยู่ใน ชุดคำสั่งของ windows ตัวเลขต่าง ๆ ในโปรแกรม DEBUG จะเป็นเลข ฐาน 16 ทั้งหมด ไม่ต้องพิมพ์ h ระบุหลังตัวเลข โปรแกรมจะเริ่มทำงานที่หน่วยความจำตำแหน่ง CS:IP เสมอ การกำหนดค่าให้กับรีจิสเตอร์ทั้งสอง ใช้คำสั่ง RCS และ RIP การระบุคำสั่ง (a), การแสดงคำสั่ง (u) และการ แสดงหน่วยความจำ (d) จะเริ่มต้นที่ตำแหน่งต่อ จากการทำงานครั้งสุดท้ายของคำสั่งนั้นๆ ไม่ขึ้นกับ ค่า IP หากต้องการเปลี่ยนแปลงตำแหน่งให้ใส่ offset ตามหลังทันที เช่น a 100 เป็นต้น การใช้งานหน่วยความจำทุกครั้งจะต้องอ้างใน รูปแบบ segment:offset เสมอ แต่การอ้างถึง ข้อมูลส่วนใหญ่ในโปรแกรมจะใช้เพียงรีจิสเตอร์ เดียว

16 16 Question ?


ดาวน์โหลด ppt การโอนย้ายข้อมูล ธนาวินท์ รักธรรมานนท์

งานนำเสนอที่คล้ายกัน


Ads by Google