Arithmetic Instruction

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
คณิตคิดเร็วโดยใช้นิ้วมือ
Advertisements

โปรแกรมฝึกหัด การเลื่อนและคลิกเมาส์
ที่ โรงเรียน เฉลี่ย 1 บ้านหนองหว้า บ้านสะเดาหวาน
การประยุกต์ Logic Gates ภาค 2
พลังงานในกระบวนการทางความร้อน : กฎข้อที่หนึ่งของอุณหพลศาสตร์
การซ้อนทับกัน และคลื่นนิ่ง
เลขฐานต่าง ๆ อ.มิ่งขวัญ กันจินะ.
Computer Programming 1 1.หากต้องการพิมพ์ให้ได้ผลลัพธ์ดังนี้ต้องเขียน code อย่างไร (ใช้for)
แนวทางการรายงานผลการปฏิบัติราชการโดยผ่านระบบเครือข่ายอินเตอร์เน็ต
เปรียบเทียบจำนวนประชากรทั้งหมดจากฐาน DBPop Original กับจำนวนประชากรทั้งหมดที่จังหวัดถือเป็นเป้าหมาย จำนวน (คน) 98.08% % จังหวัด.
CS Assembly Language Programming
CS Assembly Language Programming
CS Assembly Language Programming
CS Assembly Language Programming
สถาปัตยกรรมคอมพิวเตอร์ (Computer Architecture)
LAB # 3 Computer Programming 1
การเลื่อนเงินเดือนข้าราชการ
การสืบค้นข้อมูลจาก Web OPAC
ทศนิยมและเศษส่วน F M B N โดย นางสาวสุพรรษา ธรรมสโรช.
NUMBER SYSTEM เลขฐานสิบ (Decimal Number) เลขฐานสอง (Binary Number)
จำนวนนับใดๆ ที่หารจำนวนนับที่กำหนดให้ได้ลงตัว เรียกว่า ตัวประกอบของจำนวนนับ จำนวนนับ สามารถเรียกอีกอย่างว่า จำนวนเต็มบวก หรือจำนวนธรรมชาติ ซึ่งเราสามารถนำจำนวนนับเหล่านี้มา.
Valent Bond Theory (VBT) ครูวิชาการสาขาเคมี โรงเรียนมหิดลวิทยานุสรณ์
Number Representations
กลุ่มสาระการเรียนรู้ คณิตศาสตร์ โรงเรียนบ้านหนองกุง อำเภอนาเชือก
การขอเบิกเงินนอกงบประมาณ
การจัดการข้อมูลด้วยคอมพิวเตอร์
Control Transfer Instructions
Addressing Modes Assembly Programming.
BIT & STRING OPERATIONS
กระบวนการคิดทางคณิตศาสตร์
การเขียนโปรแกรมเชิงวัตถุ ด้วยภาษาจาวา
จำนวนทั้งหมด ( Whole Numbers )
เรื่อง ความรู้เกี่ยวกับการจัดเก็บภาษีสุรา
ASSIGN3-4. InstructionResult Z-FlagC-FlagP-FlagS-FlagO-Flag MOV AL,9Eh 9Eh H ????? ADDAL,9Eh 3C ADD AL,1Eh 5A
แบบฝึกหัด 24/12/09. เมื่อคอมพ์ทำคำสั่งต่อไปนี้ จงแสดง ผลลัพธ์และ ค่าแฟลกต่างๆ InstructionResult Z-FlagC-FlagP- Flag S- Flag O- Flag MOV AL,3h Inc AL Mov.
Kampol chanchoengpan it สถาปัตยกรรมคอมพิวเตอร์ Arithmetic and Logic Unit 1.
ข้อมูลเศรษฐกิจการค้า
ความก้าวหน้าระดับความสำเร็จ การปฏิบัติราชการของปฏิรูปที่ดิน จังหวัด 5 ครั้ง ณ 30 มิถุนายน 2555 สำนักวิชาการและ แผนงาน.
ความก้าวหน้าระดับความสำเร็จ การปฏิบัติราชการของปฏิรูปที่ดิน จังหวัด 5 ครั้ง ณ 31 พฤษภาคม 2555.
ความก้าวหน้าระดับความสำเร็จ การปฏิบัติราชการของปฏิรูปที่ดิน จังหวัด 5 ครั้ง ณ 15 มิถุนายน 2555.
ค21201 คณิตศาสตร์เพิ่มเติม 1
ณัฏฐวุฒิ เอี่ยมอินทร์
สถาปัตยกรรมคอมพิวเตอร์ (Computer Architecture)
Extra_08_Test_Modular_Calculator
CS Assembly Language Programming
ระบบคอมพิวเตอร์และการประมวลผล
วิชาคณิตศาสตร์ ชั้นประถมศึกษาปีที่6
การกระโดดและการวนรอบ
ค21201 คณิตศาสตร์เพิ่มเติม 1
F M B N สมบัติของจำนวนนับ ตัวคูณร่วมน้อย (ค.ร.น.).
สรุปสถิติ ค่ากลาง ค่าเฉลี่ยเลขคณิต เรียงข้อมูล ตำแหน่งกลาง มัธยฐาน
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
หน่วยการเรียนรู้ที่ 7 ความรู้เบื้องต้นเกี่ยวกับจำนวนจริง
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
ภาษาอังกฤษเพื่อการสื่อสาร อ32204
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
จำนวนจริง จำนวนอตรรกยะ จำนวนตรรกยะ เศษส่วน จำนวนเต็ม จำนวนเต็มบวก
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
การค้นในปริภูมิสถานะ
หน่วยการเรียนรู้ที่ 7 ความรู้เบื้องต้นเกี่ยวกับจำนวนจริง
หน่วยการเรียนรู้ที่ 7 ความรู้เบื้องต้นเกี่ยวกับจำนวนจริง
วิธีเรียงสับเปลี่ยนและวิธีจัดหมู่
กราฟเบื้องต้น.
ตัวแปร และชนิดข้อมูล.
โครงสร้างข้อมูลแบบ สแตก (stack)
กราฟเบื้องต้น.
ผลการประเมิน คุณภาพการศึกษาขั้นพื้นฐาน ปีการศึกษา
1 LAN Implementation Sanchai Yeewiyom School of Information & Communication Technology Naresuan University, Phayao Campus.
ใบสำเนางานนำเสนอ:

