திங்கள், 1 அக்டோபர், 2012

எந்திர மொலிக் கட்டலய்னிரலாக்கம் (Machine Language Programming)



















தமிலு  இங்கு செல்ல “கடுடு + சொடுக்கு” (Ctrl + Click) செய்க.  



கனினி (Computer)  

‘கனினி’ என்பது, ஒரு ‘மின்னனு எந்திரம்’ ஆகும்.  கனினியின் மின்சுட்ரில் மின்னோட்டம் பாய்ந்துகொன்டு இருக்கும் வரய்யில்தான், கனினி வேலய் செய்யலாகும்.  கனினியின் மின்சுட்ரில் மின்னோட்டம் தடய்ப்பட்டால், கனினி வேலய் செய்திடாது. 
 
கனினியின் மின்சுட்ரில் பாயும் மின்னலுத்தம், குரிப்பிட்ட அலவுக்குல் இருந்தால் 1-என்ரும், குரிப்பிட்ட அலவுக்கும் குரய்வாக இருந்தால் 0-என்ரும் குரிப்பிடப்படுது.  இந்த 0, 1 ஆகிய மின்னலுத்தச் சய்கய்த் துடிப்பய் அடிப்படய்யாகக் கொன்டுதான், கனினி மொலியான 'இரும மொலி' (Binary Language) உருவாக்கப்பட்டு உல்லது.  இந்த கனினி மொலியான 'இரும மொலியில்தான்' (Binary Language) கனினிக்கு கட்டலய் இடப்பட்டு, கனினி வேலய் செய்யலாகுது. 
 
அதாவது ‘0, 1 ஆகிய மின்னலுத்தச் சய்கய்த் துடிப்பால் ஆகிய - இரும மொலியில்தான் (Binary Language)’, கனினியுல் தரவும் (Data), கட்டலய்யும் (Command) உல்லிடப்பட்டு, கனினி ஆகிய எந்திரம் இயக்கப்படுது. 
0, 1 ஆகிய மின்னலுத்தச் சய்கய்த் துடிப்பால் ஆகிய - ‘இரும மொலிக்கு’ (Binary Language), ‘எந்திர மொலி’ (Machine Language) என்ர பெயரும் உன்டு. 


எந்திர மொலி (Machine Language)

கனினியய்ப் பயன்படுத்தி ஏதேனும் ஒரு தொலிலய்ச் செய்ய வேன்டுமானால், முதலில் அந்தத் தொலிலய்ச் செய்வதர்க்குத் தேவய்யான கட்டலய் வரிசய்த் தொகுப்பய் எலுதுதல் வேன்டும்.  இத்தகய்யக் கட்டலய் வரிசய்த் தொகுப்பய்யும், கனினியால் புரிந்திட இயலும் மொலியில் தான் எலுத வேன்டும்.  கனினியால் புரிந்திட இயலும் மொலி,
'0, 1' ஆல் ஆகிய இரும என்னலால் ஆன 'எந்திர மொலி' (Machine Language) ஆகும். கனினியால் புரிந்திட இயலாத உயர்னிலய் மொலியில் 'கட்டலய் வரிசய்த் தொகுப்பய்' எலுதிட்டால், கனினியால் புரிந்திட இயலும் எந்திர மொலியில் 'கட்டலய் வரிசய்த் தொகுப்பய்' மொலிபெயர்ப்பு செய்தல் வேன்டும். 
கனினியின் னுன்செயலியினால், '0, 1' ஆகிய இரும என்னலால் ஆன எந்திர மொலிக் குரியீட்டுக் கட்டலய்னிரலய் மட்டுமே புரிந்து செயல்பட இயலும்.  கனினி மொலியில் '0, 1' ஆகிய இரும என்னலால் எலுதப்படும் இத்தகய்யக் கட்டலய் வரிசய்த் தொகுப்புக்கு, 'எந்திர மொலிக் கட்டலய்னிரல் மென்பொருல்' என்ரு பெயர்.  'இயக்க அமய்ப்புமுரய் மென்பொருல்' (Operating System Software) என்பது, எந்திர மொலிக் கட்டலய்னிரல் மென்பொருல் ஆகும். 
கனினிக்குக் கொடுக்கப்படும் கட்டலய், தெலிவு கொன்டதாக இருத்தல் வேன்டும். 'சில, பல' போன்ரக் கட்டலய்ச் சொல்லய்க் கொடுத்தல் கூடாது. எத்தனய் என்ரு, 'என்னிக்கய்யில் தான்' தெலிவாகக் குரிப்பிட வேன்டும்.  
கனினிக்குக் கொடுக்கப்படும் கட்டலய், ஒன்ரன் பின் ஒன்ரான, வரிசய்ப்படியான, தொடர்ச்சியான செயல்முரய்யய்க் கொன்டதாக இருத்தல் வேன்டும்.  வரிசய்முரய் பிரலுதுதல் கூடாது. 


