當前位置:首頁 » 文件傳輸 » 特殊繼存器訪問方式有
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

特殊繼存器訪問方式有

發布時間: 2023-04-18 14:58:41

① 要訪問特殊功能寄存器和片外數據存儲器,可採用哪些定址方式

特殊功辯搭攔能寄存器只能直接定址
片外數據存儲器只能間接定址,只能通過DPTR或R0和R1向A傳送
MOVXA@DPTR
MOVXA@R0/@R1
MOVX@DPTRA
MOVX@R0/攜胡@R1A
這是由指令規定的,所以只要枝閉記住是這么回事就行了,不要問為什麼。

② HTTPS和HTTP有什麼區別,到底安全在哪裡

在上網獲取信息的過程中,我們接觸最多的信息加密傳輸方式悉肆也莫過於 HTTPS 了。每當訪問一個站點,瀏覽器的地址欄中出現綠色圖標時,意味著該站點支持 HTTPS 信息傳輸方式。HTTPS 是我們常見的 HTTP 協議與某個加密協議的混合體,也就是 HTTP+S。這個 S 可以是 TLS(安全傳輸層協議)、也可以是 SSL(安全套接層),不過我更認可另一個抽象概括的說法,HTTP+Security。

首先,HTTPS並不是這種加密技術的正式名稱,HTTPS代表的是「在TLS/SSL上實現的HTTP協議」,因此實現加密的其實是位於HTTP下面的TLS/SSL層。

我們看看TLS/SSL所實現的幾個主要機制:

1. 證書:通過第三方權威證書頒發機構(如VeriSign)驗證和擔保網站的身份,防止他人偽造網站身份與不知情的用戶建立加密連接。

2. 密鑰交換:通過公鑰(非對稱)加密在網站伺服器和用戶之間協商生成一個共同的會話密鑰。

3. 會話加密:通過機制(2)協商的會話密鑰,用對稱加密演算法對會話的內容進行加密。

4. 消息校驗:通過消息校驗演算法來防止加密信息在傳輸過程中被篡改。

通過上述機制,用戶與網站之間的傳輸內容受到了保護,因此能夠獲得很高的安全性。不過,任何密碼學手段都不是絕對安全的,上面幾個機制中其實都存在可能的風險:

1. 證書:如果有人偽造證書,瀏覽器會發出警告,提示用戶該網站的證書可能是偽造的,應該停止訪問,但如果你無視瀏覽器的警告,你的會話信息就有可能被偽造者竊取。此外,如果第三方證書頒發機構遭到攻擊,攻擊者竊取了已頒發的證書密鑰,就可以偽造相應的網站證書,完全騙過瀏覽器的安全機制,這樣的例子的確曾經發生過。

2. 密鑰交換:RSA,這是一種最普遍使用的公鑰加密演算法,一般來說安全性很高。

3. 會話加密:AES-256(CBC Mode),這是一種非常廣泛使用的加密演算法,採用256位密鑰代表其安全性很高,如果採用128位密鑰(AES-128)則安全性就差一些。

4. 消息校驗:SHA1,這是一種散列演算法,SHA1的安全性比MD5要好,但如果採用SHA256則安全性會更好一些。

上面很抽象是不是,我們用「傳紙條」這個人人小時候都做過的事來形象的說明一下。

HTTP

假設你現在正坐在教室里上課,現在你非常想和走道旁的迷人的 TA 說一些話,一般這個時候你會用「傳紙條」的方式來交流。而這個方式和 TCP/IP 協議基本的工作模式十分相像:

通過小動作引起對方注意;

對方以多種可能的方式(注視、肢體語言等)回應於你;

你確認對方感知到你後,將紙條傳給對方;

對方閱讀紙條;

對方給予你閱讀後的反應;

怎麼樣,這個流程是不是很熟悉?

如果你要傳遞紙條的 TA 距離你很遠怎麼辦?HTTP 協議就是指你在紙條上寫明你要傳給的 TA 是誰,或者 TA 的座位在哪,接著只需要途徑的同學拿到紙條後根據紙畢兄條上的指示依次將紙條傳過去就 OK 了。

這個時候問題來了:途徑的同學完全可以觀看並知道你在紙條上寫了什麼。

