วันเสาร์ที่ 25 มกราคม พ.ศ. 2557

How to install Arm simulator and mips simulator

1. install arm simulator
link download : http://armsim.cs.uvic.ca/



2.install mips simulator
link download : http://pages.cs.wisc.edu/~larus/spim.html#qtspim


Review lecture 3 week

Floating Point 

-0.0125 เก็บใน Bin 16 บนคอมพิวเตอร์ 32 bit ชนิด Little-Endian ก่อนการปัดเศษ 13 bit
(0.0125)10 แปลงเป็นฐาน 16ได้
0.0125* 2 = 0.2 
0.2 * 16 = 3.2
0.2 * 16 = 3.2
0.2 * 16 = 3.2
0.2 * 16 = 3.2
(0.0125)10 => (0333)16 => (0000 0011 0011 0011)2
เลื่อนจุด
(0.0125)10 = 1.1001100110011  x 2 ยกกำลัง -7
Sign = 1
Biased Exponent = 15 - 7 = (8)10 = (0 1000)2
Mantissa = 1001 1001 1001 1  (ไม่เก็บ 1) คิดเสมือนว่าเป็น 1001 1001 10.01 1

Mantissa เก็บแค่ 10 bit ต้องปัดเศษทิ้ง
การปัดเศษทั้ง แบบ
1.Round to ward 0 => 1001 1001 10
2.Round to ward +infinity => 1001 1001 10
3.Round to ward -infinity => 1001 1001 11
4.Round to nearest,tie away from 0 => 1001 1001 10
5.Round to nearest,tie away from even => 1001 1001 10

ยกตัวอย่างรูปแบบการเก็บ จัดการปัดเศษแบบ Round to word 0 

1 | 0 1000 | 1001 1001 11|

จัดเก็บแบ่งเป็น 4 bit ฐาน 16  ได้   1010 0010 0110 0110  => A2 66
จัดเก็บ 32-bit 00 00 A2 66
จัดเก็บ 32-bit รูปแบบ Little-Endian 66 A2 00 00



Review Circuit, Electronics and Digital

-Transistor Imprementing Boolean Not

- Input = 0 Volts ได้ Output เป็น 5 Volts
- Input = 5 Volts ได้ Output เป็น 0 Volts


-Example Of Internal Gate Structure (NOR GATE)



พิจารณารูป

              เมื่อ Input 1 = ลิจิก 0  (0 Volts) และ Input 2  = ลิจิก 0 (0 Volts) Output ได้ ลอจิก1 (5 Volts) 
               เมื่อ Input 1 = ลิจิก 0  (0 Volts) และ Input 2  = ลิจิก 1 (5 Volts) Output ได้ ลอจิก 0 (0 Volts)
               เมื่อ Input 1 = ลิจิก 1  (5 Volts) และ Input 2  = ลิจิก 0 (0 Volts) Output ได้ ลอจิก  0 (0 Volts)
               เมื่อ Input 1 = ลิจิก 1  (5 Volts) และ Input 2  = ลิจิก 1 (5 Volts) Output ได้ ลอจิก 0 (0 Volts)



วันศุกร์ที่ 24 มกราคม พ.ศ. 2557

Review เลขฐาน การแปลงเลขฐาน