கனினியின் தலய்முரய்
(Computer Generation) 
'வெட்ரிடக் குலாய்' (Vacuum Tube) கனினியில் பயன்படுத்தப்பட்டு வந்த காலத்தில், '0, 1' என்னும் 'எந்திர மொலிப்' (Machine Language) பயன்பாடே இருந்துல்லது. 
அதன் பின்னர் 'முத்தடய்யம்' (Transistor) கனினியில் பயன்படுத்தப்பட்டக் காலத்தில், 'கீல்னிலய் மொலியான - ஒன்ரினய்ப்பு மொலி' (Low Level Language - Assembly Language) பயன்பாட்டுக்கு வந்துல்லது. 
அதன் பின்னர் 'ஒருங்கினய்ந்த மின்சுட்ரு' (Integrated Circuit) கனினியில் பயன்படுத்தப்பட்டக் காலத்தில், 'உயர்னிலய் மொலி' (High Level Language) பயன்பாட்டுக்கு வந்துல்லது. 
கனினியால் புரிந்திட இயலாத 'கீல்னிலய் மொலியான - ஒன்ரினய்ப்பு மொலி' (Low Level Language - Assembly Language) மட்ரும் 'உயர்னிலய் மொலி' (High Level Language) ஆகியதில் 'கட்டலய் வரிசய்த் தொகுப்பய்' எலுதிட்டால், கனினியால் புரிந்திட இயலும் ‘எந்திர மொலியில்’ (Machine Language) 'கட்டலய் வரிசய்த் தொகுப்பய்' மொலிபெயர்ப்பு செய்தல் வேன்டும்.  அதன் பின்னரே 'கட்டலய் வரிசய்த் தொகுப்பு' கனினியில் செயலுக்கு வரலாகும். 
இத்தகய்ய 'எந்திர மொலி' (Machine Language) இல்லாது போனால், 'கனினி' (Computer) என்பதே கனவாகிப் போயிருக்கும்.  இருப்பினும் 'கனினியின்' (Computer) வரவுக்கு முன்னரே 'கோடு, புல்லி' (Dash, Dot) என்னும் ‘மோர்சு தந்திக் குரியீட்டிலான’ (Morse Telegraph Code) தகவல் போக்குவரத்து முரய் இருந்துல்லது. 


'கோடு, புல்லி' (Dash, Dot) என்னும் ‘மோர்சு தந்திக் குரியீட்டிலான’ (Morse Telegraph Code) தகவல் போக்குவரத்தும், '0, 1' என்னும் ‘எந்திர மொலிக் குரியீட்டிலான’ (Machine Language Code) தகவல் போக்குவரத்தும், அடிப்படய்யில் ஒன்ரு போலவே உல்லது. 


-------------------------------------------------------------------------------------------------- 
எலுத்துரு       இருமக் குரியீடு      ‘தந்திக் குரியீடு’
(Character)         (Binary Code)       (Telegraph Code)
-------------------------------------------------------------------------------------------------- 
A             01000001           . _ 
B             01000010           _ . . . 
C             01000011           _ . _ . 
1             00110001           . _ _ _ _
2             00110010           . . _ _ _
3             00110011           . . . _ _
-------------------------------------------------------------------------------------------------- 

எனவே '0, 1' என்னும் ‘எந்திர மொலிக் குரியீட்டிலான’ (Machine Language Code) 'கட்டலய்னிரலாக்கப் பயிர்ச்சியும்' (Programming Training) தேவய்யான ஒன்ருதான் என்பதில் அய்யமில்லய். 



‘மோர்சு தந்திக் குரியீடு’
(Morse Telegraph Code)
A    . _  
B    _ . . .  
C    _ . _ .  
D    _ . .  
E    .  
F    . . _ .  
G   _ _ .  
H    . . . .  
I    . .  
J    . _ _ _  
K    _ . _  
L    . _ . .  
M   _ _  
N    _ .  
O   _ _ _  
P    . _ _ .  
Q   _ _ . _  
R    . _ .  
S    . . .  
T    _  
U    . . _  
V    . . . _  
W   . _ _   
X    _ . . _  
Y    _ . _ _  
Z    _ _ . .  


 
0    _ _ _ _ _
1    . _ _ _ _
2    . . _ _ _
3    . . . _ _
4    . . . . _
5    . . . . .
6    _ . . . .
7    _ _ . . .
8    _ _ _ . .
9    _ _ _ _ .

