首先, 寄存器(通常意義上的"內存") 和 特殊功能寄存器, 不是同一個概念. 也不是同一個東西。
特殊功能寄存器并不是“內存”, 之所以說 在 0x80~0xff 這個直接地址,是給你一個 訪問路徑, 讓你可以用 MOV指令 對0x80 這個直接地址的讀寫操作,作用到 P0 總線上,并不是說這個地址的背后,是一個“內存”,你可以把這個直接地址當作是一個電話號碼,當特殊寄存器列表沒有 列出最終目標,比如 0xf1~0xff 時,它極大的概率是空號。對這些地址的讀寫是一個無效操作。即無法保存你寫入的值,也無法取回你以為已經寫入的值。
而正因為給了特殊寄存器“占用”了0x80~0xff的直接地址。 因此,有256字節標準寄存器的51系列單片機對于高位的 80~ff 地址的“內存”,只能使用間接地址@R1方式訪問。
|