這就是 HTTP 傳輸所面臨的問題之一:中間人攻擊,指消息傳遞的過程中,處在傳遞路徑上的攻擊者手陸襲可以嗅探或者竊聽傳輸數據的內容。

HTTPS

HTTPS 針對這個問題,採用了「加密」的方式來解決。最著名原始的加密方法就是對稱加密演算法了,就是雙方約定一個暗號,用什麼字母替換什麼字母之類的。現在一般採用一種叫 AES(高級加密演算法)的對稱演算法。

對稱加密演算法既指加密和解密需要使用的密鑰 key 是一樣的。

AES 在數學上保證了,只要你使用的 key 足夠長,破解幾乎是不可能的(除非光子計算機造出來了)

我們先假設在沒有密鑰 key 的情況下,密文是無法被破解的,然後再回到這個教室。你將用 AES 加密後的內容噌噌噌地寫在了紙條上,正要傳出去的時候你突然想到,TA 沒有 key 怎麼解密內容呀,或者說,應該怎麼把 key 給TA?

如果把 key 也寫在紙條上,那麼中間人照樣可以破解竊聽紙條內容。也許在現實環境中你有其他辦法可以把 key 通過某種安全的渠道送到 TA 的手裡,但是互聯網上的實現難度就比較大了,畢竟不管怎樣,數據都要經過那些路由。

於是聰明的人類發明了另一種加密演算法——非對稱加密演算法。這種加密演算法會生成兩個密鑰(key1 和 key2)。凡是 key1 加密的數據,key1 自身不能解密,需要 key2 才能解密;凡事 key2 加密的數據,key2 自身不能解密,只有 key1 才能解密。

目前這種演算法有很多中,最常用的是 RSA。其基於的數學原理是:

兩個大素數的乘積很容易算,但是用這個乘積去算出是哪兩個素數相乘就很復雜了。好在以目前的技術,分解大數的素因確實比較困難,尤其是當這個大數足夠大的時候(通常使用2的10次方個二進制位那麼大),就算是超級計算機,解密也需要非常長的時間。

現在就把這種非對稱加密的方法應用在我們教室傳紙條的場景里。

你在寫紙條內容之前先用 RSA 技術生成了一對密鑰 k1 和 k2。

你把 k1 用明文傳了出去,路經也許有人會截取,但是沒有用,k1 加密的數據需要 k2 才可以破解,而 k2 在你自己手中。

k1 傳到了目的人,目的人會去准備一個接下來准備用於對稱加密(AES)的傳輸密鑰 key,然後用收到的 k1 把 key 加密,傳給你。

你用手上的 k2 解出 key 後,全教室只有你和你的目的人擁有這個對稱加密的 key,你們倆就可以盡情聊天不怕竊聽啦~

這里也許你會有問題,為什麼不直接用非對稱加密來加密信息,而是加密 AES 的 key 呢?因為非對稱加密和解密的平均消耗時間比較長,為了節省時間提高效率,我們通常只是用它來交換密鑰,而非直接傳輸數據。

然而使用非對稱加密真的可以防範中間人攻擊嗎?雖然看上去很安全,但是實際上卻擋不住可惡的中間人攻擊。

假設你是 A,你的目的地是 B,現在要途徑一個惡意同學M。中間人的惡意之處在於它會偽裝成你的目標。

當你要和 B 完成第一次密鑰交換的時候,M 把紙條扣了下來,假裝自己是B並偽造了一個 key,然後用你發來的 k1 加密了 key 發還給你。

你以為你和 B 完成了密鑰交換,實際上你是和 M 完成了密鑰交換。

同事 M 和 B 完成一次密鑰交換,讓 B 以為和 A 你完成了密鑰交換。

現在整體的加密流程變成了A(加密鏈接1)->M(明文)->B(加密鏈接2)的情況了,這時候 M 依然可以知道A和B傳輸的全部消息。

這個時候就是體現 HTTPS 和傳紙條的區別了。在教室里,你是和一位與你身份幾乎對等的的對象來通信;而在訪問網站時,對方往往是一個比較大(或者知名)的服務者,他們有充沛的資源,或許他們可以向你證明他們的合法性。