เลขฐาน
ระบบเลขฐานประกอบด้วยเลขฐาน 2 เลขฐาน 8 เลขฐาน 10 เลขฐาน 16
ระบบเลขฐาน 2 (Binary Number System) เป็นเลขฐานที่ประกอบด้วยเลข 2 ตัว ได้แก่เลข 0 กับ เลข 1 ซึ่งเป็นเลขฐานที่คอมพิวเตอร์สามารถเข้าใจได้ง่าย เพราะว่าอุปกรณ์ทางไฟฟ้าก็มีสถานะเพียง 2 สถานะ คือ เปิด กับ ปิด ซึ่งก็เทียบได้กับ 0 กับ 1 แต่ถ้าใช้เลขฐาน 10 ในคอมพิวเตอร์อาจจะเกิดปัญหาอย่างอื่นตามมา หรือแม้แต่อุปกรณ์ทางไฟฟ้า ก็ต้องแบ่งสถานะออกเป็น 10 สถานะ ซึ่งไม่เป็นที่นิยมนัก การเก็บข้อมูลในระบบของคอมพิวเตอร์ก็จะจัดเก็บเป็นกลุ่มตัวเลขฐานสองหลายบิต ขึ้นอยู่กับขนาดของสิ่งที่ต้องการเก็บ และหน่วยความจำที่ใช้
ระบบเลขฐาน 8 (Octal Number System) เป็นเลขฐานที่ประกอบด้วยเลข 8 ตัว ซึ่งประกอบด้วยเลข 0, 1, 2, 3, 4, 5, 6, 7 ซึ่งเป็นเลขฐานที่เพิ่มเนื้อที่หน่วยความจำในการเก็บให้มากขึ้น การเก็บข้อมูลเป็นเลขฐาน 8 จะทำให้เก็บข้อมูลได้มากขึ้น
ระบบเลขฐาน 10 (Decimal Number System) เป็นเลขฐานที่ประกอบด้วยตัวเลข 10 ตัว ซึ่งประกอบด้วยเลข 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ซึ่งระบบเลขฐาน 10 เป็นระบบเลขฐานที่คนทั่วไปสามารถเข้าใจได้เป็นอย่างดี เพราะเป็นตัวเลขที่เกี่ยวข้องกับชีวิตประจำวันซึ่งใช้มาตลอด สามารถจำได้และคำนวณได้ง่ายกว่าเลขฐานอื่น ๆ
ระบบเลขฐาน 16 (Hexadecimal Number System) เป็นเลขฐานที่ประกอบด้วยตัวเลข 10 ตัวและตัวอักษรแทนตัวเลขอีก 6 ตัว ซึ่งประกอบด้วยเลข 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 และตัวอักษรภาษาอังกฤษแทน 10 ถึง 15 ได้แก่ A, B, C, D, E, F ซึ่งก็จะเก็บข้อมูลได้มากกว่าระบบเลขฐาน 2 ฐาน 8




ตัวอย่างการแปลงเลขฐานของระบบตัวเลข

         
การแปลงฐานสองเป็นเลขฐานสิบ :
                        หลักการ คือการเอาค่า Weight ของทุกบิตที่มีค่าเป็น 1 มาบวกกัน ดังตัวอย่าง
                        ตัวอย่าง จงแปลง (11011101)2 ให้เป็นเลขฐานสิบ
                        (11011101)2     = (1X27) + (1X26) + (0X25) + (1X24) + (1X23)+ (1X22) +(0X21) + (1X20)
                      =  128 + 64 + 0 + 16 + 8 + 4 + 0 + 1
                                                    ผลลัพธ์        =    (221)10



การเปลี่ยนเลขฐานสิบเป็นเลขฐานสอง

หลักการ

1.    ให้นำเลขฐานสิบเป็นตัวตั้งและนำ 2 มาหาร ได้เศษเท่าไรจะเป็นค่าบิตที่มีนัยสำคัญน้อยที่สุด (LSB)

2.    นำผลลัพธ์ที่ได้จากข้อที่ 1 มาตั้งหารด้วย 2 อีกเศษที่จัดจะเป็นบิตถัดไปของเลขฐานสอง

3.    ทำเหมือนข้อ 2 ไปเรื่อยๆ จนได้ผลลัพธ์เป็นศูนย์ เศษที่ได้จะเป็นบิตเลขฐานสองที่มีนัยสำคัญมากที่สุด (MSB)





ตัวอย่าง จงเปลี่ยน (221)10 เป็นเลขฐานสอง
                        2  221                    เศษ      1          (LSB)
      2  110                    เศษ      0
                         2   55                    เศษ      1
       2   27                    เศษ      1
       2   13                    เศษ      1
       2     6                    เศษ      0
       2     3                    เศษ      1
       2     1                    เศษ      1          (MSB)
                          0                               
\ (221)10         = (11011101)2




