2.2.3 การแก้ไขแอดเดรส...

25
21/06/47 Machine Structure, Machin e Language, and Assembly Language 1 2.2.3 กกกกกกกกกกกกกกก กกกกกกกกกกกกกกกกกกกกก กกกกก • กกกกกกกกกกกกกกกกกกกกกกกกกกก กกกกกกกกก กกก กกกกกกกกกกกกกก • กกกกกกกกกกกกกกกกกกกกกกกกกก กกกกกกกกกกก กก กกกกกกกกกก กกกกกกกกกกกกกกกกกกก กกกกกกกกกก กกกกกกกกกกกกกกกกกกกก กกกกกกกกกกกกกกกกกกกก • กกกกกกกกกกกกกกก 3 กกกกกกกกกกก กกกกกกกกกก Load กกกกกกกกกก 49 กกกกกกกกกกกกกกกกกกกก กกกกกกกกกกกกกกกกกกกกก 3 กกกกกกกกกกก • กกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกก กกกกกกกกก 4 กกกกกกกกกกกกกกกกกกกก Load กกก Store กกกกกกกกกกกกกกกกกกกกกกกกก

Upload: ulric-wells

Post on 31-Dec-2015

23 views

Category:

Documents


0 download

DESCRIPTION

2.2.3 การแก้ไขแอดเดรส โดยการใช้อินเด็กรีจิสเตอร์. การแก้ปัญหาที่ได้ผลดีที่สุด คือการใช้ อินเด็กรีจิสเตอร์ เมื่อต้องมีการแก้ไขแอดเดรส แอดเดรสนั้น มีค่าเท่ากับ ค่าของเบสรีจิสเตอร์ บวกด้วยค่าของอินเด็กรีจิสเตอร์ บวกด้วยค่าของอ๊อฟเซท - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 2.2.3 การแก้ไขแอดเดรส โดยการใช้อินเด็กรีจิสเตอร์

21/06/47 Machine Structure, Machine Language, and Assembly Language

1

2.2.3 การแก�ไขแอดเดรส โดยการใช้�อ�นเด�กร�จิ�สเตอร�

• การแก�ปั�ญหาที่��ได้�ผลด้�ที่��สุ�ด้ คื�อการใช้� อ�นเด้�กร�จิ�สุเตอร� • เมื่��อต�องมื่�การแก�ไขแอด้เด้รสุ แอด้เด้รสุน#$น มื่�คื%าเที่%าก#บ

คื%าของเบสุร�จิ�สุเตอร� บวกด้�วยคื%าของอ�นเด้�กร�จิ�สุเตอร� บวกด้�วยคื%าของอ)อฟเซที่

• เราย#งใช้�ช้�ด้ของ 3 คื,าสุ#�งเด้�มื่ คื�อคื,าสุ#�ง Load คื,าสุ#�งบวก 49 และคื,าสุ#�งเก�บข�อมื่.ล เราใช้�คื,าสุ#�งวนล.ปัรอบ 3 คื,าสุ#�งน#$น

• เมื่��อมื่�การเปัล��ยนคื%าในต#วอ�นเด้�กร�จิ�สุเตอร�ที่�ละ 4 คื%าแอด้เด้รสุของคื,าสุ#�ง Load และ Store ก�จิะเปัล��ยนตามื่ไปัโด้ยปัร�ยาย

Page 2: 2.2.3 การแก้ไขแอดเดรส โดยการใช้อินเด็กรีจิสเตอร์

21/06/47 Machine Structure, Machine Language, and Assembly Language

2

Absoluteaddress

RelativeAddress

Instructions Comments

4850545862

::

948952956960964968972976980984988

026

1014

::

900904908912916920924928932936940

SR 4,4L 2,904(4,1)A 2,900(0,1)ST 2,904(4,1)A 4,904(0,1)Branch to 0

::4957912810151634

เคลี�ยร� Reg. 4โหลีด ข�อมู�ลีจิาก 904บวก 49เก�บข�อมู�ลีจิาก 904เพิ่� มู Index อ�ก 4

Page 3: 2.2.3 การแก้ไขแอดเดรส โดยการใช้อินเด็กรีจิสเตอร์