Arithmetic Instruction Suthida Chaichomchuen std@kmitnb.ac.th

Arithmetic Instruction เป็นคำสั่งที่ใช้ในการคำนวณทางคณิตศาสตร์ เช่น บวก ลบ คูณ หาร กับเลขฐานสองหรือเลขฐานสิบ

ค่าที่ใช้ในการคำนวณ เลขฐานสอง unsigned signed เลขฐานสิบ packed unpacked

เลขฐานสอง มีความยาว 8/16 บิต Unsigned : ทุกบิตจะแทนค่าของข้อมูล 8 บิต : 0 ถึง 255 16 บิต : 0 ถึง 65535 Signed : บิตสูงสุดจะบอกเครื่องหมาย 8 บิต : -128 ถึง 127 16 บิต : -32768 ถึง 32767

เลขฐานสิบ เก็บค่าเป็นไบต์ Packed (00-99) Unpacked (0-9) บิต 0-3 เก็บค่าในหลักที่ต่ำ (BCD) บิต 4-7 เก็บค่าในหลักที่สูง (BCD) Unpacked (0-9) บิต 0-3 เก็บค่า BCD 1 ค่า บิต 4-7 เก็บค่า [0:คูณ,หาร] [?:บวก,ลบ]

Addition Instruction บวก operand 8/16 บิต ADD ADC : ADD with Carry destination = destination+source ADC : ADD with Carry destination = destination+source+carry

ADD & ADC [Label:] ADD/ADC register, register [Label:] ADD/ADC memory, register [Label:] ADD/ADC register, memory [Label:] ADD/ADC register, immediate [Label:] ADD/ADC memory, immediate

ADD & ADC ADD AL, BL ADD AL, BYTE ADD BYTE, AL ADD BL, 10H ADD BYTE, 25H

AAA : ASCII Adjust After Addition ปรับค่าของผลลัพธ์จากการบวกเลขฐานสิบ โดยที่ผลลัพธ์ที่จะปรับค่าต้องอยู่ใน AL AAA จะเปลี่ยนค่าใน AL เป็น unpacked decimal digit โดยจะพิจารณาจาก ถ้า 4 บิตล่างของ AL มีค่า 0-9 จะทำให้ 4 บิตบนของ AL มีค่า 0 แฟลก AF และ CF เป็น 0 ด้วย

AAA พิจารณาจาก (ต่อ) ถ้า 4 บิตล่างของ AL มีค่ามากกว่า 9 หรือ AF มีค่า 1 จะบวก 6 ให้กับ AL บวก 1 กับ AH SET AF และ CF เป็น 1 4 บิตบนของ AL มีค่าเป็น 0

DAA : Decimal Adjustment After Addition การทำงานคล้าย AAA DAA จะเปลี่ยนค่าใน AL เป็น packed decimal digit 2 ค่า โดยจะพิจารณาจากตัวเลข 2 ตัว ถ้า 4 บิตล่างของ AL มีค่ามากกว่า 9 หรือ AF มีค่า 1 จะบวกค่า 6 กับ AL และให้ AF เป็น 1

