2.2.3 การแก้ไขแอดเดรส...
DESCRIPTION
2.2.3 การแก้ไขแอดเดรส โดยการใช้อินเด็กรีจิสเตอร์. การแก้ปัญหาที่ได้ผลดีที่สุด คือการใช้ อินเด็กรีจิสเตอร์ เมื่อต้องมีการแก้ไขแอดเดรส แอดเดรสนั้น มีค่าเท่ากับ ค่าของเบสรีจิสเตอร์ บวกด้วยค่าของอินเด็กรีจิสเตอร์ บวกด้วยค่าของอ๊อฟเซท - PowerPoint PPT PresentationTRANSCRIPT
21/06/47 Machine Structure, Machine Language, and Assembly Language
1
2.2.3 การแก�ไขแอดเดรส โดยการใช้�อ�นเด�กร�จิ�สเตอร�
• การแก�ปั�ญหาที่��ได้�ผลด้�ที่��สุ�ด้ คื�อการใช้� อ�นเด้�กร�จิ�สุเตอร� • เมื่��อต�องมื่�การแก�ไขแอด้เด้รสุ แอด้เด้รสุน#$น มื่�คื%าเที่%าก#บ
คื%าของเบสุร�จิ�สุเตอร� บวกด้�วยคื%าของอ�นเด้�กร�จิ�สุเตอร� บวกด้�วยคื%าของอ)อฟเซที่
• เราย#งใช้�ช้�ด้ของ 3 คื,าสุ#�งเด้�มื่ คื�อคื,าสุ#�ง Load คื,าสุ#�งบวก 49 และคื,าสุ#�งเก�บข�อมื่.ล เราใช้�คื,าสุ#�งวนล.ปัรอบ 3 คื,าสุ#�งน#$น
• เมื่��อมื่�การเปัล��ยนคื%าในต#วอ�นเด้�กร�จิ�สุเตอร�ที่�ละ 4 คื%าแอด้เด้รสุของคื,าสุ#�ง Load และ Store ก�จิะเปัล��ยนตามื่ไปัโด้ยปัร�ยาย
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
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
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
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
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
21/06/47 Machine Structure, Machine Language, and Assembly Language
7
คื,าสุ#�งล.ปัวนในห#วข�อน�$ เราจิะกล%าวถึ1งการใช้�คื,าสุ#�งล.ปัวนในภาษา
เคืร��อง 2 ว�ธี� โด้ยการต#$งข�อสุมื่มื่�ต�ฐานเพิ่��มื่ด้#งน�$– สุมื่มื่�ต�ฐานที่�� 6. ที่�� Relative address เก�บคื%าของ 10– สุมื่มื่�ต�ฐานที่�� 7. ที่�� Relative address เก�บคื%าของ 1
(สุ,าหร#บว�ธี�แรกเที่%าน#$น)
21/06/47 Machine Structure, Machine Language, and Assembly Language
8
ว�ธี�ที่�� 1• ภายหล#งจิากที่�� 4 คื,าสุ#�งพิ่�$นฐานแรกที่,างาน มื่#นจิะ
เก�ด้ Sequence ของคื,าสุ#�ง ที่��มื่�การลบ 1 ออกจิากที่��เก�บหน%วยคืวามื่จิ,าช้#�วคืราว และตรวจิสุอบด้.ว%า คื%าที่��เก�บอย.%ย#งเปั7นบวกหร�อไมื่% ถึ�าเปั7นบวก มื่#นก�จิะกล#บข1$นไปัที่,างานที่��Relative address ต,าแหน%งที่�� 2
21/06/47 Machine Structure, Machine Language, and Assembly Language
9
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 เพิ่��อวนล.ปัแบบน�$
21/06/47 Machine Structure, Machine Language, and Assembly Language
11
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 เที่%าน#$น
21/06/47 Machine Structure, Machine Language, and Assembly Language
13
2.3 ภาษาแอสเซมูบลี�$ เมื่��อผ.�ใช้�ต�องการต�ด้ต%อก#บคือมื่พิ่�วเตอร� เขา
สุามื่ารถึต�ด้ต%อก#บคือมื่พิ่�วเตอร�ได้�หลายภาษา
21/06/47 Machine Structure, Machine Language, and Assembly Language
14
ข�อด้� ของภาษาแอสุเซมื่บล�$• มื่#นเปั7น Mnemonic เช้%น เราเข�ยน ST แที่นที่��จิะ
เข�ยน 01010000 สุ,าหร#บคื,าสุ#�งเก�บข�อมื่.ล• ใช้�สุ#ญล#กษณ�แที่นแอด้เด้รสุ แที่นที่��จิะเปั7น
Absolute
• อ%านเข�าใจิได้�ง%าย• การก,าหนด้ข�อมื่.ลให�ก#บโปัรแกรมื่ กระที่,าได้�ง%าย
กว%า
21/06/47 Machine Structure, Machine Language, and Assembly Language
15
ข�อเสุ�ย ของภาษาแอสุเซมื่บล�$• ต�องการต#วแอสุเซมื่เบลอร� แปัลง Source
program ไปัเปั7น Object code
21/06/47 Machine Structure, Machine Language, and Assembly Language
16
2.3.1 โปรแกรมูที่� ใช้�ภาษาแอสเซมูบลี�$
• ข�อสุมื่มื่�ต�ฐานต%างๆ ที่��ก,าหนด้ไว�สุ,าหร#บการเข�ยนภาษาเคืร��อง ต�องถึ.กยกเล�ก
ต#วอย%างข�อสุมื่มื่�ต�ฐานอ#นหน1�ง ก�คื�อ คื%าแอด้เด้รสุ เร��มื่ต�น ในหน%วยคืวามื่จิ,าอย.%ที่�� Absolute แอด้เด้รสุ 48 ในฐานะของโปัรแกรมื่เมื่อร� เราไมื่%สุามื่ารถึร. �ล%วงหน�าได้�ว%า โปัรแกรมื่ของเราจิะถึ.กโหลด้ไปัวางไว�ที่��ไหนในหน%วยคืวามื่จิ,า
ด้#งน#$นจิ1งเปั7นหน�าที่��ของเรา ที่��จิะต�องโหลด้เบสุร�จิ�สุเตอร� ด้�วยแอด้เด้รสุโปัรแกรมื่ของเราในหน%วยคืวามื่จิ,า ก%อนที่��เราจิะให�โปัรแกรมื่ที่,างาน
คื,าสุ#�ง BALR เปั7นกลไกหน1�ง ที่��ใช้�ในการโหลด้ เบสุร�จิ�สุเตอร�
21/06/47 Machine Structure, Machine Language, and Assembly Language
17
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 ที่��
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
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
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
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
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
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
21/06/47 Machine Structure, Machine Language, and Assembly Language
25