21/06/47 Machine Structure, Machine Language, and Assembly Language

3

Absoluteaddress

RelativeAddress

Instructions Comments

4850545862

::

948952956960964968972976980984988

026

1014

::

900904908912916920924928932936940

SR 4,4L 2,904(4,1)A 2,900(0,1)ST 2,904(4,1)A 4,904(0,1)Branch to 0

::4957912810151634

เคลี�ยร� Reg. 4โหลีด ข�อมู�ลีจิาก 904บวก 49เก�บข�อมู�ลีจิาก 904เพิ่� มู Index อ�ก 4

Page 4: 2.2.3 การแก้ไขแอดเดรส โดยการใช้อินเด็กรีจิสเตอร์

21/06/47 Machine Structure, Machine Language, and Assembly Language

4

Absoluteaddress

RelativeAddress

Instructions Comments

4850545862

::

948952956960964968972976980984988

026

1014

::

900904908912916920924928932936940

SR 4,4L 2,904(4,1)A 2,900(0,1)ST 2,904(4,1)A 4,904(0,1)Branch to 0

::49547912810151634

เคลี�ยร� Reg. 4โหลีด ข�อมู�ลีจิาก 904บวก 49เก�บข�อมู�ลีจิาก 904เพิ่� มู Index อ�ก 4

Page 5: 2.2.3 การแก้ไขแอดเดรส โดยการใช้อินเด็กรีจิสเตอร์

21/06/47 Machine Structure, Machine Language, and Assembly Language

5

Absoluteaddress

RelativeAddress

Instructions Comments

4850545862

::

948952956960964968972976980984988

026

1014

::

900904908912916920924928932936940

SR 4,4L 2,904(4,1)A 2,900(0,1)ST 2,904(4,1)A 4,904(0,1)Branch to 0

::495456912810151634

เคลี�ยร� Reg. 4โหลีด ข�อมู�ลีจิาก 908บวก 49เก�บข�อมู�ลีจิาก 908เพิ่� มู Index อ�ก 4

Page 6: 2.2.3 การแก้ไขแอดเดรส โดยการใช้อินเด็กรีจิสเตอร์

21/06/47 Machine Structure, Machine Language, and Assembly Language

6

Absoluteaddress

RelativeAddress

Instructions Comments

4850545862

::

948952956960964968972976980984988

026

1014

::

900904908912916920924928932936940

SR 4,4L 2,904(4,1)A 2,900(0,1)ST 2,904(4,1)A 4,904(0,1)Branch to 0

::4954565812810151634

เคลี�ยร� Reg. 4โหลีด ข�อมู�ลีจิาก 912บวก 49เก�บข�อมู�ลีจิาก 912เพิ่� มู Index อ�ก 4

Page 7: 2.2.3 การแก้ไขแอดเดรส โดยการใช้อินเด็กรีจิสเตอร์

21/06/47 Machine Structure, Machine Language, and Assembly Language

7

คื,าสุ#�งล.ปัวนในห#วข�อน�$ เราจิะกล%าวถึ1งการใช้�คื,าสุ#�งล.ปัวนในภาษา

เคืร��อง 2 ว�ธี� โด้ยการต#$งข�อสุมื่มื่�ต�ฐานเพิ่��มื่ด้#งน�$– สุมื่มื่�ต�ฐานที่�� 6. ที่�� Relative address เก�บคื%าของ 10– สุมื่มื่�ต�ฐานที่�� 7. ที่�� Relative address เก�บคื%าของ 1

