22
By Juthawut Chantharamalee Computer Architecture and Assembly Language Suan Dusit Rajabhat University (Computer Science) 1

Computer Architecture and Assembly Language

Embed Size (px)

DESCRIPTION

Computer Architecture and Assembly Language. By Juthawut Chantharamalee. Suan Dusit Rajabhat University (Computer Science). บทที่ 8 โปรแกรมภาษาแอสเซมบลีเบื้องต้น ( Assembly Language Progamming ). บทที่ 2. Suan Dusit Rajabhat University (Computer Science). การประกาศข้อมูล. - PowerPoint PPT Presentation

Citation preview

Page 1: Computer  Architecture and Assembly  Language

By Juthawut Chantharamalee

Computer Architecture and

Assembly Language

Suan Dusit Rajabhat University (Computer Science)1

Page 2: Computer  Architecture and Assembly  Language

บทท�� 8 โปรแกรมภาษาแอสเซมบลี�เบ��องต้�น (Assembly Language Progamming)

บทท�� 2

Suan Dusit Rajabhat University (Computer Science)2

Page 3: Computer  Architecture and Assembly  Language

การประกาศข้�อม�ลีการประกาศข้�อมู�ลหร�อตั�วแปรในโปรแกรมูภาษาแอ

สเซมูบล�น��น ทำ าได้�โด้ยประกาศจองเน��อทำ�&ในหน'วยความูจ าในเซกเมูนตั)ข้�อมู�ล แล�วตั��งเลเบลข้องข้�อมู�ลน��นไว� ในการอ�างถึ+งข้�อมู�ลในหน'วยความูจ าตั าแหน'งน��น เราสามูารถึอ�างโด้ยใช้�เลเบลทำ�&เราประกาศไว�ได้� ด้�งน��นการประกาศตั�วแปรหร�อข้�อมู�ลน��นจะมู�ล�กษณะเช้'นเด้�ยวก�บการประกาศเลเบลน�&นเอง

Suan Dusit Rajabhat University (Computer Science) 3

Page 4: Computer  Architecture and Assembly  Language

คำ�าส �งเท�ยมในการประกาศข้�อม�ลีค าส�&งเทำ�ยมูทำ�&เราใช้�ในการประกาศข้�อมู�ลมู�หลายค าส�&ง ด้�งตัารางทำ�&

8.1 ค าส�&งเทำ�ยมูเหล'าน��ใช้�ในระบ.ข้นาด้ในการจองหน'วยความูจ า ตัารางทำ�& 8.1 ค าส�&งเทำ�ยมูส าหร�บการระบ.ข้นาด้ข้�อมู�ลในการจอง

หน'วยความูจ า

ในการประกาศจองข้�อมู�ลน��จะทำ าให� assembler ก�นเน��อทำ�&ในเซกเมูนตั)น��นตัามูข้�อมู�ลทำ�&ระบ.ตัามูหล�งค าส�&งเทำ�ยมูเหล'าน�� โด้ยจะก�นหน'วยความูจ าทำ�&มู�ข้นาด้ข้องแตั'ละหน'วยตัามูทำ�&ระบ.ในค าส�&ง

Suan Dusit Rajabhat University (Computer Science) 4

Page 5: Computer  Architecture and Assembly  Language

ร�ปแบบข้องการประกาศข้�อม�ลีในการประกาศข้�อมู�ล (ตั�วแปร) เรามู�กประกาศในเซกเมูนตั)ข้�อมู�ล โด้ยเราจะระบ.ช้�&อข้องตั�วแปรน��น พร�อมูทำ��งค าส�&งเทำ�ยมูทำ�&ใช้�ระบ.ข้นาด้ข้องข้�อมู�ล จากน��นเราจะระบ.ข้�อมู�ลตั'าง ๆ ทำ�&จะใช้�ตั าแหน'งทำ�&จะจองน��น ร�ปแบบในการระบ.เป1นด้�งน��

variable_name Dx data

Suan Dusit Rajabhat University (Computer Science) 5

Page 6: Computer  Architecture and Assembly  Language

ร�ปแบบข้องการประกาศข้�อม�ลีส'วนข้องโปรแกรมูทำ�& 8.1 การประกาศข้�อมู�ลตั�วอย'างการประกาศข้�อมู�ลจากการประกาศข้�อมู�ลในส'วนข้องโปรแกรมูทำ�& 8.2 จะมู�การจ�ด้สรรเน��อทำ�&ในหน'วยความูจ าด้�งร�ปทำ�& 8.1 ส�งเกตัว'าในการประกาศ data1 ก�บ data2 น��นการระบ.ข้�อมู�ลเหมู�อนก�นแตั'ข้นาด้ข้องข้�อมู�ลตั'างก�น ทำ าให�การจองเน��อทำ�&ในหน'วยความูจ าแตักตั'างก�นด้�วย

