1 / 10

CS344-321 Assembly Language Programming

CS344-321 Assembly Language Programming. Period 4. ระบบตัวเลข ( Number Systems). ระบบตัวเลขฐานสอง (binary number system) ประกอบด้วย 0, 1 ระบบตัวเลขฐานแปด (octal number system) ประกอบด้วย 0, 1, 2, …, 7 ระบบตัวตัวเลขฐานสิบ (decimal number system) ประกอบด้วย 0, 1, 2, …, 9

reese-lynch
Download Presentation

CS344-321 Assembly Language Programming

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CS344-321 Assembly Language Programming Period 4

  2. ระบบตัวเลข (Number Systems) ระบบตัวเลขฐานสอง (binary number system) ประกอบด้วย 0, 1 ระบบตัวเลขฐานแปด (octal number system) ประกอบด้วย 0, 1, 2, …, 7 ระบบตัวตัวเลขฐานสิบ (decimal number system) ประกอบด้วย 0, 1, 2, …, 9 ระบบตัวเลขฐานสิบหก (hexadecimal number system) ประกอบด้วย 0, 1, 2, …, 9, A, B, C, D, E, F

  3. การเปลี่ยนฐาน การเปลี่ยนจากเลขฐานสองให้เป็นเลขฐานสิบ ใช้สูตร (bnb n-1 … b2b1b0.b-1b-2 …b-m)2 = (bn2n+b n-1 2n-1 + … + b222 + b121+b0 + b-12-1 +b-2 2-2 + … + b-m2-m)10 เช่น (101101.1011)2 = (25 + 0 + 1*23 +22 + 0 + 1 + 2-1 + 0 + 2-3 + 2-4)10 = (45.6875)10 หมายเหตุ การเปลี่ยนจากเลขฐานแปดหรือสิบหกให้เป็นเลขฐานสิบ ใช้สูตรเหมือนกัน แต่เปลี่ยนจาก 2 เป็น 8 และ 16 ตามลำดับ โดยแทน A, B, C, D, E, F ด้วย 10, 11, 12, 13, 14, 15 ตามลำดับ

  4. การเปลี่ยนตัวเลขหน้าจุด จากเลขฐานสิบให้เป็นเลขฐานสอง • ให้ใช้ 2 หาร ไปเรื่อย จนได้ผลลัพธ์เป็น 0 ขณะที่หารให้จดจำเศษที่ได้ นำเศษที่ได้จากการหารมาเรียงตามลำดับ เริ่มจากเศษที่ได้ครั้งสุดท้ายเรียงไปยังเศษที่ได้จากการหารครั้งแรก • เช่น 2 ) 123 • 61 เศษ 1 • 30 เศษ 1 • 15 เศษ 0 • 7 เศษ 1 • 3 เศษ 1 • 1 เศษ 1 • 0 เศษ 1 • (123)10 = (1111011)2 • หมายเหตุ การเปลี่ยนตัวเลขหน้าจุด จากเลขฐานสิบให้เป็นเลขฐานแปดหรือสิบหก ใช้สูตรเหมือนกัน แต่เปลี่ยนจากการหารด้วย 2 เป็นการหารด้วย 8 และ 16 ตามลำดับ โดยแทนเศษ 10, 11, 12, 13, 14, 15 ด้วย A, B, C, D, E, F ตามลำดับ

  5. การเปลี่ยนตัวเลขหลังจุด จากเลขฐานสิบให้เป็นเลขฐานสอง ให้คูณตัวเลขที่อยู่หลังจุดทั้งหมดด้วย 2 ไปเรื่อย ๆ จนกว่าจะได้ผลลัพธ์เป็นศูนย์ หรือได้จำนวนตัวเลขหลังจุดทศนิยมตามที่ต้องการ แล้วนำเลขหน้าจุดที่ได้จากการคูณแต่ละครั้ง มาเรียงกัน เช่น (0.6875)10 = (0 . 1 0 1 1 )2.6875 * 2 1.3750 .3750 * 2 0.7500 .7500 * 2 1.5000 .5000 * 2 1.0000 .0000 หมายเหตุ การเปลี่ยนตัวเลขหลังจุด จากเลขฐานสิบให้เป็นเลขฐานแปดหรือสิบหก ใช้สูตรเหมือนกัน แต่เปลี่ยนจากการคูณด้วย 2 เป็นการคูณด้วย 8 และ 16 ตามลำดับ

  6. การแทนข้อมูล (Data Representation) อักขระ (character) แทนอักขระ หนึ่งตัว มีสองแบบ คือ - ASCII (ใช้ 7 บิต แทนรหัส และ parity 1 บิตใช้ตรวจสอบ) ดู appendix D - EBCDIC (ใช้ทั้ง 8 บิต แทนรหัส) เลขจำนวนเต็ม (integer) • แทนเลขจำนวนเต็มทั้งแบบที่มีเครื่องหมาย และแบบที่ไม่มีเครื่องหมาย • กรณีไม่มีเครื่องหมาย ถ้าใช้จำนวนบิต n บิต จะแทนเลขจำนวนเต็มไม่มีเครื่องหมายได้ ตั้งแต่ 0 ถึง 2n-1 เช่น n = 16 จะแทนเลขจำนวนเต็มได้ตั้งแต่ 0 ถึง 65535 เป็นต้น • กรณีมีเครื่องหมาย สามารถแทนได้ในสามรูปแบบ คือ

  7. ก. sign magnitudeใช้บิตซ้ายสุด (most significant bit) แทนเครื่องหมาย • โดยที่ 0 แทนเครื่องหมายบวก และ 1 แทนเครื่องหมายลบ • บิตที่เหลือใช้แทนขนาดของตัวเลข • most significant bit least significant bit • n-1 n-2 … 2 1 0 • sign magnitude • เช่น สมมุติว่าใช้ จำนวนบิต 8 บิต แทนเลขจำนวน +5 และ –5 ได้เป็น 00000101 และ 10000101 เป็นต้น • ถ้าใช้จำนวน n บิต จะแทนเลขจำนวนเต็มแบบมีเครื่องหมาย ได้ตั้งแต่ – (2n-1– 1) ถึง +(2n-1- 1) • เช่น n = 16 จะแทนเลขจำนวนเต็มมีเครื่องหมายได้ตั้งแต่ –32767 ถึง +32767 เป็นต้นโดยที่ 0 แทนได้ทั้ง +0 และ –0

  8. ข.one complementใช้บิตซ้ายสุด (most significant bit) แทนเครื่องหมาย • โดยที่ 0 แทนเครื่องหมายบวก และ 1 แทนเครื่องหมายลบ เช่นกัน • การแทนเลขบวก จะเหมือนกับแบบ sign magnitude แต่การแทนตัวเลขลบ จะต่างกัน • แบบ one complement จะแทนตัวเลขลบโดยการ ทำ complement (เปลี่ยนจากเลข 0 เป็น 1 และ เปลี่ยนจากเลข 1 เป็น 0) กับ magnitude เช่น สมมุติว่าใช้ จำนวนบิต 8 บิต แทนเลขจำนวน +5 และ –5 ได้เป็น 00000101 และ 11111010 เป็นต้น • ถ้าใช้จำนวน n บิต จะแทนเลขจำนวนเต็มแบบมีเครื่องหมาย ได้ตั้งแต่ – (2n-1– 1) ถึง +(2n-1- 1) • เช่น n = 16 จะแทนเลขจำนวนเต็มมีเครื่องหมายได้ตั้งแต่ –32767 ถึง +32767 เป็นต้นโดยที่ 0 แทนได้ทั้ง +0 และ –0

  9. ค.two complementใช้บิตซ้ายสุด (most significant bit) แทนเครื่องหมาย โดยที่ 0 แทนเครื่องหมายบวก และ 1 แทนเครื่องหมายลบ เช่นกัน • การแทนเลขบวก จะเหมือนกับแบบ sign magnitude แต่การแทนตัวเลขลบ จะต่างกัน • แบบ two complement จะแทนตัวเลขลบโดยการ ทำ complement (เปลี่ยนจากเลข 0 เป็น 1 และ เปลี่ยนจากเลข 1 เป็น 0) กับ magnitude แล้วบวกด้วยหนึ่งเช่น สมมุติว่าใช้ จำนวนบิต 8 บิต แทนเลขจำนวน +5 และ –5 ได้เป็น 00000101 และ 11111011 เป็นต้น • ถ้าใช้จำนวน n บิต จะแทนเลขจำนวนเต็มแบบมีเครื่องหมาย ได้ตั้งแต่ • – (2n-1) ถึง +(2n-1- 1) • เช่น n = 16 จะแทนเลขจำนวนเต็มมีเครื่องหมายได้ตั้งแต่ –32768 ถึง +32767 เป็นต้นโดยที่ 0 แทนด้วย +0 เท่านั้น

  10. การแทนข้อมูลด้วยเลขฐานสิบหก (Hexadecimal Representation) • ใช้ตัวเลขฐานสอง 4 ตัวแทนด้วยตัวเลขฐานสิบหกหนึ่งตัว ดังนี้ • ฐานสอง ฐานสิบหก ฐานสอง ฐานสิบหก • 0000 0 1010 A • 0001 1 1011 B • 0010 2 1100 C • 0011 3 1101 D • 0100 4 1110 E • 0101 5 1111 F • 0110 6 • 0111 7 • 1000 8 • 1001 9 • เช่น 0000 0011 1100 0011 ฐานสอง • เท่ากับ 0 3 C 3 ฐานสิบหก

More Related