此時我們需要引入一個非常權威的第三方,一個專門用來認證網站合法性的組織,可以叫做 CA(Certificate Authority)。各個網站服務商可以向 CA 申請證書,使得他們在建立安全連接時可以帶上 CA 的簽名。而 CA 得安全性是由操作系統或者瀏覽器來認證的。

你的 Windows、Mac、Linux、Chrome、Safari 等會在安裝的時候帶上一個他們認為安全的 CA 證書列表,只有和你建立安全連接的網站帶有這些CA的簽名,操作系統和瀏覽器才會認為這個鏈接是安全的,否則就有可能遭到中間人攻擊。

一旦某個 CA 頒發的證書被用於的非法途徑,那麼這個 CA 之前頒發過的所有證書都將被視為不安全的,這讓所有 CA 在頒發證書時都十分小心,所以 CA 證書在通常情況下是值得信任的。

正如聲網agora.io Web SDK考慮數據安全問題,限制了http訪問getUserMedia介面,只能通過https方式訪問。所以會出現用http在Chrome瀏覽器(47以上版本)中訪問Agora服務失敗,我該怎麼辦?

Agora Web解決方案基於WebRTC技術建立瀏覽器間的音視頻通信,在WebRTC協議中,瀏覽器通過getUserMedia介面獲取視頻(通過攝像頭)和音頻(通過麥克風)數據,Google Chrome是支持WebRTC的主流瀏覽器之一,在v47及以上版本,考慮到數據安全問題,限制了http訪問getUserMedia介面,只能通過https方式訪問。除了chrome瀏覽器外,Opera瀏覽器在v34版本後也跟進了對http的限制,Firefox暫時沒有此更新。但是考慮到https是WebRTC協議推薦的安全訪問方式,建議客戶統一通過https來訪問Agora Web服務,也能兼容各瀏覽器平台。

③ 問一個關於定址模式的問題

僅供參考:

a、不考慮displacement mode的話,其它各定址模式只涉及寄存器r0-r7,那麼單個的oprand中用3位來表示r0-r7即可以了,但是若指令需要

兩個或更多的oprand,則需考慮是否需要額外的位來表示哪個是source oprand哪個是target等等,盡管原題問的是一個操作數的位數,但不

知前述的額外位是否是作為oprand的一部分。

b、
i) 以通常對immediate方式的理解來說,此問答案應該是r7。
後面補充說明 Operand is the next word (after the currently executing instruction) 中的「當前執行的指令」如果理解成是不包含

oprand部分的僅指令代碼部分,那麼答案r7是沒有疑義的。
但是若把「當前執行的指令」理解成包含了操作數的一整條指令,則好像這一問卻是在指要定址PC所指向的內存單元(這不符合通常對

immediate mode的理解),如此的話,答案好像似乎該是(r7)了。
所以若可能,不妨請出題的人稍微說明一下;若不能說明,也許答r7把握似乎大點。

ii) 類似前一問,如果「the next word」後沒寫出的「(after the currently executing instruction)」也是指不包含oprand部分的僅指令代碼

部分,那麼此題答案就是(r7)。其實看到這里,感覺題目只能這樣理解才對。所以前面那題答案應該就是r7。

iii) d(r7),和你答案一致

iv) @d(r7),和你答案一致

c、對前述4種情況,注意到在指令執行過程中,作為代碼指針的r7指向的是下條指令的位置,要避免執行將操作數作為指令執行,須在定址後

修正r7的內容,即對b中4種情況分別加上4種衍生的定址模式所需要的操作數部分佔用的內存單元的數態爛量,使之指向下一條指令的指令部分所

在的內存位置。(不知道我的理解是否對)

d、按題目意思,
i) 不使用寄存器變數時:
訪問立即數4,因為該假想計算機沒有把立即數作為oprand的定址模式,所以該立即數必須存在內存單元里,或者放在可由框架指針r5再加上

某個displacement來訪問的內存處。這樣,可能的方式是用 d(r5) 作為操作數,通過 displacement mode 方式來定址。

順便考慮一種特殊情況,即要訪問的內存單元正好就是框架指針所指的位置,此時若仍使用displacement mode來定址,則 d 應該是0,按

displacement mode的語法來表示,就是 0(r5);這時其實也可用 register indirect 模式來訪問此內存單元,即(r5)。盡管在表示上只差了

