יום שישי, 4 במרץ 2011

חלק 2 - מדריך שפת אסמבלר \ אסמבלי \ מכונה

הוראות
 
האופרטור offset  (וטבלת הסמלים)                                                                                                                              
תחביר: op.offset op הוא שם של משתנה או תוית (label).אופרטור זה
מחזיר את ההיסט (
offset) של op ביחס לסגמנט שבו הוא מוגדר.                                                                                                                      
לדוגמא,נתון קטע תכנית                                                                                                                                                
data segment                                                                
() db 15 dup                                                                         
?  v db                                                                     
data ends                                                                 
code segment                                                      
 assume cs:code,ds:data                                                             
 start:mov ax,data                                                               
 mov ds,ax                                                              
 mov bx,offset v                                                          
 mov cx,offset start      
ההוראה mov bx,offset v תרשום 15 בתוך bx.                                     
ההוראה mov cx,offset start תרשום 0 בתוך cx.                                                                                                                
 
lea                                                                      
תחביר:op1.lea op1,op2 חייב להיות אוגר בגודל 16 סיביות (למעט אוגר סגמנט) ו op2 הוא כתובת בזכרון.הוראה זו מאתחלת את op1 בהיסטו של op2.
הוראה זו אינה משפיעה על הדגלים.                                                                                                        
דוגמאות:                                                                                                                                                     
א-lea dx,msg (שווה ערך ל mov dx,offset msg)                                                                                                                  
ב-[bx .lea bx,msg[si יאותחל בoffset(msg)+si ,למשל: אם 5=offset(msg)
  ו 3=
si אזי bx יאותחל ב 8.                                                           ג-lea ax,ds:20,  axיאותחל ב 20.                                                                                                                              

האופרטור
length                                                                                                                                              
תחביר: op.length op הוא שם של משתנה                                                                                                                           
אופרטור זה מחזיר את כמות האלמנטים המוקצים בעזרת האופרטור dup.                                                                                                
דוגמאות                                                                                                                                                       
א-בהתיחס להגדרה זו :()tab dw 150 dup, ההוראה  mov ax,length tab תרשום 150 ב ax.                                                                               
ב-בהתיחס להגדרה זו :var db 9,2,4,7    ההוראה  mov al,length var תרשום 1 ב al                                                                              
ג-בהתיחס להגדרה זו :abcde''   str db  ההוראה  mov al,length str תרשום 1 ב al.                                                                                
ד-בהתיחס להגדרה זו :() dup150?, t dw ההוראה  mov ax,length t תרשום 1 ב ax.                                                                                  

הנחיית
org                                                                                                                                                   
תחביר:  exp .org exp הוא בטוי חשבוני שערכו חייב להיות ידוע בסריקה הראשונה של האסמבלר.                                                                                                                                                      
הנחייה זו מאפשרת לשנות את ערכו של מונה האסמבלר (location counter)                                                                                             
דוגמה א'     org 5                                                                                                                                           
 דוגמה ב'     6=s1                                                                                                                                           
             8=   s2                                                                           
 org s1*s2                                                                  אם המספר,(או תוצאת הביטוי) הרשום לימין org,יעלה על 65535,תוקרן שגיאה.                                                                                        

האופרטור
seg                                                                                                                                                  
תחביר:seg op . op הוא שם של משתנה או של תוית (label)                                                                                                         
אופרטור זה מחזיר את כתובתו של הסגמנט שבו מוקצה op                                                                                                            
דוגמה:
mov ax,seg var                                                                                                                                         
mov ds,ax                                                               
לאחר 2 פעולות אלה,האוגר ds מצביע לסגמנט שבו מוקצה המשתנה var             דוגמה נוספת: mov dx,seg start. זו פניה אל מע' ההפעלה בדומה להוראה mov ax,data                                                                                

הוראת mov                                                                                                                                                    
תחביר: op1.mov op1,op2 הוא שם של משתנה או אוגר (כל אחד מהם גודלו בית או מילה)                                                                                
op2 הוא שם של משתנה או אוגר (כל אחד מהם גודלו בית או מילה),או מספר קבוע  או
סמל.פעולה זו מעתיקה את
op2 לop1  (op2 הוא המקור ו op1 הוא היעד) מבלי לשנות את                                                                                     
המקור.לאחר פעולה זו,ערכם של היעד והמקור זהים.כלומר: op2 -> op1                                                                                        
הוראה זו אינה משפיעה על הדגלים.                                                                                                                              
הערות:                                                                                                                                                       
א-אסור ל 2 האופרנדים להיות משתני זכרון.לדוגמה: ההוראה v1,v2 mov שגויה.                                                                                        
ב-מותר ל 2 האופרנדים להיות אוגרים,אולם שניהם חיבים להיות בית או מילה.                                                                                        
לדוגמה: ההוראה ax,bx mov תקינה אולם ההוראה  ax,bh mov שגויה.
ג-לא ניתן לאתחל אוגר סגמנט בנתון מידי.לדוגמה ההוראה
ds,5  mov שגויה.
ד-לא ניתן לאתחל אוגר סגמנט,בערכו של אוגר סגמנט אחר,בפעולת
mov.
  דוגמה:
 mov ss,dsהיא הוראה שגויה.
ה-האוגר
cs אינו יכול לשמש כיעד. דוגמה: cs,ax  mov
היא הוראה שגויה.
ו-האוגר
ip אינו נגיש. דוגמה: mov ax,ip ו mov ip,ax הן הוראות שגויות                                                                                          
דוגמאות                                                                                                                                                       
א- ax,table mov                                                                                                                                            
ב-table,cx  mov
ג- es:[bx],dx mov (אפשר להחליף את bx ב si ב di או ב bp אך לא באוגרים אחרים)                                                                               
ד- ds,ax mov                                                                                                                                               
ה- bl,ah mov                                                                                                                                               
ו- 30-,cl mov                                                                                                                                              
ז- h55  mov byte ptr[bx],                                                                                                                                     
ח- [20]:al,ds mov                                                                                                                                           
ט- ds:30,10 ptr byte mov                                                                                                                             
י-  tab) mov ah,tab[si]מוקצה כ db)                                                                                                                          
י"א- bx],bl]  mov                                                                                                                                              
י"ב- [bx],ax mov                                                                                                                                           
י"ג- [5+al,[bx   mov                                                                                                                                            
י"ד- si]][ v) mov ax,[vמקצה כ dw)                                                                                                                            
ט"ו- [4]mov al,[bx][si]                                                                                                                         
ט"ז- 4+mov al,[bx][si]                                                                                                                                                                                                                                                                  
י"ז- mov al,4[bx][si]                                                                                                                                                                                                                                                                   
                                                                             
