『壹』 急急!!!8086/8088微處理器的定址空間有1M為什麼
「8086/8088微處理器內部的地址匯流排只有16位」這句話你理解錯了,不是內部地址匯流排有16位,而是寄存器是16位的,例如AX,BX,SI,DI都是16位的,它們能表示的地址碼所以只有16位的。2的16次方等於64K,這是我們作為程序編寫者能通過寄存器直接訪問的內存空間。而8086/8088CPU提供的地址匯流排有20位,2的20次方等於1M,這是CPU它自己能訪問的最大內存空間。
這就有個矛盾了:CPU能訪問1M內存,而寄存器卻只能表示64K內存大小。所以就引入段地址和偏移地址的概念。把這1M 的內存空間分成64K大小的一段段,指定哪一段,然後再在這個段的開始加上「偏移地址」,這不就可以訪問1M內存的任意空間了?
段地址怎麼得到的問題:
比如在匯編數據段某處聲明了某個字元變數 STR
MOV DX,SEG STR
通過SEG 語句則可把STR所在段地址取出來,送給DX.
一上內容希望對你有幫助!
『貳』 16位微型機的地址匯流排為20位,其可定址空間為2^20=1MB
地址匯流排的寬度是20位,即能傳送到內存的物理地址是20位
cup是16位,通過:物理地址=段地址*16+偏移地址
分別傳送16位的段地址和16位的偏移地址到地址加法器,段地址(16進制)*16相當於左移一位,再加上偏移地址定位到內存的物理地址。經過運算之後的物理地址即是20位。
『叄』 8086的地址匯流排有20根,定址范圍為( 1M )位元組。
8086CPU地址匯流排有20根,能定址1MB的存儲單元。
8086CPU通過16條數據匯流排、20條地址匯流排和若干條控制匯流排與外部進行數據交換。由於地址匯流排有20條,所以CPU可以訪問的存儲單元數為2的20次方,即1M個存儲單元。每個存儲單元存放8位二進制數,即一個位元組,且這些存儲單元都是順序排列的,每個單元用唯一的一個物理地址標示,這個物理地址既是由地址匯流排得到的20位二進制數。
關於定址范圍這里強調一下,N位地址線能訪問2的N方個存儲單元。比如:1位地址線只能訪問2個存儲單元,兩位地址線能訪問4個存儲單元,等等。
至於每個存儲單元的大小要看CPU的字長了,即CPU的數據匯流排。8086的字長為16位,它的數據匯流排為16位,本應該存儲單元是16位的,但為了與8位機兼容,將這16位分成了高8位和低8位,在定址時用19位地址線確定16位的存儲單元,用另一根地址線決定是高8位還是低8位。
『肆』 8086CPU 有20位地址匯流排,可以傳送20位地址,達到1MB定址能力,請問這句話怎麼理解
2的20次方是1M。大叔。這個都不會啊.囧。
2^20=1048576=(1048576/1024=1024K)=1M
電腦是二進制的。地址匯流排只是表示地址。地址內部表示為xxxxxxxxxxxxxxxxxx。可以表述1M個地址。
至於每個地址是8bit(一個位元組B),還是16bit(雙位元組),還是32bit(四位元組,目前常用),那根據處理器的,8086好像是8位數據,容量最大1MB。
『伍』 為什麼20位二進制數可以存儲1MB個存儲單元地址
其實,20位二進制定址1M存儲空間,實際可以看做20根地址線接入存儲器,那麼每根線出現的數不是0就是1也就是二進制。
比如A0號線到A19依次出現的是:00000000000000000001 ,那麼這20根地址線經翻譯到存儲器就是要找1#的存儲器地址存儲的內容,在1#存儲器存的就是一個8位的位元組。
補充:M是一種表示方法,就像K,T等,沒有非要用M、K、T來表示文件,他們都是沒有單位的,所以要表示比如 存儲器要加單位,如存儲器真正要說就是1MB而不能說1M。
『陸』 假若CPU向外輸出20位地址,則它能直接訪問的存儲空間是多大如何計算
假若CPU向外輸出20位地址,則它能直接訪問的存儲空間可達1MB。
PC機在使用過程中突然斷電,RAM中存儲的信息將全部丟失(不論是SRAM還是DRAM)。外存儲器中的信息首先被調入內存中,才能被CPU處理。假若CPU向外輸出20位地址,則它能直接訪問空間可達220=1MB。
公式是:「可直接定址的物理地址空間=2^地址線的根數」後面的單位是Byte。2^20(2的20次方)=1,048,576Byte,1M=1024Bt=1024*1024Byte=1048576Byte由此可知定址空間為1M了。
(6)為什麼20位物理地址內存是1M擴展閱讀:
1、立即定址(立時定址、立即操作數)
指令中直接給出了操作數,操作數緊跟在操作碼的後面,在取出指令的同時,也就取出了操作數。立即有操作數可供操作之用,所以稱為立即操作數,或立即定址。
立即定址的指令執行起來很快,CPU將數據與指令一起從存儲器取出,不必通過定址計算就獲得了操作數。立即定址也便於程序員使用。但是,因為數據和地址都是固定的,所以這種定址方式靈活性最差。
立即定址方式可用來提供常數,設置初始值等。
2、直接定址
指令中的地址碼是操作數的有效地址,用這個有效地址訪問一次存儲器便獲得操作數,這種定址方式稱為直接定址。
因為不需要任何定址計算,所以稱指令帶有操作數的有效地址的定址方式為直接定址。通常說定址的范圍就是用這個地址直接訪問存儲空間的大小,它也受到地址欄位長度的限制。
對於使用次數很少又不需要做什麼變化的地址碼,可採用直接定址方式。
3、間接定址
間接定址方式意味著指令中的地址欄位使操作數地址的地址,即操作數的地址是間接提供的,通常在指令格式中劃出一位作為直接定址或間接定址的標志位,間接定址用標志符@指出。
CPU先從存儲器中取出含有間接地址的指令,然後訪問間接地址單元,從中取出有效地址。CPU需要多執行一次訪問存儲器操作,所以間接定址比直接定址執行速度要慢。
參考資料:網路-定址概念
『柒』 8086CPU的地址線是20根,最大可定址1MB的存儲空間,為什麼其物理地址范圍從00000H~FFFFFH
答:8086CPU定址范圍1MB。因為8086CPU地址線為20條,2^20=1024KB,即1MB。8086系統中,指令僅給出16位地址,與定址有關的寄存器也只有16位長,因此定址范圍只有64KB,為了定址1MB,所以分成四個邏輯段。當CPU訪問內存時,段寄存器的內容(段基址)自動左移4位(二進制),與段內16位地址偏移量相加,形成20位的物理地址。
採用分段結構的存儲器中,任何一個邏輯地址都由段基址和偏移地址兩部分構成,都是 16位二進制數。
物理地址:存儲器的絕對地址,從00000H~FFFFFH,是CPU訪問存儲器的實際定址地址(也稱為絕對地址)
16位的段基址左移4位(相當於在段基址最低位後添4個「0」),然後與偏移地址相加獲得物理地址,這相當於完成如下的地址運算:
物理地址=段基址×16+偏移地址
?
採用分段結構的存儲器中,任何一個邏輯地址都由段基址和偏移地址兩部分構成,都是 16位二進制數。
物理地址:存儲器的絕對地址,從00000H~FFFFFH,是CPU訪問存儲器的實際定址地址(也稱為絕對地址)
16位的段基址左移4位(相當於在段基址最低位後添4個「0」),然後與偏移地址相加獲得物理地址,這相當於完成如下的地址運算:
物理地址=段基址×16+偏移地址
『捌』 20位地址匯流排可以訪問1M個存儲單元但為什麼又可說成1MB呢1B不是指8位二進制數嗎
20根地址線可以定址1048576個地址空間,也就是1兆個不同地址
如果每個地址存儲大小為1byte,那麼這20根地址線就是定址1M位元組(1MB)的數據了
『玖』 問一個微機原理的問題8086
段地址: 0000 0000 0000 0000 (16bit)
偏移地址:+ 0000 0000 0000 0000 (16bit)
--------------------------------------------------------
0000 0000 0000 0000 0000 (20bit)
2的20次方就是1024KB,也就是1MB
段地址是放在段寄存器裡面的,而段寄存器顯然是16位的。但是為什麼說他是20位段地址呢?
就是因為BIU(Bus Interface Unit)在取段寄存器的內容時,將整個值左移了4位,
所以就形成了20位,再加到偏移地址上,就形成了20位的定址能力。
當然了,這是實模式下的。如果是保護模式,段寄存器放的是描述符。
這些內容你就看intel那本匯編的書吧,將的很詳細
『拾』 為什麼20位地址匯流排對應2^20B=1MB直接定址空間為什麼這樣算1位不是代表1位二進制數嗎
20位地址線,就有2^20=1048576=1M種狀態,因此可以定址1M存儲空間。一般說來,在計算機中,內存是按照位元組來訪問的,位元組的英文是Byte,1M位元組的內存空間就寫為1MB。因此20位地址線可以訪問1MB內存空間,說的是,用20位地址線訪問1M位元組內存空間,每一次訪問一個位元組的內存單元。