個0,但其實用的是兩種定址模式。以下的討論中,對各個所需訪問的內存變數,都可能存在這樣的情況,即其中的某一個有可能正好是在

(r5)處,對此變數則可以使敗閉悔用 register indirect 模式訪問即可,而其它內存變數則仍需使用displacement mode。為避免啰嗦,下面的討論

中不再考慮正好是在(r5)處的情況。

訪問變數 i :用displacement方式的察正話,假定框架指針r5指向的內存位置與i所在的內存之間還有d個字的displacement,則此時需要的操作

數是 d(r5)

pi是指針變數,訪問 pi 本身,可通過displacement方式,即d(r5),其中d為r5所指內存位置到pi所在位置之間的displacement

訪問*pi(即pi指向的內存),用displacement indirect方式,即@d(r5)

訪問*(pi+1)在前述的d非0時(即r5所指的位置處不是pi所在的內存單元),是沒有直接的定址方式可以訪問的,此時必須通過3條指令實現:

先用某個寄存器(例如r4)存放pi(這步可以通過dislacement indirect方式實現,即 r4 = @d(r5),之後再用register模式的指令將 r4 加1

,最後再用register indirect方式得到 @(r4) 處的 *(pi+1)。要注意的是,後兩步無法通過autoincrement indirect方式的@(r4)+實現,因

為@(r4)+是先取@(r4),再將r4+1,所以取得的結果不是*(pi+1)而是*pi。

ppi是雙重指針變數,本身可以通過displacement方式訪問,即d(r5),其中d為r5所指內存位置到ppi所在位置之間的displacement。

訪問**ppi,無法使用一條指令做到,須先用某寄存器如r4通過dislacement indirect方式得到*ppi,即 r4 = @d(r5),再通過register

indirect方式得到 (r4) 處的 **ppi。

**(ppi+1),先通過displacement方式實現 r4 = d(r5)即r4 = ppi,再通過register方式實現r4 = r4+1,再通過dislacement indirect得到

@0(r4) 處的 **(ppi+1),最後一步也可用autoincrement indirect即 @(r4)+ 實現

*(*ppi+1),先r4 = (r5) 即*ppi,然後r4 = r4+1 即 r4 = *ppi+1,然後通過register indirect得到 (r4) 處的 *(*ppi+1)

(ii) 當 i, pi,和 ppi 都是寄存器變數時(假定 i、pi、ppi分別在r1、r2、r3中)
立即數4,訪問方式同(i)中的情況

變數i:以register mode直接得到r1即可

*pi:通過register indirect mode得到 (r2) 即可

*(pi+1):先 register mode 使 r2 = r2+1,然後 register indirect mode得到 (r2) 處的 *(pi+1)

**ppi:可由兩種方式訪問:方式1用d=0的displacement indirect,即 @0(r3);方式2用autoincrement indirect,即@(r3)+,但後者執行後r3中的值即ppi也發生了變化

**(ppi+1):先 register mode 使 r3 = r3+1,然後displacement indirect @0(r3) 即可訪問**(ppi+1)

*(*ppi+1):先 register indirect mode 使 r4=(r3) 即 *ppi,然後 register mode 使 r4=r4+1 即 r4=*ppi+1,最後再用 @0(r4) 或者 @(r4)+ 得到 *(*ppi+1)

水平有限,還請仔細推敲後自行決定答案。

④ plc300中sm0.0什麼意思

位存儲器又稱內部線圈。
M0.0隻是一個Byte.Bit的訪問方式而已,只是一個位變數,其存儲的數據長度為1個位。在目前的編程方式下,標簽化編程已經漸漸成為主流,程序員不用關心變數對應的PLC地址了,程序員只需要關心數據類型和業務邏輯了。
輔助繼電器M0.0在程序內部使用,不能提供外部輸出。輸入繼電器I0.0為接收外部輸入設備的信號。輸出繼電器Q0.0為輸出程序執行結果並驅動外部設備。西門子特殊存儲器(SM)標志位:SM0.0-PLC上電運行時,該位始終為1(始終為ON)。SM0.1-該位在首次掃描時為1,用途之一是調用初始化子程序。SM0.1、SM0.0是這兩個是西門子PLC的特殊存儲器。SM0.0:上電後該位始終為1。SM0.1:該位在首次掃描時為1,為0,用途之一是調用初始化子程序。

⑤ 51單片機內部RAM

51單片機內部RAM具體要看產品配置。
分為兩種情況:
1:如果片內只有128位元組的RAM,則訪問RAM使用直接或者間接定址方式,地址為00H-7FH,在80H-FFH的空間分配給了SFR,只能使用直接定址方式。
2:片內RAM為256位元組時,低128位元組(00H-7FH)的訪問方式為直接和間接定址方式,高128位元組(地址80H-FFH)只能使用間接定址方式。
SFR的地址也為80H-FFH,但只能使用直接定址方式。
具體產品有詳細的說明書。

⑥ bios禁用sata原理

BIOS禁用SATA的原理是通過BIOS設置界面中的相關選項將SATA介面的功能關閉。SATA是一種硬碟介面標准,如果禁用SATA,則計算機將無法訪問SATA介面上的硬碟。
在BIOS設置界面中,可以找到SATA選項,通常有兩種模式:AHCI模式和IDE模式。AHCI模式是一種高級主機控制器介面,可以提供更好的性能和可靠性,而IDE模式是一種舊的硬碟控制器介面,常用於早期的計算機中。
如果將SATA介面禁用,計算機將無法訪問任何連接到SATA介面的硬碟驅動器。這意味著,如果您想要啟動操作系統,則必須使用其他介面,比如IDE介面或USB介面。但是,禁用SATA介面可能會導致性能下降,因頌汪為其他介面可能無法提供與SATA相同的速度和可靠性。
總之,禁用SATA介面可以在某些情況下提供更好的安全性和可靠輪桐性,但也可能會影響計野桐仔算機的性能。在禁用SATA介面之前,請確保您已經理解了相關的影響,並根據您的具體需求進行決策。

⑦ 要訪問特殊功能寄存器和片外數據存儲器,可採用哪些定址方式

採用直接定址方式。

位定址也可,但是這仍然屬於直接定址。

不能用寄存器定址和寄存器間接定址。

在指令格式的地址的欄位中直接指出操作數在內存的地址。由於操作數的地址直接給出而不需要經過某種變換,所以稱這種定址方式為直接定址方式。在指令中直接給出參與運算的操作數及運算結果所存放的主存地址,即在指令中直接給出有效地址。

(7)特殊繼存器訪問方式有擴展閱讀:

在直接定址中,指令操作數欄位中存放的是操作數的16位偏移地址EA,即操作數的偏移地址EA和操作碼一起存放在代碼段中,而操作數可以存放在數據段,也可以存放在其它段,操作數的物理地址由其所在段的寄存器內容左移4位與指令中給出的偏移地址EA相加形成。

物理地址PH=(DS)*10H+EA(Disp)EA可以用符號或數值表示。如果用數值表示EA則必須用括弧括起來,而且是在方括弧前應給出段寄存器名,直接定址的操作數可以是字或位元組。

⑧ AT89S52的存儲器

MCS-51器件有單獨的程序存儲器和數據存儲器。外部程序存儲器和數據存儲器都可以64K定址。
程序存儲器:如果EA引腳接地,程序讀取只從外部襪鍵伍存儲器開始。
對於 89S52,如果EA 接VCC,程序讀寫先從內部存儲器(地址為0000H~1FFFH)開始,接告或著從外部定址,定址地址為:2000H~FFFFH。
數據存儲器:AT89S52 有256 位元組片內數據存儲器。高128 位元組與特殊功能寄存器重疊。也就是說高128位元組與特殊亮纖功能寄存器有相同的地址,而物理上是分開的。
當一條指令訪問高於7FH 的地址時,定址方式決定CPU 訪問高128 位元組RAM 還是特殊功能寄存器空間。直接定址方式訪問特殊功能寄存器(SFR)。
例如,下面的直接定址指令訪問0A0H(P2口)存儲單元MOV 0A0H , #data使用間接定址方式訪問高128 位元組RAM。例如,下面的間接定址方式中,R0 內容為0A0H,訪問的是地址0A0H的寄存器,而不是P2口(它的地址也是0A0H)。
MOV @R0 , #data堆棧操作也是間接定址方式。因此,高128位元組數據RAM也可用於堆棧空間。