Operating System 2

Download Report

Transcript Operating System 2

Computer Architecture
and Assembly Language
By Juthawut Chantharamalee
Suan Dusit Rajabhat University (Computer Science)
1
่
บทที่ 10 คำสังกระโดดและกำร
กระทำซำ้
(Jump and Iteration
Loop)
บทที่ 2
Suan Dusit Rajabhat University (Computer Science)
2
่
คำสังกระโดด
ั่ กระโดดเป็ นคำสงั่ ทีส
 คำสง
่ งั่ ให ้หน่วยประมวลผล
กระโดดไปทำงำนทีต
่ ำแหน่งอืน
่ รูปแบบทั่วไป
ของคำสงั่ กระโดดคือ
Jxx label
คำสงั่ กระโดดแบ่งได ้เป็ น 2 กลุม
่ คือ คำสงั่
กระโดดแบบไม่มเี งือ
่ นไข และคำสงั่ กระโดดแบบมี
เงือ
่ นไข คำสงั่ กระโดดแบบไม่มเี งือ
่ นไขคือคำสงั่
JMP สว่ นในกลุม
่ ของคำสงั่ กระโดดแบบมีเงือ
่ นไข
แบบคร่ำว ๆ ออกเป็ นสองกลุม
่ คือกลุม
่ ซงึ่ พิจำรณำ
กำรกระโดดจำกค่ำในแฟล็ก และกลุม
่ ทีพ
่ จ
ิ ำรณำ
่ นใหญ่คำสงั่
กำรกระโดดจำกค่
ำในรี
จส
ิ เตอร์
3
Suan Dusit Rajabhat University
(Computer
Science) สว
่
คำสังกระโดด
ตำรำงที่ 10.1 คำสงั่ กระโดดต่ำงๆ
Suan Dusit Rajabhat University (Computer Science)
4
่
คำสังกระโดด
ตำรำงที่ 10.1 คำสงั่ กระโดดต่ำงๆ
Suan Dusit Rajabhat University (Computer Science)
5
่
คำสังกระโดด
ตำรำงที่ 10.1 คำสงั่ กระโดดต่ำงๆ
Suan Dusit Rajabhat University (Computer Science)
6
่
คำสังกระโดด
ั่ ต่ำง ๆ เหล่ำนีจ
้
 คำสง
