کی گفته پردازنده به سیستم عامل وابسته هست؟
=======
من حرفتون رو بد متوجه شده بودم شرمنده
=======
در ضمن برای پردازدنده یا قابلیت سویچ به حالت حفاضت شده این آدرس 48 بیت طول داره نه 20 بیت.
======================
اين 48 بيت رو يك مثال ميزنيد؟ يك مثال خوب براي اين آدرس دهي!
http://en.wikipedia.org/wiki/Protected_mode
تا جايي كه من مي دونم براي 80286 24 بيت كه 16 مگابايت ميشه و در حالت واقعي هم
2 به توان 20 كه ميشه يك مگابايت و مستقيم هم 64 كيلوبايت
و براي 80386 هم32 بيت كه 4 گيگابايت ميشه
ضمنا از اونجايي كه اين دوستان مثال هاي كتاب پيام نور مي زنند و در اين كتاب اصلا حرفي از
مد هاي پردازنده نشده منم نخواستم اونهارو درگير مسائل ديگه كنم و فقط پرسش به سوال مربوطه بود.
======================
این قانون ریزپزدازنده هست که این کار رو بکنه حالا من ds رو برابر یک قرار میدم ادرس فیزیکی من کجاست؟
==========
من كه منظورتون رو نفهميدم از اين حرف
اما اين مثالي كه زدين جوابش ميشه 00010 و به اين خانه از حافظه اشاره ميكنه.
اين قانون هم نانوشته نبوده با همين الگوريتم در پردازنده به كار بردن مثل خيلي مسائل ديگه
تا برنامه نويش كمتر درگير جزئيات شه
==========
نه 48 رقم باینری هستنه 20!
برای 8088و 8086 به این شکلی هست که شما میگید.
============
من كه اين 48 رو متوجه نشدم شايد اشاره گر ها رو ميگين در حالت حفاظت شده
اما اين مدي كه من گفتم در تمامي پردازنده ها اجرايي هست بدليل "backward compatibale" بودن پردازنده هاي جديدتر
مثال بزنيد ما هم ياد بگيريم!
============
==========
كجا ديدن اين irpc ؟ لينك يا صفحه كتابش رو بگين!
==========
اخه جواب نمیگیرم اصلا تفاوت رشته ای که توی اکسترا و دیتا تعریف شه چیه؟
و
lea si,es:here یعنی چی؟
============
كلا es براي كار با رشته ساختن مثل دستورات كار با رشته و تو برنامه كه طولاني شه شما يك سگمنت مخصوص براي كار با رشته داري و حداقل فايده اينه به جز كارايي!!! شما تفكيك سازي كردي
اينم مثال:
; multi-segment executable file template.
data segment stack 'data'
; add your data here!
ends
exterasg segment para stack 'extra'
txt1 db "Lea si,es:here$"
here db "LEA get your variable start address of ES=SEGMENT & here=OFFSET and put in SI$"
pkey db "Press any key...$"
ends
stack segment stack 'stack'
dw 128 dup(0)
ends
code segment stack 'code'
start:
; set segment registers:
mov ax, data
mov ds, ax
mov ax, exterasg
mov es, ax
; add your data here!
lea si,es:here
lea dx, txt1
mov ah, 9
int 21h
mov ah, 2
mov dl, 0dh
int 21h
mov dl, 0ah
int 21h
mov dl, 07h ;beep :D
int 21h
lea dx, here
mov ah, 9
int 21h
mov ah, 2
mov dl, 0dh
int 21h
mov dl, 0ah
int 21h
mov dl, 07h ;beep :D
int 21h
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.
============================