-------------------------------------------------------------------------------------------------------------  





எந்திர மொலிக் குரியீடு’
(Machine Language Code)

சுலியம்   = 0 (பதின்மக் குரியீடு) = 0011 0000 (இருமக் குரியீடு)

ஒன்ரு
   = 1 (பதின்மக் குரியீடு) = 0011 0001 (இருமக் குரியீடு)

இரன்டு
  = 2 (பதின்மக் குரியீடு) = 0011 0010 (இருமக் குரியீடு)

மூன்ரு
  = 3 (பதின்மக் குரியீடு) = 0011 0011 (இருமக் குரியீடு)

னான்கு
  = 4 (பதின்மக் குரியீடு) = 0011 0100 (இருமக் குரியீடு)

அய்ந்து
  = 5 (பதின்மக் குரியீடு) = 0011 0101 (இருமக் குரியீடு)

ஆரு
    = 6 (பதின்மக் குரியீடு) = 0011 0110 (இருமக் குரியீடு)

ஏலு
     = 7 (பதின்மக் குரியீடு) = 0011 0111 (இருமக் குரியீடு)

எட்டு
    = 8 (பதின்மக் குரியீடு) = 0011 1000 (இருமக் குரியீடு)

ஒன்பது
  = 9 (பதின்மக் குரியீடு) = 0011 1001 (இருமக் குரியீடு)

-------------------------------------------------------------------------------------------------------   
9 என்ர என்னலுருவின் 'வட்டாரத் துன்மி' [zone bits] = 0011
9
என்ர என்னலுருவின் 'என்னல் துன்மி' [number bits] = 1001
-------------------------------------------------------------------------------------------------------   



A (தலய்ப்பெலுத்து) = 0100 0001 (இருமக் குரியீடு)

B (தலய்ப்பெலுத்து) = 0100 0010 (இருமக் குரியீடு)

C (தலய்ப்பெலுத்து) = 0100 0011 (இருமக் குரியீடு)

D (தலய்ப்பெலுத்து) = 0100 0100 (இருமக் குரியீடு)

E (தலய்ப்பெலுத்து) = 0100 0101 (இருமக் குரியீடு)

F (தலய்ப்பெலுத்து) = 0100 0110 (இருமக் குரியீடு)

G (தலய்ப்பெலுத்து) = 0100 0111 (இருமக் குரியீடு)

H (தலய்ப்பெலுத்து) = 0100 1000 (இருமக் குரியீடு)

I (தலய்ப்பெலுத்து) = 0100 1001 (இருமக் குரியீடு)

J (தலய்ப்பெலுத்து) = 0100 1010 (இருமக் குரியீடு)

K (தலய்ப்பெலுத்து) = 0100 1011 (இருமக் குரியீடு)

L (தலய்ப்பெலுத்து) = 0100 1100 (இருமக் குரியீடு)

M (தலய்ப்பெலுத்து) = 0100 1101 (இருமக் குரியீடு)

N (தலய்ப்பெலுத்து) = 0100 1110 (இருமக் குரியீடு)
O (தலய்ப்பெலுத்து) = 0100 1111 (இருமக் குரியீடு)

P (தலய்ப்பெலுத்து) = 0101 0000 (இருமக் குரியீடு)

Q (தலய்ப்பெலுத்து) = 0101 0001 (இருமக் குரியீடு)

R (தலய்ப்பெலுத்து) = 0101 0010 (இருமக் குரியீடு)

S (தலய்ப்பெலுத்து) = 0101 0011 (இருமக் குரியீடு)

T (தலய்ப்பெலுத்து) = 0101 0100 (இருமக் குரியீடு)

U (தலய்ப்பெலுத்து) = 0101 0101 (இருமக் குரியீடு)

V (தலய்ப்பெலுத்து) = 0101 0110 (இருமக் குரியீடு)

W (தலய்ப்பெலுத்து) = 0101 0111 (இருமக் குரியீடு)

X (தலய்ப்பெலுத்து) = 0101 1000 (இருமக் குரியீடு)

Y (தலய்ப்பெலுத்து) = 0101 1001 (இருமக் குரியீடு)

Z (தலய்ப்பெலுத்து) = 0101 1010 (இருமக் குரியீடு)

--------------------------------------------------------------------------  



a (சிரிய எலுத்து) = 0110 0001 (இருமக் குரியீடு)

b (சிரிய எலுத்து) = 0110 0010 (இருமக் குரியீடு)