הוראת xchg                                                                                                                                                   
תחביר: op1,xchg op1,op2 ו op2 הם שמות של משתנים או אוגרים (כל אחד מהם גודלו בית או מילה).אסור לאף אחד מהם להיות מספר קבוע.                                                                                                                   
פעולה זו מחליפה את op2 ו op1 ביניהם.כלומר,המספר שהיה רשום ב op1 יעתק ל op2 ולהפך.                                                                                                                                                       
הוראה זו אינה משפיעה על הדגלים.                                                                                                                               
הערות:                                                                                                                                                        
א-אסור ל 2 האופרנדים להיות משתני זכרון.לדוגמה: ההוראה xchg v1,v2 שגויה.                                                                                      
ב-מותר ל 2 האופרנדים להיות אוגרים,אולם שניהם חיבים להיות בית או מילה.                                                                                        
ג-מותר לאחד האופרנדים להיות משתנה זכרון ולשני אוגר אולם שניהם חיבים להיות בית או מילה.                                                                                                                                                    
דוגמאות                                                                                                                                                      
א- xchg a_word,dx                                                                                                                                             
ב- xchg ah,cl                                                                                                                                             
                                                                             
הוראת nop                                                                                                                                                    
תחביר: nop                                                                                                                                                   
הוראה זו היא פעולת סרק (הוראת מכונה h90)                                                                                                                      
הוראה זו אינה משפיעה על הדגלים.                       

המשך לחלק הבא
                                                                                                       

‏אין תגובות:

הוסף רשומת תגובה