Jump to...
redirecting...

Log for Ubuntu 台灣社群

[photo](media:AgADBQADeagxG4N8yFaEBkKnYvQ_NIdq3jIABOqA152shoOgsnACAAEC@telegram)
请问这里为什么要乘以16 求老司机给下答案
應該是移到高位
为什么移
多谢我看看
其實網路都搜尋的到
我新手
群里问方便点
怎么方便恩怎么来
才是学习的最高境界
老哥 这点你需要体会下
不太能體會,不過總之祝福你一切順利。
這是當初 8086 CPU 上設計的定址方法,使用兩段欄位紀錄位址,一個稱為偏移位址,一個稱為區段位址;區段位址比偏移位址高 4bit,兩者相加後成為實際位址,所以記憶體每 16 bit 就可以從頭以零作為偏移位址起算。這樣設計為的是便於舊的八位元環境程式的移植(八位元 CPU 多半用 16 bit 欄位定址,可達 64K),同時可以讓舊定址方式
4 bit 就是平移四個位元,數值要乘上 2 的 4 次方,也就是 16
這篇有些東西錯了,請勿盡信。建議另找其他資料。
嗯嗯~感謝
谢谢
这是什么字
繁体看不懂
晕了
谢谢
在帮下忙 看下 这个 欄
什么字
裝個新同文堂啊
只是这两个i字装个软件
太费电了
算了
相加成实际位址
你给的这个说得感觉很牵强
有没有图片看下
明明说相加成实际地址
那干嘛还乘以16
没有说出主观目的
我百度下看有什么图
谁有汇编群拉我下 感激不尽
[photo](media:AgADBQADNKgxGzgY2Fb55QABVAOjgHACeN8yAAQfyGeyRXOXpwviAQABAg@telegram)
我看看
多谢
有没有汇编群
拉我
老司机
感激不尽
😁
[photo](media:AgADBQADbKgxG2Nx2VZL6HI_ELPOwQFs3jIABOGp1ocKupxDLHMCAAEC@telegram)
注意區段位址往左移了一位,等於乘以十六進位的 10,也就是十進位的 16
由於這種設計比較特殊,8086 環境下要表示真實位址時,通常用 ABCD:1234 表示,冒號前是區段位址,冒號後是偏移位址。
我看看
[photo](media:AgADBQADb6gxG2Nx2VbJpRLOBOK1KPlW9jIABBWrmgSpXQYYb-kAAgI@telegram)
[photo](media:AgADBQADLagxG13Z2VYD573tnwOHW_Xw3zIABCFbQ54gR2jXuuoAAgI@telegram)
也是 没说出真正原因
只是说要乘以16
没说为什么要乘以16
😳
没说到点上
谢谢你
😁
這……就因為 8086 CPU 的電子線路,在計算實際位址時,真的會把區段位址左移 4 bit 再加上偏移位址。這就是他的電路設計,所以您在寫成事實,要依照他的設計計算,不然就沒法用在 8086 CPU 上面。
反正他强制要求你 向左移一位对吧
随便吧 凑合用
多谢
這個設計能夠縮減指令的長度,也方便移植當時常見的八位元程式
恩嗯嗯
8086 的程式裡,需要進行記憶體存取時,指令碼通常只包含偏移位址,不指定區段位址,以減少長度。而這個偏移位址就跟當時常見的八位元 CPU 所用的定址方式一樣,都是 16 位元長度,所以也方便移植。
沒有區段位址的情況下,預設(默認)使用某個區段暫存器裡的數值作為區段位址。所以只要先正確設定區段暫存器的數值,之後的指令碼就可以正確存取記憶體。
另外,偏移位址有 16 bit 長,定址能力為 64K,習慣上會把能使用同一個區段位址的 64K 記憶體稱作「一個區段」。
好我看看