Suan Dusit Rajabhat University (Computer Science) 6

Page 7: Computer  Architecture and Assembly  Language

ร�ปแบบข้องการประกาศข้�อม�ลีส'วนข้องโปรแกรมูทำ�& 8.2 ตั�วอย'างการประกาศข้�อมู�ล

Suan Dusit Rajabhat University (Computer Science) 7

Page 8: Computer  Architecture and Assembly  Language

การระบ#ไม%ระบ#คำ%าข้องข้�อม�ลีท��จองเน��อท��เราสามูารถึประกาศจองหน'วยความูจ าโด้ยไมู'ระบ.ค'าเร2&มูตั�นได้�โด้ยการระบ.ค'าเป1น ‘?’ ด้�งเช้'นในส'วนข้องโปรแกรมูทำ�& 8.3 จะมู�การจองเน��อทำ�&ไว�แตั'ไมู'มู�การก าหนด้ค'าเร2&มูตั�น  data5 db ?

data6 dw ?ส'วนข้องโปรแกรมูทำ�& 8.3 การใช้�จองหน'วยความูจ าโด้ยไมู'ระบ.ค'าเร2&มูตั�นเราสามูารถึใช้�คำ�าส �งเท�ยม dup เพ�&อบอกการซ �าก�นข้องข้�อมู�ลได้� ร�ปแบบข้องค าส�&งเทำ�ยมู dup มู�ด้�งน��  count dup (value)

Suan Dusit Rajabhat University (Computer Science) 8

Page 9: Computer  Architecture and Assembly  Language

การประกาศข้�อม�ลีท��ซ��าก นตั�วอย'างข้องการประกาศทำ�&ใช้�ค าส�&งเทำ�ยมู dup ด้�งเช้'นในส'วนข้องโปรแกรมูทำ�& 8.4

ส%วนข้องโปรแกรมท�� 8.4 การใช้�ค าส�&งเทำ�ยมู dupAssembler จะจองหน'วยความูจ าข้นาด้ 10 ไบตั) ทำ�&มู�ค'าเป1น 0 และจะให�เลเบล data7 ช้��ไปทำ�&ตั าแหน'งเร2&มูตั�นข้องข้�อมู�ลน�� ในส'วนข้อง data8 จะเป1นข้�อมู�ลแบบไบตั)จ านวน 4x5 ไบตั) ทำ�&มู�ค'าเทำ'าก�บ 0 เช้'นเด้�ยวก�น ส�งเกตัว'าภายในเคร�&องหมูายวงเล3บข้องค าส�&งเทำ�ยมู dup เราสามูารถึใส'ข้�อมู�ลได้�หลายค'า รวมูทำ��งก าหนด้ค'าแบบซ �าก�นโด้ยใช้�ค าส�&ง dup อ�กได้� ด้�งเช้'นตั�วแปร data9 ในตั�วแปร data10 เป1นการประกาศจองหน'วยความูจ าไว�โด้ยไมู'ระบ.ค'าเร2&มูตั�นSuan Dusit Rajabhat University (Computer Science) 9

Page 10: Computer  Architecture and Assembly  Language

การอ�างใช้�ข้�อม�ลีท��ประกาศไว�ในการอ�างใช้�ข้�อมู�ลหร�อตั�วแปรทำ�&ประกาศไว� เรา

สามูารถึอ�างโด้ยใช้�ช้�&อข้องเลเบลทำ�&ประกาศไว�ได้� Assembler จะจ�ด้การน าตั าแหน'งข้องข้�อมู�ลน��นมูาแทำนค'าให�โด้ยอ�ตัโนมู�ตั2 เราย�งสามูารถึอ�างค'าในหน'วยความูจ าโด้ยอ�างส�มูพ�ทำธ์)ก�บเลเบลทำ�&เราก าหนด้ข้+�นได้� ส'วนข้องโปรแกรมูทำ�& 8.5 เป1นโปรแกรมูทำ�&อ�างใช้�ค'าข้องตั�วแปรทำ�&เราก าหนด้ในส'วนข้องโปรแกรมูทำ�& 8.2 โด้ยหล�งจากการทำ างานข้องโปรแกรมูค'าในหน'วยความูจ าจะเปล�&ยนไปตัามูร�ปทำ�& 8.2