การเปลี่ยนเลขฐานแปดเป็นฐานสิบและเลขฐานสิบเป็นฐานแปด

                               การเปลี่ยนเลขฐานแปดเป็นเลขฐานสิบ

            หลักเกณฑ์ :  นำค่าน้ำหนัก (Weight)และเลขฐานแปดคูณด้วยเลข

                                                        ประจำหลักแล้วนำผลที่ได้ทุกหลักมารวมกัน

                                    น้ำหนัก : Weight ได้แก่ …  8 8 82  81  80  8-1  8-2  8-3

            ตัวอย่าง : (134)8 = (…)10

                      (134)8 = (1X82) + (3X81) + (4X80)
                                       =  64 + 24 + 4
                                        =  (92) 10 
            ดังนั้น (134)8 = (92)10
            จุดทศนิยม



                                             การเปลี่ยนเลขฐานสิบเป็นเลขฐานแปด
            หลักเกณฑ์ นำเลขฐานสิบเป็นตัวตั้งแล้วหารด้วย 8 เศษที่ได้จากการ
        หารจะเป็นค่าของเลขฐานแปด ทำเช่นเดียวกับการเปลี่ยน
         เลขฐานสิบเป็นฐานสอง
                                    ตัวอย่าง :  (92)10  =  (…)8
      8    92                    เศษ      4
      8    11                    เศษ      3
       8     1                    เศษ      1
                0                             
                                                 1    3   4
ดังนั้น (92)10 = (134)8



การเปลี่ยนเลขฐานแปดเป็นสองและเลขฐานสองเป็นฐานแปด

              การเปลี่ยนเลขฐานแปดเป็นเลขฐานสอง

หลักการ จะต้องใช้เลขฐานสิบเป็นตัวกลางในการเปลี่ยน

            ตัวอย่าง :  (134)8 = (…)2

1.      เปลี่ยนเลขฐานแปดเป็นเลขฐานสิบ

(134)8 = (1X88) + (3X81) + (4X80)

           = (92)10
2.      เปลี่ยนเลขฐานสิบเป็นเลขฐานสอง
(92)10 = (…)2
Weight       = 64   32   16     8    4     2    1  
                  = 64 + 0 + 16 + 8 + 4 + 0 + 0
เลขฐาน 2    =  1     0      1     1     1    0    0
                                    ดังนั้น (134)8     = (1011100)2



        
               การเปลี่ยนเลขฐานสองเป็นเลขฐานแปด

หลักการ จะต้องใช้เลขฐานสิบเป็นตัวกลางในการเปลี่ยน



            ตัวอย่าง :  (1011100)2 = (…)8

1.      1.      เปลี่ยนเลขฐานสองเป็นเลขฐานสิบ

(1011100)2 = 64 + 0 + 16 + 8 + 4 + 0 + 0

                  = (92)10
2.      2.      เปลี่ยนฐานสิบเป็นเลขฐานแปด
      8    92                    เศษ      4
       8    11                   เศษ      3
       8     1                    เศษ      1
                0                             
                                                 1    3   4
            ดังนั้น (1011100)2 = (134)8

                                การเปลี่ยนเลขฐานสองเป็นเลขฐานแปดและฐานแปดเป็นเลขฐานสอง วิธีลัด
เลขฐานแปด
เลขฐานสอง
0
1
2
3
4
5
6
7
000
001
010
011
100
101
110
111
                        ตารางเปรียบเทียบเลขฐานแปดและเลขฐานสอง
                        จากตารางจะเห็นว่าเลขฐานแปดหนึ่งหลักสามารถแทนด้วยเลขฐานสองจำนวน 3 บิต
                        ตัวอย่าง จงแปลงเลขฐานสองเป็นเลขฐานแปด
                                        (1011100) 2 =  (…)8
                                                วิธีทำ :              001      011      100

                                                  1           3          4
                        ดังนั้น     (1011100) 2 =  (134)8
                       
                        ตัวอย่าง  เปลี่ยนเลขฐานแปดเป็นเลขฐานสอง
                                      (6143)8 = (…)2

                        วิธีทำ                6          1          4          3

                                               110       001     100       011
                        ดังนั้น  (6143)8 = (110001100011)2



    การเปลี่ยนเลขฐานสิบหกเป็นฐานสิบและเลขฐานสิบเป็นฐานสิบหก
                                   การเปลี่ยนเลขฐานสิบหกเป็นเลขฐานสิบ   
                                  หลักการ นำค่าน้ำหนัก (Weight) ของเลขฐานสิบหกคูณด้วยเลขประจำ
 หลัก และนำผลที่ได้ทุกหลักมารวมกัน
                                  น้ำหนัก (Weight) : … 16 163   162  161  160  16-1 16-2 16-3
                                   ตัวอย่าง   (6C)16 = (…)10
                                                (6C)16   = (5X161) + (12X160)
                                                            = 80 + 12
                                                            = (92)10
                                    ดังนั้น    (6C)16   = (92)10
                                                                        ตัวอย่าง (0.3)16  = (…)10