c (சிரிய எலுத்து) = 0110 0011 (இருமக் குரியீடு)

d (சிரிய எலுத்து) = 0110 0100 (இருமக் குரியீடு)

e (சிரிய எலுத்து) = 0110 0101 (இருமக் குரியீடு)

f (சிரிய எலுத்து) = 0110 0110 (இருமக் குரியீடு)

g (சிரிய எலுத்து) = 0110 0111 (இருமக் குரியீடு)

h (சிரிய எலுத்து) = 0110 1000 (இருமக் குரியீடு)

i (சிரிய எலுத்து) = 0110 1001 (இருமக் குரியீடு)

j (சிரிய எலுத்து) = 0110 1010 (இருமக் குரியீடு)

k (சிரிய எலுத்து) = 0110 1011 (இருமக் குரியீடு)

l (சிரிய எலுத்து) = 0110 1100 (இருமக் குரியீடு)

m (சிரிய எலுத்து) = 0110 1101 (இருமக் குரியீடு)

n (சிரிய எலுத்து) = 0110 1110 (இருமக் குரியீடு)
 
o (சிரிய எலுத்து) = 0110 1111 (இருமக் குரியீடு)

p (சிரிய எலுத்து) = 0111 0000 (இருமக் குரியீடு)

q (சிரிய எலுத்து) = 0111 0001 (இருமக் குரியீடு)

r (சிரிய எலுத்து) = 0111 0010 (இருமக் குரியீடு)

s (சிரிய எலுத்து) = 0111 0011 (இருமக் குரியீடு)

t (சிரிய எலுத்து) = 0111 0100 (இருமக் குரியீடு)

u (சிரிய எலுத்து) = 0111 0101 (இருமக் குரியீடு)

v (சிரிய எலுத்து) = 0111 0110 (இருமக் குரியீடு)

w (சிரிய எலுத்து) = 0111 0111 (இருமக் குரியீடு)

x (சிரிய எலுத்து) = 0111 1000 (இருமக் குரியீடு)

y (சிரிய எலுத்து) = 0111 1001 (இருமக் குரியீடு)

z (சிரிய எலுத்து) = 0111 1010 (இருமக் குரியீடு)

-------------------------------------------------------------------------------------------------------------  




டுத்துக் காட்டு: (1)
------------------------------------------------------------   
'எந்திர மொலிக் கட்டலய்னிரலாக்கம்' (Machine Language Programming)



+++++++++++++++++++++++++++++++++++++++++++++
+                                           +
+              A + B                     +
+            Add A, B                  +
+            1000110010100000           +
+                                       +
+++++++++++++++++++++++++++++++++++++++++++++






A + B  
கூட்டு add A, B  
1000110010100000 (16 துன்மி Bits)  
-------------------------------------------------------------------------------------------------------   

“Move $t0, $t1” = போலமய்-விதிமுரய் (pseudo-instruction).  
“Add $t0, $t1, $zero” = உன்மய்யான-விதிமுரய் (actual-instruction). 
$t0, $t1 = தர்க்காலிகப் பதிவகம் (temporary registers). 
$zero = னிலய்யான மதிப்பு (the constant value) 0. 

-------------------------------------------------------------------------------------------------------   
கூட்டு _ பதிவகம் _ பதிவகம் _ னிலய்யான மதிப்பு
-------------------------------------------------------------------------------------------------------   
Add     $t0,      $t1,      $zero 
1000     1100     1010     0000     (16 துன்மி Bits) 
-------------------------------------------------------------------------------------------------------   





டுத்துக் காட்டு: (2)
------------------------------------------------------------   
'எந்திர மொலிக் கட்டலய்னிரலாக்கம்' (Machine Language Programming)


++++++++++++++++++++++++++++++++++++++++++++++++++
+                                               +
+             0001 00001100 LDA #12           +
+             0010 00001100 LDA 12             +
+              0100 00001101 ADD #13          +
+             1000 00001101 ADD 13           +
+             0000 00001110 STO 14             +
+             1111 00000000 HLT              +
+                                           +
++++++++++++++++++++++++++++++++++++++++++++++++++


விதிமுரய் (Instruction) வெலக்கம்: 
-------------------------------------------------------------------------------------------------------   
திரட்டியில் ஏட்ரு LDA =
       
னினய்வக முகவரியின் (னினய்வக இடத்தின்)
           உல்லடக்கத்தய்,
அல்லது முலு என்னலய் திரட்டியில்
                       
ஏட்ரு.  
          
Loads the contents of the Memory Address (Memory
         Location) or Integer (Whole Number) into the Accumulator 
