Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; multi-segment executable file template.
- data segment
- ; add your data here!
- pkey db "press any key...$"
- arr1 DB 36dup (?)
- arr2 DB 36dup (?)
- ends
- stack segment
- dw 128 dup(0)
- ends
- code segment
- start:
- ; set segment registers:
- mov ax, data
- mov ds, ax
- mov es, ax
- mov si,0 // האינדקס של המקומות במערך 2
- mov bx,0 // האינדקס של המקומות במערך 1
- mov cx,35 // תנאי עצירה
- first: // תחילת הלולאה שמעתיקה את מערך 1 לתוך מערך 2 - כולל הבדיקות
- mov ax,arr1[bx] // הכנסת הערך שבמערך 1 לתוך אוגר
- jmp before_check: // ישר לאחר מכן נכנס לבדיקה - האם הערך שבתוך האוגר כבר קיים בתוך המערך השני
- a1: // במקרה שהערך שבתוך האוגר לא קיים במערך השני, הבדיקה מקפיצה אותו לפה
- mov arr2[si],ax // הכנסת הערך לתוך המקום המתאים במערך 2
- inc si
- inc bx
- loop first
- jmp finish // בסוף הלולאה - לסיים, כדי לא לעבור דרך הבדיקות האלה ולקלקל את המערכים
- before_check: // התת-תכנית שבודקת האם הערך קיים במערך 2 או לא, במקרה שכן -קופצת ללייבל איי2
- mov di,0 // אינדקס חדש למערך 2 , כדי לשמור על ערכו של האינדקס הקודם
- check: // התחלת הבדיקה
- mov dx,arr2[di] // הכנסת הערך שבמערך 2 לתוך אוגר די-איקס
- cmp ax,dx // השוואה- האם הוא קיים או לא
- jz a2 // אם קיים - קפוץ לאיי-2
- inc di // אחרת, המשך בבדיקה לאורך כל המערך
- cmp di,35 // תנאי עצירה - אם כבר עבר על כל המערך ועדיין לא מצא- כנראה שהערך לא קיים.
- jz a1 // אם כך, חזור לאיי-1, שם הערך ייכנס למערך 2
- jmp check // אם לא, חזור והמשך בלולאה
- a2:
- cmp bx,35 // קודם כל בודק מה מצב בי-איקס, אם 35- אין לאן להתקדם והתוכנית מסיימת
- je finish // הקפיצה לסיום
- inc bx // אם לא, קדם את בי-איקס באחד וע"י כך התעלם מהערך שכבר קיים במערך
- jmp first // חזור להתחלה
- finish: nop
- lea dx, pkey
- mov ah, 9
- int 21h ; output string at ds:dx
- ; wait for any key....
- mov ah, 1
- int 21h
- mov ax, 4c00h ; exit to operating system.
- int 21h
- ends
- end start ; set entry point and stop the assembler.
Advertisement
Add Comment
Please, Sign In to add comment