Suan Dusit Rajabhat University (Computer Science) 10

Page 11: Computer  Architecture and Assembly  Language

การอ�างใช้�ข้�อม�ลีท��ประกาศไว�โปรแกรมูทำ�& 8.5 เป1นโปรแกรมูทำ�&อ�างใช้�ค'าข้องตั�วแปรทำ�&เราก าหนด้ในส'วนข้องโปรแกรมูทำ�& 8.2

Suan Dusit Rajabhat University (Computer Science) 11

Page 12: Computer  Architecture and Assembly  Language

การอ�างใช้�ข้�อม�ลีท��ประกาศไว�

ค'าในร�จ2สเตัอร) AL BX และ CL มู�ค'าเป1น 01h 01h และ 00h ตัามูล าด้�บ ส�งเกตัว'าในการก าหนด้ค'าคงทำ�&ให�ก�บตั�วแปรในหน'วยความูจ าเรากระทำ าได้�ทำ�นทำ�โด้ยไมู'ตั�องระบ.ข้นาด้ เน�&องจากในการประกาศตั�วแปรเราได้�ระบ.ก�บ assembler แล�วว'าจะเป1นตั�วแปรข้นากเทำ'าใด้. แตั'ในกรณ�ทำ�&เราตั�องการจะอ�างแตักตั'างจากทำ�&เราระบ.ก3สามูารถึกระทำ าได้�โด้ยตั�องระบ.ข้นาด้ข้องข้�อมู�ลก าก�บด้�วย เช้'นในค าส�&ง mov cl, byte ptr data4[2] เป1นการอ�างข้�อมู�ลแบบ 8 บ2ตั เพราะ CL เป1นร�จ2สเตัอร)ข้นาด้ 8 บ2ตั 

Suan Dusit Rajabhat University (Computer Science) 12

Page 13: Computer  Architecture and Assembly  Language

การอ�างต้�าแหน%งข้องข้�อม�ลีเราสามูารถึอ�างถึ+งออฟเซ3ตัข้องข้�อมู�ลทำ�&เราประกาศไว�ได้�โด้ยใช้�ค าส�&งเทำ�ยมู OFFSET ด้�งส'วนข้องโปรแกรมูทำ�& 8.6  movbx,offset data1 ;bx = offset

movbyte ptr [bx],10hmovbx,data2 ;bx = value at

data2  ส'วนข้องโปรแกรมูทำ�& 8.6 การอ�างตั าแหน'งข้องข้�อมู�ล

Suan Dusit Rajabhat University (Computer Science) 13

Page 14: Computer  Architecture and Assembly  Language

การอ�างต้�าแหน%งข้�อม�ลีโดยคำ+ดส มพั ทธ์.ก บร�จ+สเต้อร. BXนอกจากการระบ.ตั าแหน'งส�มูพ�ทำธ์)ก�บเลเบลโด้ยใช้�ค'าคงทำ�&แล�ว เราสามูารถึระบ.ตั าแหน'งข้องข้�อมู�ลส�มูพ�นธ์)ก�บเลเบลโด้ยใช้�ค'าจากร�จ2สเตัอร) BX ได้� ตั�วอย'างเช้'นส'วนข้องโปรแกรมูทำ�& 8.7

ส'วนข้องโปรแกรมูทำ�& 8.7 การอ�างตั าแหน'งข้องข้�อมู�ลส�มูพ�ทำธ์)ก�บเลเบลโด้ยใช้�ค'าจากร�จ2สเตัอร) BXในค าส�&ง mov ก'อนบรรทำ�ด้ทำ�& 5 เราอ�างหน'วยความูจ าโด้ยส�มูพ�นธ์)ก�บ data3 และค'าใน BX แตั'ในค าส�&ง mov บรรทำ�ด้ส.ด้ทำ�ายข้องส'วนข้องโปรแกรมูทำ�& 8.7 เราอ�างหน'วยความูจ าส�มูพ�นธ์)ก�บ BX ซ+&งเก3บออฟเซ3ตัข้อง data3Suan Dusit Rajabhat University (Computer Science) 14

Page 15: Computer  Architecture and Assembly  Language

การประกาศข้�อมู�ลส าหร�บการใช้�บร2การข้อง DOS หมูายเลข้ 09h แะละ 0Ah

