60 likes | 157 Views
Assembly For X86. Chapter 8. שימוש בפקודות 32 סיביות. ניתן להשתמש ברגיסטרים המורחבים לפעולות ב-32 סיביות. יש להצהיר שמשתמשים בפקודות 386 .model small .386 .code. פקודות לטיפול במחרוזות. mov cx,[bp+8] mov si,[bp+6] mov di,[bp+4] rep movsw העתקה אוטומטית של זיכרון מ- [si] ל – [di]
E N D
Assembly For X86 Chapter 8
שימוש בפקודות 32 סיביות • ניתן להשתמש ברגיסטרים המורחבים לפעולות ב-32 סיביות. • יש להצהיר שמשתמשים בפקודות 386 .model small .386 .code
פקודות לטיפול במחרוזות mov cx,[bp+8] mov si,[bp+6] mov di,[bp+4] rep movsw העתקה אוטומטית של זיכרון מ- [si] ל – [di] rep – חזרה על הפעולה cx פעמים rep – repeat string prefix
פקודות • lodsb – הכנסת תוכן הביית שכתובתו si לאוגר al והגדלת/הקטנת si • אם 0=DF האוגרים si,di יוגדלו אוטומטית • אם 1=DF האוגרים si,di יוקטנו אוטומטית • CLD, STD • lodsw – כנ"ל עבור AX והגדלה ב-2 • lodsd – 32 סיביות בכתובת ESI לאוגר EAX (4)
stosb – העתקת הביית ב- AL ל – [di] • stosw – AX[di] • stosd – EAX [edi] • movsb – [si][di] • movsw – 16 סיביות • movsd – 32 סיביות • scasb – השוואת הביית ב- AL לביית ב – [di] ושינוי הדגלים בהתאם לתוצאה (הגדלת di) • scasw/scasd – עבור 16/32 סיביות • cmpsb – השוואה בין [si] ל –[di] • cmpsw/cmpsd
דוגמא mov si,[bp+6] mov di,[bp+4] cld mov cx,4 repz cmpsb mov ax,1 cmp cx,0 jz done mov ax,0 done: