רגיסטרים
			
			  
 
הפרמטרים יוצבו ברגיסטרים.
 
השיגרה מקבלת פרמטר ברגיסטר מסוים ומחזירה ברגיסטר כלשהו.
 
 
יתרונות השיטה:
 
 
 
חסרונות השיטה:
 
- לא ניתן להעביר הרבה פרמטרים
בעזרת שיטה זו.
- השיטה גורמת ל"בזבוז"
של אוגרים.
הפונקציה שהדגמנו קודם, PUTCHAR, משתמשת ברגיסטר DL
כפרמטר.
 
 
 
העברת
פרמטרים על ידי מחסנית
 
 
ניתן להעביר לשגרה נתונים באמצעות המחסנית. דרך זו היא הדרך
המקובלת ביותר על ידי שפות עיליות להעברת פרמטרים לפונקציות.
 
לפני שקוראים לשגרה, התוכנית דוחפת  הפרמטרים שלה על
המחסנית, ורק לאחר מכן נעשית הקריאה לשגרה.
 
 
יתרונות השיטה:
 
- מודולריות.
- תמיכה ברקורסיה.
חסרונות השיטה:
 
- איטית ביחס לעבודה עם רגיסטרים.
דוגמא 1:
 
נשכתב את הדוגמא שהצגנו קודם, ונגרום שהפעם הפרמטר עבור PUTCHAR
יעבור דרך המחסנית ולא כרגיסטר.
 
 
 
STA SEGMENT STACK
     DB 20 DUP (0)
STA ENDS
CODE SEGMENT
     ASSUME CS:CODE, SS:STA
START: 
     MOV AX, 'A'
     PUSH AX
     CALL PUTCHAR
     MOV AX, 'B'
     PUSH AX
     CALL PUTCHAR
     MOV AX, 'C'
     PUSH AX
     CALL PUTCHAR
     ; End the program
     MOV AX, 4C00H
     INT 21H
PUTCHAR:
     POP BX
     POP DX
     MOV AH, 2
     INT 21H
     PUSH BX
     RET
CODE ENDS
END START
   
 
 
 
דוגמא 2:
 
התוכנית הבאה כוללת פונקציה בשם PUTS אשר מקבלת מצביע אל מחרוזת
דרך המחסנית, ומדפיסה אותו על המסך.
 
 
 
DATA SEGMENT
     STR1 DB 'Hello, World$'
DATA ENDS
STA SEGMENT STACK
     DB 100H DUP (0)
STA ENDS
CODE SEGMENT
     ASSUME CS:CODE,
DS:DATA, SS:STA
START:
     MOV AX, DATA
     MOV DS, AX
     MOV CX, OFFSET STR1
     PUSH CX
     CALL PUTS
     ; End the program
     MOV AX, 4C00H
     INT 21H
PUTS:
     POP BX
     POP DX
     MOV AH, 9
     INT 21H
     PUSH BX
     RET
CODE ENDS
END START
   
 
 
 
    
			
העלמות הזין של יוסי הקוסם
יוסי יקיריאם הזין שלך נעלם בתוך מחסנית קסמים אני מקווה לפחות שאתה לא מתכוון לחבר את המחסנית לרובה דרוך
בשמחה שמעון הטבח