DAA พิจารณา (ต่อ) ถ้า 4 บิตบนของ AL มีค่ามากกว่า 9 หรือ AF มีค่า 1

DAA AL=‘5’ BL=‘9’ ADD AL, BL AAA AL=‘59’ BL=‘35’ DAA

Increment Instruction บวกค่า 1 ให้กับรีจิสเตอร์หรือหน่วยความจำ [label:] INC register/memory Example INC CX INC AL INC MEM_BYTE INC MEM_WORD [BX]

Subtraction Instruction ลบค่า operand 8/16 บิต CF ทำหน้าที่เหมือนตัวยืม SUB destination = destination-source SBB : Subtract with Borrow destination = destination-source-carry

SUB & SBB SUB AX,BX SUB AX,WORD SUB WORD,AX SUB BX,1000H SUB WORD,256H

SUB & SBB ถ้าต้องการลบค่า 32 บิต ใช้คำสั่งดังนี้ กำหนดตัวตั้งใน BX, AX ตัวลบอยู่ใน DX, CX SUB AX, CX SBB BX, DX

AAS : ASCII Adjust for Subtraction ปรับค่าของผลลัพธ์จากการลบเลขฐานสิบ โดยที่ผลลัพธ์ที่จะปรับค่าต้องอยู่ใน AL AAS จะเปลี่ยนค่าใน AL เป็น unpacked decimal digit โดยจะพิจารณาจาก ถ้า 4 บิตล่างของ AL มีค่า 0-9 จะทำให้ 4 บิตบนของ AL มีค่า 0 แฟลก AF และ CF เป็น 0 ด้วย

AAS พิจารณาจาก (ต่อ) ถ้า 4 บิตล่างของ AL มีค่ามากกว่า 9 หรือ AF มีค่า 1 จะลบ 6 จาก AL ลบ 1 จาก AH SET AF และ CF เป็น 1 4 บิตบนของ AL มีค่าเป็น 0

DAS : Decimal Adjustment for Subtraction การทำงานคล้าย AAS DAS จะเปลี่ยนค่าใน AL เป็น packed decimal digit 2 ค่า โดยจะพิจารณาจากตัวเลข 2 ตัว ถ้า 4 บิตล่างของ AL มีค่ามากกว่า 9 หรือ AF มีค่า 1 จะลบค่า 6 ออกจาก AL และให้ AF เป็น 1

DAS พิจารณา (ต่อ) ถ้า 4 บิตบนของ AL มีค่ามากกว่า 9 หรือ AF มีค่า 1

AAS & DAS AL=‘7’ BL=‘4’ SUB AL, BL AAS AL=‘4’ CL=‘7’ SUB AL, CL

AAS & DAS AL=‘86’ BH=‘57’ SUB AL, BH DAS AL=‘45’ CH=‘63’ SUB AL, CH

Decrement Instruction ลบค่า 1 ให้กับรีจิสเตอร์หรือหน่วยความจำ [label:] DEC register/memory Example DEC CX DEC AL DEC MEM_BYTE DEC MEM_WORD [BX]

Negate Instruction เป็นคำสั่งในการหาค่า 2’s Complement [label:] NEG register/memory Example NEG CL NEG BX NEG MEM_BYTE NEG MEM_WORD [BX]

Compare Instruction CMP : Compare Destination to Source ลบค่า source ออกจาก destination แต่ไม่ได้เก็บค่าไว้ มีผลต่อแฟลก AF, CF, OF, PF, SF และ ZF ใช้ในการตรวจสอบค่าแฟลก เพื่อตัดสินใจในการย้ายคำสั่งการทำงานไปยังจุดต่าง ๆ

Source < Destination x x 0 0 Source = Destination x x 1 0 Compare Instruction Unsigned Operands Condition OF SF ZF CF Source < Destination x x 0 0 Source = Destination x x 1 0 Source > Destination x x 0 1

Source < Destination 0/1 0 0 x Source = Destination 0 0 1 x Compare Instruction Signed Operands Condition OF SF ZF CF Source < Destination 0/1 0 0 x Source = Destination 0 0 1 x Source > Destination 0/1 1 0 x

CMP [label:] CMP register/memory, register/memory/ immediate Example CMP DX, 00

Multiplication Instruction MUL : Unsigned Multiplication IMUL : Signed Multiplication ใช้ AL สำหรับการคูณไบต์ ผลลัพธ์เก็บไว้ที่ AH และ AL ใช้ AX สำหรับการคูณเป็นเวิร์ด ผลลัพธ์เก็บไว้ที่ DX และ AX ผลลัพธ์จะมีความยาวเป็น 2 เท่า