(สุ,าหร#บว�ธี�แรกเที่%าน#$น)

Page 8: 2.2.3 การแก้ไขแอดเดรส โดยการใช้อินเด็กรีจิสเตอร์

21/06/47 Machine Structure, Machine Language, and Assembly Language

8

ว�ธี�ที่�� 1• ภายหล#งจิากที่�� 4 คื,าสุ#�งพิ่�$นฐานแรกที่,างาน มื่#นจิะ

เก�ด้ Sequence ของคื,าสุ#�ง ที่��มื่�การลบ 1 ออกจิากที่��เก�บหน%วยคืวามื่จิ,าช้#�วคืราว และตรวจิสุอบด้.ว%า คื%าที่��เก�บอย.%ย#งเปั7นบวกหร�อไมื่% ถึ�าเปั7นบวก มื่#นก�จิะกล#บข1$นไปัที่,างานที่��Relative address ต,าแหน%งที่�� 2

Page 9: 2.2.3 การแก้ไขแอดเดรส โดยการใช้อินเด็กรีจิสเตอร์

21/06/47 Machine Structure, Machine Language, and Assembly Language

9

Page 10: 2.2.3 การแก้ไขแอดเดรส โดยการใช้อินเด็กรีจิสเตอร์

21/06/47 Machine Structure, Machine Language, and Assembly Language

10

ว�ธี�ที่�� 2• คื,าสุ#�ง BCT (Branch on Count ด้#งแสุด้งในร.ปั

2.13) จิะที่,าหน�าที่��ให�โปัรแกรมื่วนจินคืรบล.ปั • ร�จิ�สุเตอร� 3 จิะมื่�คื%าลด้ลงที่�ละ 1 จินมื่�คื%าเหล�อ 0 ใน

ขณะที่��คื%าของ ร�จิ�สุเตอร� 3 เปั7นบวก คื%าของแอด้เด้รสุ คื�อ 6 บวกก#บคื%าของ ร�จิ�สุเตอร� 1 เมื่��อคื%าของมื่#นลด้ลงถึ1ง 0 ก�จิะไมื่%มื่�การวนล.ปัอ�ก

• คือมื่พิ่�วเตอร�เก�อบที่�กระบบ มื่�การใช้�คื,าสุ#�งปัระเภที่ Branch เพิ่��อวนล.ปัแบบน�$

Page 11: 2.2.3 การแก้ไขแอดเดรส โดยการใช้อินเด็กรีจิสเตอร์

21/06/47 Machine Structure, Machine Language, and Assembly Language

11

Page 12: 2.2.3 การแก้ไขแอดเดรส โดยการใช้อินเด็กรีจิสเตอร์

21/06/47 Machine Structure, Machine Language, and Assembly Language

12

โปัรแกรมื่ที่�� 2.13

• เราสุามื่ารถึลด้ขนาด้ของโปัรแกรมื่ โด้ยที่��ปั7นช้�ด้คื,าสุ#�ง 26 ไบที่� และช้�ด้ข�อมื่.ล 52 ไบที่� รวมื่เปั7น 78 ไบที่� ซ1�งโปัรแกรมื่แรกของเรา ใช้�ช้�ด้คื,าสุ#�ง 120 ไบที่� และช้�ด้ข�อมื่.ล 44 ไบที่� รวมื่เปั7น 164 ไบที่� ที่,าให�ปัระหย#ด้เน�$อที่��ไปัถึ1ง 86 ไบที่�

หมื่ายเหต� โปัรแกรมื่สุามื่ารถึเคืล��อนย�ายไปัวางย#งต,าแหน%งต%างๆ ของหน%วยคืวามื่จิ,า (เช้%น 400 แที่นที่��จิะเปั7น 48) โด้ยเพิ่�ยงแคื%เปัล��ยนคื%าของร�จิ�สุเตอร� 1 เที่%าน#$น

Page 13: 2.2.3 การแก้ไขแอดเดรส โดยการใช้อินเด็กรีจิสเตอร์

21/06/47 Machine Structure, Machine Language, and Assembly Language

13

2.3 ภาษาแอสเซมูบลี�$ เมื่��อผ.�ใช้�ต�องการต�ด้ต%อก#บคือมื่พิ่�วเตอร� เขา

สุามื่ารถึต�ด้ต%อก#บคือมื่พิ่�วเตอร�ได้�หลายภาษา

Page 14: 2.2.3 การแก้ไขแอดเดรส โดยการใช้อินเด็กรีจิสเตอร์

21/06/47 Machine Structure, Machine Language, and Assembly Language

14

ข�อด้� ของภาษาแอสุเซมื่บล�$• มื่#นเปั7น Mnemonic เช้%น เราเข�ยน ST แที่นที่��จิะ

