Global Memory Table מפת זיכרון כללית
8086 CPU can access up to 1 MB of random access memory (RAM), it is limited by segment/offset construction. Since segment registers (CS, SS, ES, DS) can hold maximum value of 0FFFFh and offset registers (IP, BX, SI, DI, BP, SP) can also hold maximum value of 0FFFFh, the largest logical memory location that we can access is FFFF:FFFF or physical address: 0FFFFh * 10h + 0FFFFh = 10FFEFh =
                 = 65535 * 16 + 65535 =
                 = 1,114,095 bytes
Modern processors have a larger registers so they have much larger memory area that can be accessed, but the idea is still the same.

Memory Table of Emulator (and typical IBM PC) with physical address of memory area:

המעבד 8086 יכול לגשת לזיכרון קריאה / כתיבה
(
RAM) לכמות של עד 1MB כתובות, כמות זו מוגבלת על ידי מבנה המקטע או האופסט (קיזוז). מאחר ואוגרי הסגמנטים (CS,SS,ES,DS) יכולים לכלול ערך  מרבי של 0FFFFh, ואוגרי האופסט
 (
IP,BX,SI,DI,BP,SP) גם הם יכולים לכלול ערך מרבי של  0FFFFh, הכתובת הלוגית הכי גבוהה אליה אנו יכולים לגשת היא: FFFF:FFFF או כתובת פיזית:
   
      =0FFFFh * 10h + 0FFFFh = 10FFEFh
 65535 * 16 + 65535 =
        1,114,095 בתים =

מעבדים מודרניים כוללים אוגרים גדולים יותר
לכן יש להם גישה להרבה יותר זיכרון, אבל
הרעיון הוא עדיין אותו דבר.
 


בהמשך, טבלת הזיכרון של תוכנת האמולטור (ושל מחשב אישי IBM טיפוסי) עם כתובות פיזיות של אזור הזיכרון:

Physical address
כתובת פיזית

Short Description

תיאור קצר

00000h -
     
00400h

Interrupt vectors. Emulator loads "INT_VECT" file at the physical address 00000h.

מצביעים של פסיקות. תוכנת האמולטור טוענת את הקובץ "INT_VECT" בכתובת הפיזית 00000h.

00400h -
    
 00500h

System information area. We use a trick to set some parameters by loading a tiny last part (21 bytes) of "INT_VECT" in that area (the size of that file is 1,045 or 415h bytes, so when loaded it takes memory from 00000 to 00415h).
This memory block is updated by emulator when configuration changes, see System information area table.

אזור של מידע על המערכת. אנחנו משתמשים בטריק על-מנת לקבוע כמה פרמטרים על ידי טעינת חלק קטן (21 בתים) של הקובץ "INT_VECT" באזור הזה. הגודל של הקובץ הוא 1,045 או 415h בתים, כלומר, כאשר הקובץ ניטען הוא לוקח זיכרון מכתובת 00000 עד 00415h. קטע זה של הזיכרון מעודכן על ידי האמולטור כאשר משנים את ההגדרות, מומלץ לקרוא את טבלת אזור המידע של המערכת.

00500h -
    
 A0000h

A free memory area. A block of 654,080 bytes. Here you can load your programs.

אזור פנוי של הזיכרון. מקטע של 
 654,080 בתים.  כאן אתה יכול להטעין את התוכניות שלך.

A0000h -
    
 B1000h

Video memory for VGA, Monochrome, and other adapters. Not used by emulator!

זיכרון לנתוני מסך למתאמים מסוג VGA, Monochrome ואחרים.
 לא נתמך על ידי האמולטור!.

B1000h -
    
 B8000h

Reserved. Not used by emulator!

שמור. ללא שימוש על ידי האמולטור!.

B8000h -
    
 C0000h

32 KB video memory for Color Graphics Adapter (CGA). Emulator uses this memory area to keep 8 pages of video memory. The Emulator screen can be resized, so less memory is required for each page, although emulator always uses 1000h (4096 bytes) for each page (see INT 10h / AH=05h in the list of supported interrupts).

32KB זיכרון לנתוני מסך עבור מתאם גרפיקה צבעוני (סוג CGA).
האמולטור משתמש באזור הזה של הזיכרון לשמירת 8 דפים של זיכרון המסך.
ניתן לשנות את גודל המסך של האמולטור, כך שפחות זיכרון יידרש עבור כל דף, למרות שהאמולטור תמיד משתמש ב-
1000h
(4096 בתים) עבור כל דף. ראה הסבר לגבי פסיקה
10h פונקציה 5 ברשימת הפסיקות הנתמכות.

C0000h -
    
 F4000h

Reserved.

אזור שמור

F4000h -
   
 10FFEFh

ROM BIOS and extensions. Emulator loads "BIOS_ROM" file at the physical address 0F4000h. Interrupt table points to this memory area to get emulation of interrupt functions.

זיכרון קבוע BIOS והרחבות.
האמולטור טוען את הקובץ "
BIOS_ROM" בכתובת הפיזית 0F4000h. טבלת מצביעי הפסיקות מצביעה לאזור הזה של הזיכרון לביצוע אמולצייה של פונקציות הפסיקות.

INT number
in hex

מספר פסיקה

Address in
Interrupt Vector
כתובת הפסיקה

Address of BIOS
 sub-program

כתובת תת התוכניות

פירוט תת התוכניות של מערכת ההפעלה  הבסיסית של קלט/פלט - BIOS


00
  

04
  
  

10


11
 

12


13


15


16


19

1A


1E




20
  


21

all others

00x4 = 00
         

04x4 = 10
         
         

10x4 = 40


11x4 = 44
         

12x4 = 48


13x4 = 4C


15x4 = 54


16x4 = 58


19x4 = 64

1Ax4 = 68


1Ex4 = 78
         



20x4 = 80
         


21x4 = 84

??x4 = ??
 

F400:0170 - CPU-generated,
            divide error.

F400:0180 - CPU-generated,
            INTO detected
                overflow.

F400:0190 - Video
            functions.

F400:01D0 - Get BIOS
           equipment list.

F400:01A0 - Get memory
              size.

F400:01B0 - Disk
            functions.

F400:01E0 - BIOS
            functions.

F400:01C0 - Keyboard
            functions.

FFFF:0000 - Reboot.

F400:0160 - Time
            functions.

F400:AFC7 - Vector of
            Diskette
            Controller
            Params.

F400:0150 - DOS function:
            terminate
            program.

F400:0200 - DOS functions.

F400:0100 - The default
            interrupt
            catcher.
            Prints out
 "Interupt not supported
            yet" message.


00 - נוצר על ידי ה-CPU

      שגיאה בחילוק.

04 - נוצר על ידי ה-CPU
      התגלה בקשה לפסיקה INT0
      עקב גלישה.

10 -פונקציות של המסך

11 -קבל את רשימת הציוד מתוך ה-BIOS .


12 - קבל את גודל הזיכרון.


13 - פונקציות של הדיסקים


15 - פונקציות של מערכת ההפעלה
       בסיסית של קלט פלט - BIOS.

16 - פונקציות של המקלדת.

19 - אתחול מחדש של המחשב.

1A - פונקציות השעון.


1E - פרמטרים של בקר הדיסקטים.



20 - פונקציה של מערכת הפעלה DOS:
      סיום תוכנית.


21 - פונקציה של מערכת הפעלה DOS.


פסיקת ברירת מחדל הבודקת נכונות של בקשות לפסיקה.
גורמת להדפסת הודעה של פסיקה שטרם נתמכת על ידי האמולטור.

A call to BIOS sub-system is disassembled by "BIOS DI" (it doesn't use DI register in any way, it's just because of the way the encoding is done: we are using "FF /7" for such encoding, "FFFFCD10" is used to make emulator to emulate interrupt number 10h).

F400:0100 has this code FFFFCDFF (decoded as INT 255, and error message is generated).

System information area (memory from 00400h to 00500h) :

הקריאה לתת המערכות של BIOS מפוענחת על ידי   "BIOS DI".
אף פסיקה לא משתמשת באוגר
DI. זאת פשוט  בגלל הדרך שהקידוד נעשה: משתמשים ב- "FF/7" לצורך הקידוד, משתמשים בצופן "FFFCD10" לאמולציה של הפסיקה מספר 10h.

בכתובת
F400:0100 קיים הצופן FFFFCDFF (לאחר הפענוח האמולטור מגלה שזאת פסיקה מספר 255, ומייצר הוראת שגיאה בהתאם).



אזור של מידע לגבי המערכת
, שטח הזיכרון
מ- 00400
h ועד 00500h :
Address (hex)
כתובת

Size

 גודל

Description  -  הסברים

0040h:
 
0010h
WORD

מילה

BIOS equipment list. - .רשימת הציוד של מערכת ההפעלה הבסיסית

Bit fields for BIOS-detected installed hardware:
       שדות הסיביות של הציוד המותקן כפי שמערכת ההפעלה גילתה

 
Bit(s)        Description
                  הסברים
סיביות
 15-14  number of parallel devices.  כמות התקנים מקבילים
 13     not supported.               ללא תמיכה
 12     game port installed.         שער משחקים מותקן
 11-9   number of serial devices.    כמות התקנים טוריים
 8      reserved.                    שמור
 7-6    number of floppy disk drives (minus 1):
                             כמות כונני דיסקטים פחות אחד
          00 single floppy disk;     כונן דיסקטים בודד
          01 two floppy disks;       שני כונני דיסקטים
          10 three floppy disks;     שלוש כונני דיסקטים
          11 four floppy disks.      ארבע כונני דיסקטים
 5-4    initial video mode:        הגדרה ראשונית של המסך
          00 EGA,VGA,PGA, or other with on-board video BIOS;
                          או כל אחד אחר עם "ביוס" במעגל
          01 40x25 CGA color;                 צבע בסיסי
          10 80x25 CGA color (emulator default);    צבע
          11 80x25 mono text.          כתב רגיל ללא צבע
 3      not supported.                     
ללא תמיכה
 2      not supported.                     
ללא תמיכה
 1      math coprocessor installed.         מותקן מעבד מתמטי
 0      set when booted from floppy (always set by emulator).
                     ערך 1 כאשר מפעילים מתוך דיסקט ובאמולטור

This word is also returned in AX by INT 11h.
                                  Ax פסיקה 17 מחזירה את המילה לתוך הצובר

Default value:                                            :ערך ברירת המחדל הוא
                 0021h or 0000 0000 0010 0001b

0040h:
 
0013h
WORD

מילה

Kilobytes of contiguous memory starting at absolute address 00000h.
               00000h קילו-בתים של רצף זיכרון החל מכתובת מוחלטת

This word is also returned in AX by INT 12h.
                             Ax פסיקה 18 מחזירה את המילה לתוך הצובר

This value is set to:   0280h (640KB).     :ערך ברירת המחדל הוא

0040h:
 
004Ah
WORD

מילה

Number of columns on screen.                 מספר עמודות במסך
Default value: 0032h (50 columns).    : ערך ברירת המחדל הוא

0040h:
 
004Eh
WORD

מילה

Current video page start address in video memory (after 0B800:0000).
          0B800:0000 כתובת התחלה של דף המסך הנוכחי לאחר

Default value: 0000h.                        : ערך ברירת המחדל הוא

0040h:
 
0050h

8 WORDs

8 מילים

Contains row and column position for the cursors on each of eight video pages.
          מכיל מיקום של שורה ועמודה של הסמן לכל דף של מסך
Default value: 0000h (for all 8 WORDs). :ערך ברירת המחדל הוא
0040h:
 
0062h
BYTE - בית Current video page number.      מספר דף מסך נוכחי
Default value: 00h (first page). : ערך ברירת המחדל הוא
0040h:
 
0084h
BYTE - בית

Rows on screen minus one.                    שורות במסך פחות אחת
Default value: 13h (19+1=20 columns). :ערך ברירת המחדל הוא

See also: Custom Memory Map

ראה גם: הגדרת מפת זיכרון