מערכים
מערך הוא רצף של תאים בזיכרון, שניתן להתייחס לכל אחד מהם
כאל משנה, ששמו הוא שם המערך בצירוף אינדקס.
למשל, נניח כי נגדיר את המערך ARR, אזי התא הראשון במערך הינו ARR[0],
התא השני הינו ARR[1] וכו'.
יצירת מערך מאותחל
כדי ליצור מערך ולאתחל את התאים שבו, נגדיר משתנה, ולאחריו
נרשום מספר ערכים המופרדים ביניהם על ידי פסיקים.
לדוגמא:
על ידי פקודה זו יצרנו מערך בן שלושה תאים, אשר כל אחד מהם
בן בית אחד.
בתא הראשון שמור המספר 7, בתא השני שמור המספר 8 ובתא השלישי
שמור המספר 9.
התא הראשון במערך הוא תא מספר 0, התא השני הוא תא מספר 1
והתא השלישי הוא תא מספר 2.
הקוד הבא מדגים שימוש באיברי המערך. אנו שמים את התא הראשון
של המערך ב-AL ואת התא האחרון ב-AH:
MOV AL, ARR1[0]
MOV AH, ARR1[2]
יצירת מערך לא מאותחל
ניצור מערך לא מאותחל על ידי שימוש במילה DUP,
לדוגמא:
הפקודה יוצרת מערך לא מאותחל בעל 9 תאים.
דוגמא
הדוגמא הבאה מעתיקה נתונים ממערך אחד לשני, ומדפיסה לאחר מכן
את תוכן המערך השני על המסך.
STA SEGMENT STACK
DB 100H DUP (0)
STA ENDS
DATA SEGMENT
ARR1 DB 31H, 32H, 33H,
34H, 35H, 36H, 37H, 38H, 39H
ARR2 DB 9 DUP (?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,
DS:DATA, SS:STA
START:
MOV AX, DATA
MOV DS, AX
MOV SI, 0
CPYLOOP:
MOV AL, ARR1[SI]
MOV ARR2[SI], AL
INC SI
CMP SI, 9
JNE CPYLOOP
MOV SI, 0
PRNLOOP:
MOV DL, ARR2[SI]
MOV AH, 2H
INT 21H
INC SI
CMP SI, 9
JNE PRNLOOP
; End the program
MOV AX, 4C00H
INT 21H
CODE ENDS
END START
נשים לב כי היינו חייבים להשתמש באוגר ביניים כדי להעביר
מידע בין המערכים.
העלמות הזין של יוסי הקוסם
יוסי יקיריאם הזין שלך נעלם בתוך מחסנית קסמים אני מקווה לפחות שאתה לא מתכוון לחבר את המחסנית לרובה דרוך
בשמחה שמעון הטבח