เข�ยน 01010000 สุ,าหร#บคื,าสุ#�งเก�บข�อมื่.ล• ใช้�สุ#ญล#กษณ�แที่นแอด้เด้รสุ แที่นที่��จิะเปั7น

Absolute

• อ%านเข�าใจิได้�ง%าย• การก,าหนด้ข�อมื่.ลให�ก#บโปัรแกรมื่ กระที่,าได้�ง%าย

กว%า

Page 15: 2.2.3 การแก้ไขแอดเดรส โดยการใช้อินเด็กรีจิสเตอร์

21/06/47 Machine Structure, Machine Language, and Assembly Language

15

ข�อเสุ�ย ของภาษาแอสุเซมื่บล�$• ต�องการต#วแอสุเซมื่เบลอร� แปัลง Source

program ไปัเปั7น Object code

Page 16: 2.2.3 การแก้ไขแอดเดรส โดยการใช้อินเด็กรีจิสเตอร์

21/06/47 Machine Structure, Machine Language, and Assembly Language

16

2.3.1 โปรแกรมูที่� ใช้�ภาษาแอสเซมูบลี�$

• ข�อสุมื่มื่�ต�ฐานต%างๆ ที่��ก,าหนด้ไว�สุ,าหร#บการเข�ยนภาษาเคืร��อง ต�องถึ.กยกเล�ก

ต#วอย%างข�อสุมื่มื่�ต�ฐานอ#นหน1�ง ก�คื�อ คื%าแอด้เด้รสุ เร��มื่ต�น ในหน%วยคืวามื่จิ,าอย.%ที่�� Absolute แอด้เด้รสุ 48 ในฐานะของโปัรแกรมื่เมื่อร� เราไมื่%สุามื่ารถึร. �ล%วงหน�าได้�ว%า โปัรแกรมื่ของเราจิะถึ.กโหลด้ไปัวางไว�ที่��ไหนในหน%วยคืวามื่จิ,า

ด้#งน#$นจิ1งเปั7นหน�าที่��ของเรา ที่��จิะต�องโหลด้เบสุร�จิ�สุเตอร� ด้�วยแอด้เด้รสุโปัรแกรมื่ของเราในหน%วยคืวามื่จิ,า ก%อนที่��เราจิะให�โปัรแกรมื่ที่,างาน

คื,าสุ#�ง BALR เปั7นกลไกหน1�ง ที่��ใช้�ในการโหลด้ เบสุร�จิ�สุเตอร�

Page 17: 2.2.3 การแก้ไขแอดเดรส โดยการใช้อินเด็กรีจิสเตอร์

21/06/47 Machine Structure, Machine Language, and Assembly Language

17

Page 18: 2.2.3 การแก้ไขแอดเดรส โดยการใช้อินเด็กรีจิสเตอร์

21/06/47 Machine Structure, Machine Language, and Assembly Language

18

คื,าสุ#�ง Pseudo-op

• DC คื,าสุ#�งการก,าหนด้ต#วคืงที่�� (Define constant)

• DS คื,าสุ#�งการก,าหนด้ที่��เก�บ (Define storage)

• F คื,าสุ#�งวางคื%า ต#วเลข เช้%น 10, 4, และ 49 ในหน%วยคืวามื่จิ,า

ต�ด้ต%อก#น แบบ Fullword

ต#วอย%าง เช้%น DS 100F

ที่,าให� ต#วแอสุเซมื่เบลอร� จิองที่��เก�บข�อมื่.ลแบบ Fullword จิ,านวน 100 ที่��

Page 19: 2.2.3 การแก้ไขแอดเดรส โดยการใช้อินเด็กรีจิสเตอร์

21/06/47 Machine Structure, Machine Language, and Assembly Language

19

คื,าสุ#�ง USING

• USING เปั7น Pseudo-op ที่��บอกต#วแอสุเซมื่เบลอร�ว%า ร�จิ�สุเตอร�อะไร ใช้�เปั7นเบสุร�จิ�สุเตอร� และคื%าของเบสุร�จิ�สุเตอร�เปั7นเที่%าไร

ต#วอย%าง

TEST

BEGIN

START

BALR

USING

SR

15,0

BEGIN+2, 15

4,4

0

2

BALR

SR