கூட்டு ADD =
       
னினய்வக முகவரியின் (னினய்வக இடத்தின்)
           உல்லடக்கத்தய்,
அல்லது முலு என்னலய் திரட்டியில்
                       
கூட்டு. 
         Adds the contents of the Memory Address (Memory
         Location) or Integer (Whole Number) to the Accumulator 
சேமி STO =  
       
திரட்டியின் உல்லடக்கத்தய், முகவரி இடத்தில் சேமி. 
         Stores the contents of the Accumulator into the Addressed
         Location  

------------------------------------------------------------------------------------------------------- 

 
மாதிரி விதிமுரய் (Instruction)  

-------------------------------------------------------------------------------------------------------   

(1)
திரட்டியில் ஏட்ரு LDA #12 =
   
திரட்டியில் என்னல் 12-அய் ஏட்ரு.  
    Loads the number 12 into the accumulator 

(2)
கூட்டு ADD #13 =
   
திரட்டியின் உல்லடக்கத்துடன் என்னல் 13-அய் கூட்டு. 
    Adds the number 13 to the contents of the accumulator
    = (12 + 13) = 25  

(3)
சேமி STO 14 =
   
திரட்டியின் முடிவய் னினய்வக முகவரி 14-இல் சேமி. 
    Save the accumulator result to the memory address 14

#       = என்னல் number 
[no hash] = முகவரி address  

------------------------------------------------------------------------------------------------------- 


 
மேலும் விதிமுரய் (Instruction) வெலக்கம்: 

(1)
--------------------------------------------------------------------------------------------------------------   
எந்திர மொலிக் குரியீடு    ஒன்ரினய்ப்பு மொலிக் குரியீடு
(Machine Language Code) (Assembly Language Code)
--------------------------------------------------------------------------------------------------------------   

(12 துன்மி Bits)
0001 00001100
   
திரட்டியில் ஏட்ரு #12      (ஏட்ரு - என்னல்)
    
LDA #12 (Load - Number)
     திரட்டியில் என்னல் 12-அய் ஏட்ரு.
    Loads the number 12 into the accumulator.
     0001(ஏட்ரு) 00001100(12)

0010 00001100
   
திரட்டியில் ஏட்ரு 12 (ஏட்ரு - முகவரி)
    LDA 12 (Load - Address)
     திரட்டியில் முகவரி 12-ன் உல்லடக்கத்தய் ஏட்ரு.
    Loads the contents of the
Address 12 into the accumulator.
     0010(ஏட்ரு) 00001100(12)

--------------------------------------------------------------------------------------------------------------   

 
(2)
--------------------------------------------------------------------------------------------------------------   
எந்திர மொலிக் குரியீடு    ஒன்ரினய்ப்பு மொலிக் குரியீடு
(Machine Language Code) (Assembly Language Code)
--------------------------------------------------------------------------------------------------------------   

(12 துன்மி Bits)
0100 00001101
   
கூட்டு #13 (கூட்டு - என்னல்)
    
ADD #13 (Add - Number)
     திரட்டியின் உல்லடக்கத்துடன் என்னல் 13-அய் கூட்டு.
    Adds the number 13 to the contents of the accumulator.
     0100(கூட்டு) 00001101(13)

1000 00001101 (12 துன்மி Bits)
   
கூட்டு 13 (கூட்டு - முகவரி)
    ADD 13 (Add - Address)
     திரட்டியின் உல்லடக்கத்துடன்
           முகவரி
13-ன் உல்லடக்கத்தய் கூட்டு. 
    Adds the contents of the
Address 13
         to the contents of the accumulator
     1000(கூட்டு) 00001101(13)

--------------------------------------------------------------------------------------------------------------   

 
(3)
--------------------------------------------------------------------------------------------------------------   
எந்திர மொலிக் குரியீடு    ஒன்ரினய்ப்பு மொலிக் குரியீடு
(Machine Language Code) (Assembly Language Code)
--------------------------------------------------------------------------------------------------------------   

(12 துன்மி Bits)
0000 00001110
   
சேமி 14 (சேமி - முகவரி)
     STO 14
(Store - Address)
     திரட்டியின் முடிவய் னினய்வக முகவரி 14-இல் சேமி.
    Save the accumulator result to the memory address 14
     0000(சேமி) 00001110(14)

--------------------------------------------------------------------------------------------------------------   

1111 00000000         
   
னிருத்து
    
HLT (Halt)

--------------------------------------------------------------------------------------------------------------   
-------------------------------------------------------------------------------------------------------------- 