ฟ6งก)ช้� &นหมูายเลข้ 09h และ 0Ah ข้อง DOS เป1นฟ6งก)ช้� &นทำ�&ตั�องมู�การส'งแอด้เด้รสข้องข้�อมู�ลในหน'วยความูจ า การประกาศข้�อมู�ลส าหร�บฟ6งก)ช้� &นหมูายเลข้ 09h จะไมู'มู�ความูซ�บซ�อนมูากน�ก แตั'ส าหร�บฟ6งก)ช้� &นหมูายเลข้ 0Ah การประกาศข้�อมู�ลทำ�&เหมูาะสมูจะทำ าให�เราเข้�ยนโปรแกรมูได้�ง'ายมูากข้+�นการใช้�บร+การข้อง DOS หมายเลีข้ 09h : การพั+มพั.ข้�อคำวามฟ6งก)ช้� &นหมูายเลข้ 09h น��ร�บข้�อมู�ลป7อนเข้�าค�อ :

ส'วนข้องโปรแกรมูทำ�& 8.8 ตั�วอย'างการประกาศข้�อมู�ลส าหร�บการใช้�บร2การข้อง DOS หมูายเลข้09h

Suan Dusit Rajabhat University (Computer Science) 15

Page 16: Computer  Architecture and Assembly  Language

การประกาศข้�อมู�ลส าหร�บการใช้�บร2การข้อง DOS หมูายเลข้ 09h แะละ 0Ah

การใช้�บร+การข้อง DOS หมายเลีข้ 09h : การพั+มพั.ข้�อคำวามฟ6งก)ช้�&นหมูายเลข้ 09h น��ร�บข้�อมู�ลป7อนเข้�าค�อ :เราสามูารถึส�&งแสด้งข้�อมู�ลด้�งกล'าวได้�โด้ย

mov ah,09hmov dx,offset mesgint 21h

ส'วนข้องโปรแกรมูทำ�& 8.9 ตั�วอย'างการการใช้�บร2การข้อง DOS หมูายเลข้ 09hอ�กข้ระหมูายเลข้ 10 (Line feed) และ 13 (Carriage Return) ค�อรห�สควบค.มูใช้�ในการส�&งให�ข้+�นบรรทำ�ด้ใหมู'Suan Dusit Rajabhat University (Computer Science) 16

Page 17: Computer  Architecture and Assembly  Language

การประกาศข้�อมู�ลส าหร�บการใช้�บร2การข้อง DOS หมูายเลข้ 09h แะละ 0Ah

การใช้�บร+การข้อง DOS หมายเลีข้ 0Ah : การอ%านข้�อคำวามฟ6งก)ช้�&นน��จะอ'านข้�อความูจากผู้��ใช้�จนกระทำ�&งผู้��ใช้�กด้ป.9มู Enter โด้ยข้�อมู�ลป7อนเข้�าจะตั�องระบ.ตั าแหน'งข้องหน'วยความูจ าทำ�&ใช้�เก3บข้�อมู�ล (บ�ฟเฟอร)) ข้องข้�อความู ฟ6งก)ช้�&นหมูายเลข้ 0Ah น��ร�บข้�อมู�ลป7อนเข้�าค�อ

AH = 0Ah

DS : DX = ตั าแหน'งข้องหน'วยความูจ าทำ�&จะใช้�เก3บข้�อความู (บ�ฟเฟอร))บ�ฟเฟอร)จะตั�องมู�ร�ปแบบด้�งน��1. ไบตั)แรกข้องหน'วยความูจ าเก3บค'าความูยาวส�งส.ด้ข้องข้�อความูทำ�&อ'านได้� ความูยาวน��จะรวมูรห�สข้+�นบรรทำ�ด้ใหมู'ด้�วย2. DOS จะเข้�ยนความูยาวจร2งข้องข้�อความูทำ�&อ'านเข้�ามูาได้�ในไบตั)ทำ�&สองSuan Dusit Rajabhat University (Computer Science) 17

Page 18: Computer  Architecture and Assembly  Language

การประกาศข้�อมู�ลส าหร�บการใช้�บร2การข้อง DOS หมูายเลข้ 09h แะละ 0Ah

การใช้�บร+การข้อง DOS หมายเลีข้ 0Ah : การอ%านข้�อคำวาม3. ส าหร�บไบตั)ถึ�ด้ ๆ ไปจะเป1นรห�สแอสก�ข้องข้�อความูทำ�&อ'านเข้�ามูาการประกาศข้�อมู�ลส าหร�บการเร�ยกใช้�ฟ6งก)ช้� &นน��จะสามูารถึประกาศได้�ด้�งส'วนข้องโปรแกรมูทำ�& 8.10