(0.3)16 (0.3)16 = 3X10-1
= 3X0.0625
                                                            = (0.1875)10
                                    ดังนั้น    (0.3)16  = (0.1878)10

                                
                                   การเปลี่ยนเลขฐานสิบเป็นเลขฐานสิบหก

            หลักการ นำเลขฐานสิบมาเป็นตัวตั้งแล้วนำ 16 มาหาร เศษที่ได้จากการหาร จะเป็นค่า
    เลขฐานสิบหก ทำเช่นเดียวกับการเปลี่ยนเลขฐานสิบเป็นเลขฐานสอง
            ตัวอย่าง :  (92)10 = (…)16
                        วิธีทำ :                             16   92                      เศษ 12 =C
  16      5                      เศษ        5
     
                                                                                                                                                                             
        5   C
                        ดังนั้น (92)10 = (5C)16
            ตัวอย่าง             (0.7875)10                =          (….)16
                        วิธีทำ               
ผลการคูณ
ผลของจำนวนเต็ม
0.7875 X 16  = 12.6
0.6 X 16        = 9.6
12 = C
9
0.6 X 16        = 9.6
0.6 X 16        = 9.6
9
9
            ดังนั้น (0.7875)10 = (0.C9)16



การเปลี่ยนเลขฐานสองเป็นฐานสิบหก และฐานสิบหกเป็นฐานสอง
                                       การเปลี่ยนเลขฐานแปดเป็นเลขฐานสอง
                        หลักการ :  จะต้องใช้เลขฐานสิบเป็นตัวกลาง 

                        ตัวอย่าง :  (5C)16 = (…)2
                                    1. เปลี่ยนเลขฐานสิบหกเป็นเลขฐานสิบ
                                         (5C)16          = (5X161) + (12X160)
                                                            = 80 + 12
                                                            = (92)10
                                    2. เปลี่ยนเลขฐานสิบเป็นเลขฐานสอง
                                         (92)10          = (…)2
                                          Weight       = 64  32  16  8  4  2  1
                                                                64 + 0 + 16 +  8 + 4 + 0 + 0
                                           เลขฐานสอง =  1     0     1      1     1    0     0 
                                           ดังนั้น (5C)16          = (1011100)2

                                       การเปลี่ยนเลขฐานสองเป็นเลขฐานสิบหก
            หลักการ ต้องใช้เลขฐานสิบเป็นตัวกลาง
ตัวอย่าง :  (1011100)2 = (…)16
                                    1. เปลี่ยน (1011100)2เป็นเลขฐานสิบ
                                         (1011100)2 = (92)10
                                    2. เปลี่ยนเลขฐานสิบเป็นเลขฐานสิบหก
16   92             เศษ 12 =C
16    5              เศษ        5
                                                         0            
                                                                                              5    C
                                           ดังนั้น (1011100)2  = (5C)16



การเปลี่ยนเลขฐานสิบหกเป็นฐานสองและเลขฐานสองเป็นฐานสิบหกวิธีลัด
เลขฐานแปด
เลขฐานสอง
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
                                         ตารางเปรียบเทียบเลขฐานสิบหกกับเลขฐานสอง  
จากตารางจะเห็นว่า เลขฐานสิบหกหนึ่งหลักสามารถจะแทนด้วยเลขฐานสองจำนวน 4 บิต
  
ตัวอย่าง จงเปลี่ยน (1011100)2 เป็นเลขฐานสิบหก
วิธีทำ    0101    1100
           
               5          12
           
                5            C                    
            ดังนั้น (1011100)2 = (5C)16
ตัวอย่าง  จงเปลี่ยน (1011110111011)2 เป็นเลขฐานสิบหก
วิธีทำ    0001    0111    1011    1011

                1          7          11        11      

                  1         7            B         B   
               ดังนั้น (1011110111011)2 = (17BB)16
ตัวอย่าง จงเปลี่ยน (A95)16 เป็นเลขฐานสอง
วิธีทำ                  A        9            5

                        1010    1001    0101
            ดังนั้น (A95)16 = (101010010101)2