டுத்துக் காட்டு: (3)
------------------------------------------------------------    
'எந்திர மொலிக் கட்டலய்னிரலாக்கம்' (Machine Language Programming)  



++++++++++++++++++++++++++++++++++++++++++++++++++
+                                           +
+            K = I + J                       +
+                                           +
+           LOAD I                        +
+           ADD J                         +
+           STORE K                       +
+                                           +
+           00000010101111001010            +
+           00000010111111001000            +
+           00000011001110101000            +
+                                           +
++++++++++++++++++++++++++++++++++++++++++++++++++





-------------------------------------------------------------------------------------------------------------------   
எந்திர மொலிக் குரியீடு         ஒன்ரினய்ப்பு மொலிக் குரியீடு
(Machine Language Code)      (Assembly Language Code)
-------------------------------------------------------------------------------------------------------------------   
(20 துன்மி Bits)
00000010101111001010        = ஏட்ரு LOAD I 
00000010111111001000        = கூட்டு ADD J 
00000011001110101000        = சேமி STORE K (K = I + J) 
-------------------------------------------------------------------------------------------------------------------   
0 10   = முகவரி 10-இல் இருந்து, I-அய் ஏட்ரு.
0 10 L   = Load 'I' from address 10    
         =
ஏட்ரு LOAD I  
(0) 0000001010(10) 1111001010()   = 0000001010 1111001010
-------------------------------------------------------------------------------------------------------------------   
1 11 கூ = முகவரி 11-ன் உல்லடக்கத்தய், I- உடன் கூட்டு.
1 11 A   = Add to 'I' the contents of 11
         =
கூட்டு ADD J  
(1) 0000001011(11) 1111001000(கூ) = 0000001011 1111001000
-------------------------------------------------------------------------------------------------------------------   
2 12 சே = இந்த மதிப்பய் முகவரி 12-இல் சேமி.
2 12 S   = Store this value in 12  
         = STORE K (K = I + J)
(2) 0000001100(12) 1110101000(
சே) = 0000001100 1110101000

-------------------------------------------------------------------------------------------------------------------   


 
மேலும் மாதிரி விதிமுரய் (Instruction) 
-------------------------------------------------------------------------------------------------------------------   
எந்திர மொலிக் குரியீடு         ஒன்ரினய்ப்பு மொலிக் குரியீடு
(Machine Language Code)      (Assembly Language Code)
-------------------------------------------------------------------------------------------------------------------   
0 00000010101111001010     = LOAD X
1 00000010111111001000     = ADD Y
2 00000011001110101000     = STORE Z (X + Y)
3 00000010101111001100     =
RELOAD X
4 00000010111111000110     = MULTIPLY BY Y
5 00000011001111001000     = ADD
(X + Y) + (X*Y)
6 00000011001110101000    
= STORE Z (X + Y + X*Y)

இங்கு முகவரி 10-இல் X-மதிப்பும், முகவரி 11-இல் Y-மதிப்பும் உல்லது.  எனவே முகவரி 12-ன் மதிப்பு = Z = (X+Y) + (X*Y) ஆயிட்டு.

-------------------------------------------------------------------------------------------------------------------   

0 10   = முகவரி 10-இல் இருந்து, X-அய் ஏட்ரு.
0 10 L   = Load 'X' from address 10
         = ஏட்ரு LOAD X
(0) 0000001010(10) 1111001010()   = 0000001010 1111001010

-------------------------------------------------------------------------------------------------------------------   

1 11 கூ = முகவரி 11-ன் உல்லடக்கத்தய், X- உடன் கூட்டு.
1 11 A   = Add to 'X' the contents of 11
         = ADD Y
(1) 0000001011(11) 1111001000(கூ) = 0000001011 1111001000

-------------------------------------------------------------------------------------------------------------------   
 
2 12 சே = இந்த மதிப்பய் முகவரி 12-இல் சேமி.
2 12 S   = Store this value in 12
         = STORE Z (X + Y)
(2) 0000001100(12) 1110101000(சே) = 0000001100 1110101000

-------------------------------------------------------------------------------------------------------------------   

3 10 மஏ = முகவரி 10-இல் இருந்து, X-அய் மருக்க ஏட்ரு.
3 10 R   = Reload 'X' from address 10
         = RELOAD X
(3) 0000001010(10) 1111001100(மஏ) = 0000001010 1111001100

-------------------------------------------------------------------------------------------------------------------   

4 11 பெ = முகவரி 11-ன் உல்லடக்கத்தால் பெருக்கு.
4 11 X   = Multiply by the contents of 11
         = MULTIPLY BY Y
