1. 單片機中位元組地址80H中的H是什麼意思
H表示進制,80H說明這個80是十六進制中的80,而不是我們常見的十進制中的80。
拓展:
51單片機的20H-2FH為位地址區,共16個位元組,每位元組有8位共128位,每位有個編號稱為位地址,位地址的范圍為00H-7FH。
該區既可位定址又可位元組定址。例如:MOV C,20H 這里C是進位標志位,該指令將位地址為20H的單元內容送至C;而MOV A,20H 將位元組地址為20H的內容送至累加器A。
可見20H是位地址還是位元組地址要看另一個操作數的類型。
2. 單片機試題15,求大神解答!!!
2、(40H)= 80H ;(48H)= 80H
3、ORL A,#0FH;置位A的低4位,(A)=0111 1111B
SWAP A;半位元組交換,(A)=1111 0111B
RRC A;累加器A的值帶進位循環右移1位,(A)=1111 1011B,(PSW)=80H
XRL A,#0FH;A的高4位保持原狀,低4位取反,(A)=1111 0100B
ANL A,#10H;A的D4為保持原狀,其餘位清零,(A)=0001 0000B
程序運行結果:,(A)=10H,(PSW)=80H
4、A= 50H ;SP= 50H ;(51H)= 50H ;(52H)= 30H ;PC= 5030H
3. 51系列單片機定址方式的定址方式
立即數定址又稱立即定址,即指令中直接給出操作數的定址方式稱為立即數定址。在51系列單片機指令系統中,立即數用前面加「#」號的8位數表示(#data,如#30H)或16位數(#data16,如#2052H)表示。舉例說明立即數定址方式,以傳送指令為例。
例:MOV A, #80H ;80H——>A
MOV DPTR, #2000H ;2000H——>DPTR 指令中直接給出操作數地址(dir)的定址方式稱為直接定址。定址對象為:1 內部數據存儲器,在指令中以直接地址表示;2特殊功能寄存器SFR,在指令中用寄存器名稱表示。
下面舉例說明。
例:MOV A, 25H ;內部RAM的(25H)——>A
MOV P0, #45H ;45H——>P0 ,P0為直接定址的SFR
MOV 30H,20H ;內部RAM的(20H)——>(30H) 以通用寄存器的內容為操作數的定址方式稱為寄存器定址。通用寄存器包括:A、B、DPTR、R0~R7。其中B寄存器僅在乘法、除法指令中為寄存器定址,在其它指令中為直接定址。A寄存器可以寄存器定址,又可以直接定址(此時寫作ACC)。直接定址和寄存器定址的差別在於,直接定址是操作數所在的位元組地址(佔一個位元組),寄存器定址是寄存器編碼出現在指令碼中。寄存器定址速度比直接定址要快。除上面所指的幾個寄存器外,其它特殊功能寄存器一律為直接定址。
例:MOV A, R0 ;R0——>A,R0為寄存器定址
MUL AB ;A×B——>BA,A,B為寄存器定址
MOV B, R0 ;R0——>B,R0為寄存器定址,B為直接定址
PUSH ACC ;A的內容入棧,A為直接定址
ADD A, ACC ;A為寄存器定址,ACC為直接定址 以寄存器中的內容為地址,該地址的內容為操作數的定址方式稱為寄存器間接定址。能夠進行寄存器間接定址的寄存器有:R0、R1、DPTR,用前面加@表示,如@R0、@R1、@DPTR。寄存器間接定址的存儲空間包括內部數據存儲器和外部數據存儲器。由於內部數據存儲器共有128位元組,因此用一位元組的R0和R1可間接定址整個空間。而外部數據存儲器最大可達64K,僅R0或R1無法定址整個空間,為此需要由P2埠提供外部RAM高8位地址,由R0或R1提供低8位地址,由此共同定址64K位元組范圍。也可用16位的DPTR寄存器間接定址64K位元組存儲空間。
在指令中,是對內部RAM還是對外部RAM定址,區別在於對外部RAM的操作僅有數據傳送指令,並且用MOVX作為操作助記符。
例:MOV @R0, A ;A——>以R0內容為地址的內部RAM中
MOVX @DPTR, A ;A——>以DPTR內容為地址的外部RAM中 由寄存器DPTR或PC中的內容加上A累加器內容之和而形成操作數地址的定址方式稱為變址定址。變址定址只能對程序存儲器中的數據進行定址操作。由於程序存儲器是只讀存貯器,因此變址定址只有讀操作而無寫操作。在指令符號上採用MOVC的形式。
例:MOVC A, @A+DPTR ;(A+DPTR)——>A
MOVC A, @A+PC ; (PC)+1——PC ((A)+(PC))——>A
圖4 MOVC A, @A+DPTR
圖5 MOVC A, @A+PC 對位地址中的內容進行位操作的定址方式稱為位定址。由於單片機中只有內部RAM和特殊功能寄存器的部分單元有位地址,因此位定址只能對有位地址的這兩個空間進行定址操作。位定址是一種直接定址方式,由指令給出直接位地址。與直接定址不同的是,位定址只給出位地址,而不是位元組地址。
例:SETB 20H ;1——>20H位
MOV 32H, C ;進位Cy(即指令中的C)——>32H位 以當前程序計數器PC的內容為基址,加上指令給出的一位元組補碼數(偏移量)形成新的PC值的定址方式稱為相對定址。相對定址方式只修改PC值,故主要用於實現程序的分支轉移。
例:SJMP 08H ;PC+2+08H——>PC (該指令為兩位元組,所以有PC+2)
4. 在51單片機中,為什麼相對定址中80H實際為FF80H
相對定址時,跳轉偏移是2的補碼,最高位為1時,實際上代表的是負數,具體你可以去學習了解一下補碼的概念。
偏移80H,實際上代表著向回跳轉128。