dseg segmentmaxlen db 30 ; Maximum of 30 charsmsglen db ? ; 2nd byte contains the

real length

msg db 30 dup (?) ; Message recieveddseg ends

ส'วนข้องโปรแกรมูทำ�& 8.10 ตั�วอย'างการประกาศข้�อมู�ลส าหร�บการใช้�บร2การข้อง DOS หมูายเลข้ 0Ah

Suan Dusit Rajabhat University (Computer Science) 18

Page 19: Computer  Architecture and Assembly  Language

การประกาศข้�อมู�ลส าหร�บการใช้�บร2การข้อง DOS หมูายเลข้ 09h แะละ 0Ah

การใช้�บร+การข้อง DOS หมายเลีข้ 0Ah : การอ%านข้�อคำวาม เมู�&อเราเร�ยกใช้�บร2การหมูายเลข้ 0Ah เราจะส'งตั าแหน'งข้อง maxlen ซ+&งเป1นตั าแหน'งเร2&มูตั�นข้องบ�ฟเฟอร)ทำ�&เราประกาศไปให�ก�บ DOS จากน��นเราสามูารถึอ'านความูจร2งข้องข้�อความูทำ�&อ'านมูาได้�ทำางตั�วแปร msglen ตั�วอย'างโปรแกรมูทำ�& 8.11 แสด้งการใช้�งานบร2การหมูายเลข้ 0Ah ในการอ'านข้�อความูและแสด้งข้�อความูน��นออกมูาโด้ยใช้�บร2การหมูายเลข้ 09hSuan Dusit Rajabhat University (Computer Science) 19

Page 20: Computer  Architecture and Assembly  Language

การประกาศข้�อมู�ลส าหร�บการใช้�บร2การข้อง DOS หมูายเลข้ 09h แะละ 0Ah

การใช้�บร+การข้อง DOS หมายเลีข้ 0Ah : การอ%านข้�อคำวาม ในการร�บข้�อความูน��นบร2การหมูายเลข้ 0Ah จะเก3บอ�กข้ระข้+�นบรรทำ�ด้ใหมู'ให�ด้�วย ด้�งน��นเราจะตั�องเพ�&อข้นาด้บ�ฟเฟอร)ทำ�&จะให�เก3บข้�อความูไว� 1 ไบตั)ด้�วย แตั'ในการค�นค'าความูยาวข้องข้�อความูมูาให� บร2การหมูายเลข้ 0Ah น��จะใส'ความูยาวทำ�&ไมู'รวมูอ�กข้ระข้+�นบรรทำ�ด้ใหมู'น�� เมู�&อเราร�บข้�อความูเสร3จแล�ว เคอร)เซอร)จะอย�'ทำ�&ตั�นบรรทำ�ด้ทำ�&เราป7อนข้�อความูน��น ด้�งน��นถึ�าเราพ2มูพ)ข้�อความูเด้2มูซ �าไปอ�กคร��งจะทำ าให�ข้�อความูทำ�บก�นและจะไมู'ทำราบว'ามู�การพ2มูพ)ข้�อความูออกมูาอย'างถึ�กตั�องหร�อไมู' ด้�งน��นเราจ+งใช้�ฟ6งก)ช้�&นหมูายเลข้ 09h ส�&งพ2มูพ)ช้.ด้อ�กข้ระส าหร�บการข้+�นบรรทำ�ด้ใหมู'ก'อนทำ�&จะส�&งพ2มูพ)ข้�อความูทำ�&ร �บมูาSuan Dusit Rajabhat University (Computer Science) 20

Page 21: Computer  Architecture and Assembly  Language

การประกาศข้�อมู�ลส าหร�บการใช้�บร2การข้อง DOS หมูายเลข้ 09h แะละ 0Ah

ข้�อความูทำ�&ส� &งพ2มูพ)ด้�วยบร2การหมูายเลข้ 09h จะตั�องจบด้�วยอ�กข้ระ ‘$’ ด้�งน��นเราจ+งตั�องก าหนด้ค'าในไบตั)ส.ด้ทำ�ายข้องข้�อความูทำ�&ร �บมูาด้�วยอ�กข้ระ ‘$’ โปรแกรมูน��จะทำ างานผู้2ด้พลาด้ถึ�าภายในข้�อความูมู�เคร�&องหมูาย ‘$’ อย�'ด้�วย

Suan Dusit Rajabhat University (Computer Science) 21

Page 22: Computer  Architecture and Assembly  Language

The EndLesson 8

Suan Dusit Rajabhat University (Computer Science)22