้ ะใชในกำรสร
้ำงโครงสร ้ำง
ควบคุมกำรทำงำนของโปรแกรม โดยจะใช ้
ประกอบกับคำสงั่ CMP ดังทีไ่ ด ้กล่ำวมำแล ้ว
้
ยกเว ้นคำสงั่ JCXZ จะนิยมใชประกอบกั
บกลุม
่ คำ
้
สงั่ ประเภทกำรทำซ้ำ (LOOP) คำสงั่ ทีใ่ ชควบคุ
ม
้
กำรกระโดดแบบมีเงือ
่ นไขทีใ่ ชกำรเปรี
ยบเทียบ
ระหว่ำงโอเปอร์แรนด์สองตัวของคำสงั่ CMP มี
สองกลุม
่ คือ กลุม
่ ทีค
่ ด
ิ กำรเปรียบเทียบเป็ นกำร
เปรียบเทียบของเลขไม่คด
ิ เครือ
่ งหมำย (JA JB JAE
JBE) และกลุม
่ ทีค
่ ด
ิ เป็ นเลขคิดเครือ
่ งหมำย (JG JL
้
่
ั
JGE
JLE)
ในกำรใช
ค
ำส
ง
กระโดดทัง้ สองกลุม
่ นีเ้ รำ 7
Suan Dusit Rajabhat University (Computer Science)
จะต ้องพิจำรณำข ้อมูลทีเ่ ปรียบเทียบกันด ้วย
ตัวอย่ำง
Suan Dusit Rajabhat University (Computer Science)
8
่
คำสังวนรอบ
้
คำสงั่ ทีใ่ ชกระท
ำซ้ำใน 8086 ยังมีอก
ี กลุม
่ หนึง่ ทีใ่ ชค่้ ำใน
รีจส
ิ เตอร์ CX (Counter Register) ในกำรนับจำนวนครัง้ ของ
กำรทำงำน คำสงั่ กลุม
่ นีค
้ อ
ื LOOP LOOPZ และ LOOPNZ
คำสัง่ LOOP
คำสงั่ LOOP จะลดค่ำของรีจส
ิ เตอร์ CX ลงหนึง่ . ถ ้ำ CX มี
ค่ำไม่เท่ำกับศูนย์คำสงั่ LOOP จะกระโดดไปทำงำนทีเ่ ล
เบลทีร่ ะบุ รูปแบบของคำสงั่ LOOP เป็ นดังนี้
LOOP label
คำสงั่ LOOP จะลดค่ำของรีจส
ิ เตอร์ CX โดยไม่กระทบ
กับแฟล็ก.นั่นคือคำสงั่ LOOP มีผลเหมือนคำสงั่
DEC
CX
JNZ
labelScience)
Suan Dusit Rajabhat University
(Computer
9
ตัวอย่ำงกำรใช้คำสัง่ LOOP
โปรแกรมตัวอย่ำงนีค
้ ำนวณผลรวมของเลขตัง้ แต่ 1
ถึง 20
mov cx,20 ; ทำซ้ำ 20 ครัง้
mov bl,1 ; เริม
่ จำก 1
mov dx,0 ; กำหนดค่ำเริม
่ ต ้นให ้กับ
ผลรวม
addonenumber:
add dl,bl ; บวก 8 บิตล่ำง
adc dh,0 ; รวมตัวทด
inc bl
; ตัวถัดไป
Suan Dusit Rajabhat University (Computer Science)
10
คำสัง่ JCXZ
 ในกรณีท ี่ CX มีคำ
่ เท่ำกับศูนย์กอ
่ นกำรกระทำซ้ำโดย
ใชค้ ำสงั่ LOOP ผลลัพธ์จำกกำรลดค่ำจะมีคำ่ เท่ำกับ
0FFFFh ทำให ้จำนวนรอบของกำรทำงำนไม่ถก
ู ต ้อง
เรำนิยมใชค้ ำสงั่ JCXZ ในกำรป้ องกันควำมผิดพลำด
ในกรณีทค
ี่ ำ่ ของรีจส
ิ เตอร์ CX มีคำ่ เท่ำกับ 0 โดย
ปกติถ ้ำ CX มีคำ่ เท่ำกับศูนย์ เรำจะ สงั่ ให ้โปรแกรม
ิ้ สุดกำรกระทำซ้ำ ดังตัวอย่ำง
กระโดดไปทีจ
่ ด
ุ สน
initialization
jcxz
endloop
; CX =0 ?
label1:
actions
Suan Dusit Rajabhat
University
(Computer Science)
loop
label1
; loop
11
คำสัง่ LOOPZ และ LOOPNZ
ั่ LOOPZ และ LOOPNZ มีลักษณะทำงำน
 คำสง
เหมือนคำสงั่ LOOP แต่จะนำค่ำของแฟล็กมำใช ้
ในกำรพิจำรณำกำรกระโดดด ้วย. คำสงั่ LOOPZ
จะลดค่ำของรีจส
ิ เตอร์ CX โดยไม่กระทบแฟล็ก
และจะกระโดดไปทีเ่ ลเบลทีร่ ะบุเมือ
่ CX มีคำ่ ไม่
เท่ำกับศูนย์ และ แฟล็กศูนย์มค
ี ำ่ เป็ น 1 (ผลลัพธ์
ของคำสงั่ ก่อนหน ้ำมีคำ่ เท่ำกับศูนย์) สงั เกตว่ำ
คำสงั่ LOOPZ จะทำงำนเหมือนคำสงั่ LOOP แต่
แฟล็กศูนย์จะต ้องมีคำ่ เป็ นหนึง่ ด ้วย คำสงั่ นีถ
้ งึ จะ
กระโดดไปทีเ่ ลเบลทีก
่ ำหนด ในทำนองกลับกัน
่
ั
ค
ำส
ง
LOOPNZ จะกระโดดไปทำงำนเมือ
่ CX มีคำ่ 12
Suan Dusit Rajabhat University (Computer Science)
ไม่เท่ำกับศูนย์และแฟล็กศูนย์มค
ี ำ่ เป็ น 0 คำสงั่ ทัง้
ตัวอย่ำงคำสงั่ LOOPZ และ LOOPNZ
Suan Dusit Rajabhat University (Computer Science)
13
อธิบำยกำรทำงำนของโปรแกรม
 ในตัวอย่ำงแรกนีค
้ ำสงั่ DEC BX,2 ในโปรแกรม
ก่อนทีจ
่ ะถึงสว่ นทีท
่ ำงำนซ้ำเป็ นกำรปรับค่ำของ
BX ให ้สอดคล ้องกับกำรปรับค่ำในสว่ นทีท
่ ำงำน
ซ้ำ. กำรลดค่ำของ BX ในกรณีนท
ี้ ำให ้กำร
เปรียบเทียบครอบคลุมถึงค่ำแรกของข ้อมูลด ้วย.
้
่ นีใ้ นโปรแกรมอำจทำให ้
กำรใชเทคนิ
คเชน
โปรแกรมทำงำนได ้เร็วขึน
้ แต่อำจทำให ้ผู ้อืน
่ ทีม
่ ำ
อ่ำนโปรแกรมของเรำเข ้ำใจผิดได ้. ดังนัน
้ ถ ้ำเรำ
้
่ มำยเหตุ
ใชเทคนิ
คต่ำง ๆ ในโปรแกรม เรำควรใสห
ั เจน และโดยปกติเรำยังสำมำรถใชวิ้ ธอ
ให ้ชด
ี น
ื่ ใน
กำรจัดกำรกับข ้อมูลตัวแรกได ้ ดังตัวอย่ำงถัดไป 14
Suan Dusit Rajabhat University (Computer Science)
ตัวอย่ำงคำสงั่ LOOPZ และ LOOPNZ
Suan Dusit Rajabhat University (Computer Science)
15
ตัวอย่ำงโปรแกรมพิมพ์คำ่ ของรหัสแอสกี
 โปรแกรมตัวอย่ำงต่อไปนีเ้ ป็ นโปรแกรมทีพ
่ ม
ิ พ์คำ่
ิ หก. กำร
ของรหัสแอสกีทรี่ ับมำเป็ นเลขฐำนสบ
ิ หกนัน
แสดงตัวเลขเป็ นเลขฐำนสบ
้ มีควำมยุง่ ยำก
้
เพรำะอักษร ‘0’ ถึง ‘F’ ทีจ
่ ะใชในกำรแสดงค่
ำนัน
้ มี
รหัสแอสกีทแ
ี่ ยกออกเป็ นสองชว่ ง. ชว่ งแรกเป็ น
ชว่ ยของตัวเลขเริม
่ ทีร่ หัส 48 ของเลขศูนย์ อีก
กลุม
่ หนึง่ คือชว่ งของตัวอักษรเริม
่ ทีร่ หัส 65 ของตัว
‘A’. ดังนัน
้ ในกำรแสดงผลเรำจะต ้องตรวจสอบ
้
ตัวเลขในแต่ละหลักว่ำอยูใ่ นชว่ งใดโดยใชกำร
เปรียบเทียบ
Suan Dusit Rajabhat University (Computer Science)
16
ตัวอย่ำงโปรแกรมพิมพ์คำ่ ของรหัสแอสกี
Suan Dusit Rajabhat University (Computer Science)
17
ตัวอย่ำงโปรแกรมพิมพ์คำ่ ของรหัสแอสกี (ต่อ)
Suan Dusit Rajabhat University (Computer Science)
18
ตัวอย่ำงโปรแกรมทีร่ ับข ้อควำมจำกผู ้ใช ้
 ตัวอย่ำงนีเ้ ป็ นโปรแกรมทีร่ ับข ้อควำมจำกผู ้ใช ้
และรับตัวอักษรทีผ
่ ู ้ใชต้ ้องกำรตรวจสอบว่ำมีใน
ข ้อควำมหรือไม่. โปรแกรมจะแสดงคำตอบว่ำ
YES หรือ NO โปรแกรมนีค
้ ้นหำตัวอักษรโดยใช ้
คำสงั่ LOOPNZ
Suan Dusit Rajabhat University (Computer Science)
19
ตัวอย่ำงโปรแกรมทีร่ ับข ้อควำมจำกผู ้ใช ้
Suan Dusit Rajabhat University (Computer Science)
20
ตัวอย่ำงโปรแกรมทีร่ ับข ้อควำมจำกผู ้ใช ้
Suan Dusit Rajabhat University (Computer Science)
21
สรุป
 โปรแกรมตัวอย่ำงต่อไปนีเ้ ป็ นโปรแกรมทีพ
่ ม
ิ พ์คำ่
ิ หก. กำร
ของรหัสแอสกีทรี่ ับมำเป็ นเลขฐำนสบ
ิ หกนัน
แสดงตัวเลขเป็ นเลขฐำนสบ
้ มีควำมยุง่ ยำก
้
เพรำะอักษร ‘0’ ถึง ‘F’ ทีจ
่ ะใชในกำรแสดงค่
ำนัน
้ มี
รหัสแอสกีทแ
ี่ ยกออกเป็ นสองชว่ ง. ชว่ งแรกเป็ น
ชว่ ยของตัวเลขเริม
่ ทีร่ หัส 48 ของเลขศูนย์ อีก
กลุม
่ หนึง่ คือชว่ งของตัวอักษรเริม
่ ทีร่ หัส 65 ของตัว
‘A’. ดังนัน
้ ในกำรแสดงผลเรำจะต ้องตรวจสอบ
้
ตัวเลขในแต่ละหลักว่ำอยูใ่ นชว่ งใดโดยใชกำร
เปรียบเทียบ
Suan Dusit Rajabhat University (Computer Science)
22
The End
Lesson 10
Suan Dusit Rajabhat University (Computer Science)
23