15,0

4,4

Assembly Relative Mnemonic

Program

Page 20: 2.2.3 การแก้ไขแอดเดรส โดยการใช้อินเด็กรีจิสเตอร์

21/06/47 Machine Structure, Machine Language, and Assembly Language

20

คื,าสุ#�ง BALR

• BALR เปั7นคื,าสุ#�งที่��ใช้�โหลด้ร�จิ�สุเตอร�ด้�วยแอด้เด้รสุถึ#ด้ไปั และกระโด้ด้ไปัที่��แอด้เด้รสุในฟ:ลด้�ที่�� 2 เมื่��อ Operand ต#วที่�� 2 เปั7นร�จิ�สุเตอร� 0 (ด้#งแสุด้ง) มื่#นจิะที่,างานคื,าสุ#�งถึ#ด้ไปั

ต#วอย%าง

TEST

BEGIN

START

BALR

USING

SR

15,0

BEGIN+2, 15

4,4

0

2

BALR

SR

15,0

4,4

Assembly Relative Mnemonic

Program

Page 21: 2.2.3 การแก้ไขแอดเดรส โดยการใช้อินเด็กรีจิสเตอร์

21/06/47 Machine Structure, Machine Language, and Assembly Language

21

คื,าสุ#�ง START

1. START เปั7น Pseudo-op บอกต#วแอสุเซมื่เบลอร�ว%า โปัรแกรมื่จิะเร��มื่ต�นที่,างานที่��ต,าแหน%งไหน และยอมื่ให�โปัรแกรมื่เมื่อร� ต#$งช้��อโปัรแกรมื่อ�กด้�วย ต'วอย(าง

TEST

BEGIN

START

BALR

USING

SR

15,0

BEGIN+2, 15

4,4

0

2

BALR

SR

15,0

4,4

Assembly Relative Mnemonic

Program

Page 22: 2.2.3 การแก้ไขแอดเดรส โดยการใช้อินเด็กรีจิสเตอร์

21/06/47 Machine Structure, Machine Language, and Assembly Language

22

คื,าสุ#�ง END

1. END เปั7น Pseudo-op ที่��บอกต#วแอสุเซมื่เบลอร�ว%า คื,าสุ#�งสุ�ด้ที่�ายของโปัรแกรมื่มื่าถึ1งแล�ว เคืร��องจิะหย�ด้ที่,างานโปัรแกรมื่น�$

:

:

BASE

:

:

EQU

END

:

:

15

Assembly Relative Mnemonic

Program

Page 23: 2.2.3 การแก้ไขแอดเดรส โดยการใช้อินเด็กรีจิสเตอร์

21/06/47 Machine Structure, Machine Language, and Assembly Language

23

คื,าสุ#�ง BR 14

I. เป*นค+าส' งที่� โดด (Branch) ไปที่+าย'งต+าแหน(งแอดเดรสที่� บรรจิ,อย�(ใน ร�จิ�สเตอร� 14

II. ตามูข�อตกลีงที่' วไป ตอนเร�ยกใช้�โปรแกรมูย(อย ร�จิ�สเตอร� 14 จิะใช้�เก�บ ค(าร�เที่อร�นแอดเดรส (return address) ตอนที่� ที่+าค+าส' งในโปรแกรมูย(อยเสร�จิ

• ต'วอย(าง

:

BCT

BR

LTORG

3, *-16

14

:

24

28

BCT

BCR

3,6(0,15)

15,14

Assembly Relative Mnemonic

Program

Page 24: 2.2.3 การแก้ไขแอดเดรส โดยการใช้อินเด็กรีจิสเตอร์

21/06/47 Machine Structure, Machine Language, and Assembly Language

24

2.3.2 ต'วอย(างการใช้� Literals

ต#วอย%างA 2, =F’49’

Arguments คื�อ =F’49’ เปั7น Literals ซ1�งที่,าให�เก�ด้การสุร�างที่��เก�บข�อมื่.ล บรรจิ� 49

Page 25: 2.2.3 การแก้ไขแอดเดรส โดยการใช้อินเด็กรีจิสเตอร์

21/06/47 Machine Structure, Machine Language, and Assembly Language

25