(4) 0000001011(11) 1111000110(பெ) = 0000001011 1111000110

-------------------------------------------------------------------------------------------------------------------   

5 12 கூ = முகவரி 12-ன் மதிப்புடன் கூட்டு.
5 12 A   = Add to the value of 12
         = ADD (X + Y) + (X*Y)
(5) 0000001100(12) 1111001000(கூ) = 0000001100 1111001000

-------------------------------------------------------------------------------------------------------------------   

6 12 சே = இந்த மதிப்பய் முகவரி 12-இல் சேமி.
6 12 S   = Store this value at 12
         = STORE Z (X + Y + X*Y)
(6) 0000001100(12) 1110101000(சே) = 0000001100 1110101000

-------------------------------------------------------------------------------------------------------------------   

மேலும் விதிமுரய் (Instruction) வெலக்கம்  

-------------------------------------------------------------------------------------------------------------------   

0.   திரட்டியய்த் துடய்த்து, அதனுல் முகவரி 10- ஆம் இடத்தில்
   
சேமிக்கப்பட்டு உல்ல என்னலய்க் கூட்டு. 
    Clear the accumulator and add number stored in location 10
    into it.  
    S(10) -> Ac+

-------------------------------------------------------------------------------------------------------------------   

1.   திரட்டியின் உல்லடக்கத்துடன், முகவரி 11- ஆம் இடத்தில்
     சேமிக்கப்பட்டு உல்ல என்னலய்க்
கூட்டு. 
    Add number stored in location 11 to contents of accumulator.
    S(11) -> Ah+

-------------------------------------------------------------------------------------------------------------------   

2.   திரட்டியில் உல்ல என்னலய், முகவரி 12-ஆம் இடத்துக்கு
     மாட்ரு.
 
    Transfer the number in the accumulator to location 12.
    At -> S(12)

-------------------------------------------------------------------------------------------------------------------   
 
3.   என்னல்கனித பதிவகத்தய்த் துடய்த்து, அதனுல் முகவரி
    
10-ஆம் இடத்தில் சேமிக்கப்பட்டு உல்ல என்னலய் மாட்ரு. 
    Clear arithmetic register and transfer into it number stored in
    location 10.
    S(10) -> R

-------------------------------------------------------------------------------------------------------------------   

4.   என்னல்கனித பதிவகத்தில் உல்ல என்னலால் முகவரி 11-ஆம்
     இடத்தில் சேமிக்கப்பட்டு உல்ல என்னலய்ப் பெருக்கி,
     திரட்டியய்த் துடய்த்து அதில் வய். 
    Clear accumulator and multiply number stored at location 11
    by the number in the arithmetic register placing the 39 most
    significant digits in the accumulator.  
(MSD = Most Significant
    Digit =
பெரும மதிப்பு இலக்கம்) 
    S(11)*R -> A

-------------------------------------------------------------------------------------------------------------------   

5.   திரட்டியின் உல்லடக்கத்துடன், முகவரி 12-ஆம் இடத்தில்
     சேமிக்கப்பட்டு உல்ல என்னலய்க் கூட்டு.
 
    Add number stored in location 12 to contents of accumulator.
    S(12) -> Ah+

-------------------------------------------------------------------------------------------------------------------   
 
6.   திரட்டியில் உல்ல என்னலய், முகவரி 12-ஆம் இடத்துக்கு
     மாட்ரு.
 
    Transfer the number in the accumulator to location 12.  
    At -> S(12)

-------------------------------------------------------------------------------------------------------------------   



 
டுத்துக் காட்டு: (4)
------------------------------------------------------------   
'எந்திர மொலிக் கட்டலய்னிரலாக்கம்' (Machine Language Programming)

++++++++++++++++++++++++++++++++++++++++++++++++++
+                                           +
+        00000111 11111010 LOAD 250              +
+        00000101 00000010 ADD #2           +
+        00000110 11111010 STORE 250         +
+                                           +
++++++++++++++++++++++++++++++++++++++++++++++++++

[hash] # = என்னல் number
[no hash] =
முகவரி address
--------------------------------------------------- 

-------------------------------------------------------------------------------------------------------------------   
எந்திர மொலிக் குரியீடு         ஒன்ரினய்ப்பு மொலிக் குரியீடு
(Machine Language Code)      (Assembly Language Code)
-------------------------------------------------------------------------------------------------------------------   

(16 துன்மி Bits)
00000111 11111010 = ஏட்ரு 250 (முகவரி) LOAD 250 (Address)
00000101 00000010 = கூட்டு #2 (என்னல்) ADD #2 (Number)
00000110 11111010 = சேமி 250 (முகவரி) STORE 250 (Address)

