רגיסטרים

הפרמטרים יוצבו ברגיסטרים.

השיגרה מקבלת פרמטר ברגיסטר מסוים ומחזירה ברגיסטר כלשהו.

יתרונות השיטה:

  • פשטות
  • יעילות

חסרונות השיטה:

  • לא ניתן להעביר הרבה פרמטרים בעזרת שיטה זו.
  • השיטה גורמת ל"בזבוז" של אוגרים.

הפונקציה שהדגמנו קודם, 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

מאת: שמעון הטבח

העלמות הזין של יוסי הקוסם

יוסי יקירי
אם הזין שלך נעלם בתוך מחסנית קסמים אני מקווה לפחות שאתה לא מתכוון לחבר את המחסנית לרובה דרוך

בשמחה שמעון הטבח
מאת: הילה

si

היי, איך הכנסתם ערך כלשהו למערך? כשעשיתם MOV ARR2[SI], AL. למה si נמצא בסוגריים? מה הוא אומר?
מאת: יוסי הקוסם

העלמות זין

נעלם לי הזין מקסם שהשתבש (דחפתי את הזין למחסנית קסם וניראה לי שלא העברתי את הזין לטיפוס מילה הזיו שלי ללא ברית מילה אז זה השתבש)
תעזרו בבקשה!!!
שיתוף:
| עוד