MUL & IMUL [label:] MUL/IMUL register/memory MUL ถ้าครึ่งบนของผลลัพธ์เป็น 0 CF และ OF จะมีค่าเป็น 0 IMUL : Signed Multiplication ถ้าครึ่งบนของผลลัพธ์เป็น sign-extension

MUL & IMUL Example MUL BX MUL MEM_BYTE IMUL DL IMUL MEM_WORD

MUL & IMUL Example : คูณเลขที่มีเครื่องหมาย ระหว่างเลข 8 บิต กับ 16 บิต MOV AX, MULTIPLIER MOV CL, MULTIPLICAND MOV CH,0 IMUL CX

MUL & IMUL Example : คูณเลขที่ไม่มีเครื่องหมาย ระหว่างเลข 8 บิต กับ 16 บิต MOV AX, MULCAND_16 MOV CL, MULTIPIER_8 MOV CH, 0 MUL CX

AAM : ASCII Adjust After Multiplication ปรับค่าการคูณของเลข 8 บิตเป็น unpacked BCD 2 ค่า AAM จะสมมติให้ผลลัพธ์อยู่ใน AH และ AL ค่า unpacked BCD จะถูกเก็บใน AH และ AL ตัวตั้งและตัวคูณต้องเป็น unpacked BCD ด้วย

AAM ขั้นตอนการปรับค่าของคำสั่ง AAM หาร AL ด้วย 10 (0AH)

AAM Example AL=‘5’ BH=‘9’ MUL BH AAM

Division Instruction DIV : Unsigned Division IDIV : Signed Division [label:] DIV/IDIV register/memory

DIV & IDIV การหารเลข 8 บิต Source เป็นตัวหาร AL และ AH เก็บค่าตัวตั้ง ผลลัพธ์ จำนวนเต็มเก็บไว้ที่ AL เศษเก็บไว้ที่ AH

DIV & IDIV การหารเลข 16 บิต Source เป็นตัวหาร DX และ AX เก็บค่าตัวตั้ง ผลลัพธ์ จำนวนเต็มเก็บไว้ที่ AX เศษเก็บไว้ที่ DX

DIV & IDIV ถ้าผลลัพธ์จากการหารได้ค่าจำนวนเต็มที่ใหญ่กว่าที่ AL หรือ AX จะเก็บได้ จะเกิดการ Interrupt ชนิด 0 โดย DOS จะแสดงข้อความว่า “Divide Overflow”

DIV & IDIV Example DIV BX DIV MEM_BYTE IDIV DL IDIV MEM_WORD

DIV & IDIV Example : การหารเลขที่มีเครื่องหมาย ระหว่างเลข 8 บิตกับ 16 บิต AX=03ABH=939 BL=D3H=-45 IDIV BL

DIV & IDIV Example : การหารเลขที่ไม่มีเครื่องหมาย ระหว่างเลข 8 บิตกับ 16 บิต AX=37D7H=14295 BL=97H=151 DIV BL

AAD : ASCII Adjust before Division ปรับค่าของตัวตั้งในการหารให้เป็นเลขฐานสอง คูณส่วนบนของตัวตั้ง (AH) ด้วย 10 บวกผลลัพธ์กับส่วนล่างของตัวตั้ง (AL) ทำให้ค่าใน AH เป็น 0 คำสั่ง AAD ต้องถูกเรียกใช้ก่อนการหาร

AAD Example AX=0000 0011 0000 0111 CL=0000 0101 AAD DIV CL

Extending values in a Registers CBW : Convert Byte to Word เป็นคำสั่งที่ลอกค่าของบิต 7 ใน AL ไปใส่ใน AH ทำให้สามารถบวกค่า 8 บิตกับ 16 บิต หรือ ลบค่า 16 บิตจาก 8 บิต

Extending values in a Registers CWD : Convert Word to Doubleword เป็นคำสั่งที่ลอกค่าของบิต 15 ใน AX ไปใส่ใน DX ทำให้สามารถหารเลข 16 บิต ด้วยเลข 16 บิตได้

CBW & CWD Example CBW ADD AX, BX IMUL BX CWD IDIV BX

CBW & CWD Extending the sign(0) in the AL through the AH adds 20H to the AX. AH AL . . . xx 60H CBW 00 60 ADD AX, 20H 00 80

CBW & CWD Extending a 1 word signed value to a doubleword by duplication the sign bit of AX through the DX. MOV AX, WORD1 CWD