-------------------------------------------------------------------------------------------------------------------   

(1)
00000111 11111010

ஏட்ரு 250 (முகவரி)
LOAD 250 (
Address)

முகவரி 250-ன் உல்லடக்கத்தய் ஏட்ரு.
Loads the contents of the
Address 250.

= 00000111 (ஏட்ரு) 11111010 (முகவரி 250)

--------------------------------------------------- 
 
(2)
00000101 00000010

கூட்டு #2 (என்னல்)
ADD #2 (
Number)

என்னல் 2-அய் கூட்டு.
Adds the Number 2

= 00000101 (
கூட்டு) 00000010 (என்னல் 2)

--------------------------------------------------- 

(3)
00000110 11111010
சேமி 250 (முகவரி)
STORE 250 (Address)
முகவரி 250-இன் உல்லடக்கத்தய் சேமி.
Stores the contents of the Address 250.

= 00000110 (சேமி) 11111010 (முகவரி 250)

---------------------------------------------------




டுத்துக் காட்டு: (5)
------------------------------------------------------------    
'எந்திர மொலிக் கட்டலய்னிரலாக்கம்' (Machine Language Programming)


++++++++++++++++++++++++++++++++++++++++++++
C Language Program:

void swap(int v[], int k)
{
int temp;
temp = v[k];
v[k] = v[k+1];
v[k+1] = temp;
}

++++++++++++++++++++++++++++++++++++++++++++





Assembly Language Program:
swap:
mul $2, $5, 4 # compute k*4
add $2, $4, $2 # compute addr of v[k]
lw $15, 0($2) # get v[k]
lw $16, 4($2) # get v[k+1]
sw $16, 0($2) # replace v[k]
sw $15, 4($2) # replace v[k+1]
jr $31 # return


++++++++++++++++++++++++++++++++++++++++++++

Machine Language Program:
00000000101000010000000000011000
00000000100011100001100000100001
10001100011000100000000000000000
10001100111100100000000000000100
10101100111100100000000000000000
10101100011000100000000000000100
00000011111000000000000000001000

++++++++++++++++++++++++++++++++++++++++++++




குரிப்பு:
ஒவ்வொரு னுன்செயலியும் (microprocessor) அதுக்குரிய எந்திர மொலிக் குரியீட்டு கட்டலய்னிரலாக்க விதிமுரய்த் தொகுப்பய்க் (machine language code programming 'Instruction Set') கொன்டுல்லது. 
 

 
தமிலு மொலியின் னோக்கம் (Purpose of the Tamilu Language)

”எலுத்துப்பிலய்” என்பது, “மொலியின் குட்ரமே” ஆகும்.  ஒரே ஒரு
N, R, L, க, ச, ட, த, ப கொன்ட மொலியில் எலுத்துப்பிலய் ஏர்ப்பட வாய்ப்பு இல்லய்.  

அதாவது ஒரு மொலியில் (தமிலுவில்) ஒன்ருக்கு மேல்பட்ட னகரம் (ன, ண, ந), ரகரம் (ர, ற), லகரம் (ல, ள, ழ) இருப்பதினால்தான், னகர (ன, ண, ந), ரகர (ர, ற), லகரத்தில் (ல, ள, ழ) எலுத்துப்பிலய் ஏர்ப்படலாகுது. 
ஒரே ஒரு னகர (N), ரகர (R), லகரத்தய்க் (L) கொன்ட மொலியில் (ஆங்கிலத்தில்), னகர (N), ரகர (R), லகரத்தில் (L) எலுத்துப்பிலய் ஏர்ப்பட வாய்ப்பில்லய். 

அது போன்ரு ஒரே ஒரு ககர (K), சகர (S), டகர (T), தகர (D), பகரத்தய்க் (P) கொன்ட மொலியில் (தமிலுவில்), ககர (K), சகர (S), டகர (T), தகர (D), பகரத்தில் (P) எலுத்துப்பிலய் ஏர்ப்பட வாய்ப்பில்லய். 

எனவே எலுத்துப்பிலய் என்பது, “மொலியின் குட்ரமே” ஆகும்.  சிரப்பு எலுத்தினால் தடுமாட்ரம் ஏர்ப்பட்டுவிடக் கூடாது என்பதுதான் 'தமிலு மொலியின் னோக்கம்' ஆகும். 

முகப்புப் பக்கத்துக்குச் செல்ல கனினி என்பதன் மீது,
“கடுடு + சொடுக்கு” (Ctrl + Click) செய்க.