⑴ 關於單片機查表程序
如下:
ORG 0000H
BUF1 EQU 30H
BUF2 EQU 40H
N EQU 0AH
MOV 30H, #05H ;00~09H,加上這行,就是給定30H單元數據。
MOV R0, #5 ;這里不應該是5, 應該是BUF1
MOV R1, #BUF2 ;以下不變
……
⑵ 單片機查表程序
DEC A
因為要用自然數作為表的偏移,而自然數是從1開始的、表格偏移是從0開始的,所以當然要減1咯。例如要查2的平方,實際就是要查找表格偏移+1的元素。
RL A
因為表格每個元素是兩個位元組,所以偏移地址要乘以2。還是以查2的平方為例,它對應於表格偏移+1的元素,但因為每個元素佔用2個位元組,所以地址偏移量實際是(+1)×2 = +2h。
⑶ 單片機查表指令movc什麼意思
MOVC指令意思是表示
程序存儲器
里的內容和別的
存儲單元
進行傳送的,主要是用在
累加器
A和程序存儲器的
數據傳送
。
單片機的操作語言使用的是
匯編語言
,是一種用於
電子計算機
、微處理器、
微控制器
或其它可編程器件的低級語言。
包括通用數據傳送指令MOV、條件傳送指令CMOVcc、堆棧操作指令PUSH/PUSHA/PUSHAD/POP/POPA/POPAD、交換指令XCHG/XLAT/BSWAP、地址或
段描述符
選擇子傳送指令LEA/LDS/LES/LFS/LGS/LSS等。
(3)單片機查表程序擴展閱讀
測試指令BT、位測試並置位指令BTS、位測試並復位指令BTR、位測試並
取反
指令BTC、位向前掃描指令BSF、位向後掃描指令BSR等。
加法指令ADD/ADC、減法指令SUB/SBB、加一指令INC、減一指令DEC、比較操作指令CMP、乘法指令MUL/IMUL、除法指令DIV/IDIV、符號擴展指令CBW/CWDE/CDQE、
十進制調整指令
DAA/DAS/AAA/AAS、
邏輯運算
指令NOT/AND/OR/XOR/TEST等。
無
條件轉移指令
JMP、條件轉移指令Jcc/JCXZ、循環指令LOOP/LOOPE/LOOPNE、過程調用指令CALL、子過程返回指令RET、
中斷指令
INTn、INT3、INTO、IRET等。
參考資料來源:
網路
-MOVC
⑷ 單片機查表程序編寫 急!
org 0000h
mov 30h, #1
mov 31h, #3
mov 32h, #5
mov 33h, #7
mov 34h, #9
mov 35h, #2
mov 36h, #4
mov 37h, #6
mov 38h, #8
mov 39h, #10
call SQRT
sjmp $
;查表法求平方的程序如下。
SQRT:
MOV R0, #30H
MOV R1, #40H
MOV R2, #10
LOOP:
MOV A, @R0
ADD A, #S_TAB - ($ + 4)
MOVC A, @A + PC
MOV @R1, A
INC R0
INC R1
DJNZ R2, LOOP
RET
S_TAB:
DB 1, 4, 9, 16, 25, 36, 49, 64, 81, 100
;完
⑸ 單片機查表
題目已經說了,每個最大允許值,都是雙位元組的。所以以位元組為單位計算偏移量時應當乘以2,
⑹ 單片機查表程序
後一問A的值應為58H。
執行完MOV A,#5H後,PC為52H。
執行MOV A,@A+PC時,會預先將PC指向下一條指令(PC+1),之後再執行加法。參見51指令集手冊。
⑺ 單片機:什麼是查表程序有什麼價值(作用)
有時候一些運算,為了節約單片機的資源,改成直接查詢的方式,增加rom但是減小運算時間
⑻ 怎麼用單片機編寫查表程序
51單片機有兩條查表程序,即MOVC A,@A+DPTR ;MOVC A,@A+PC.
⑼ MCS-51單片機查表程序
16和7是查表指令時的PC與數據表格之間的位元組數
MOV A ,@R0 ;取R0指向的地址中的數據到A
ANL A,#0FH ;高四位清零
ADD A,#16 ;加16
MOVC A, @A+PC ;查表,表的首地址為絕對地址PC+A
MOVC A,@A+PC就需要1個位元組啊
查表指令距離表首地址的長度是位元組數
用DPTR的匯編程序:
ORG 0100H
MOV 30H,#12H
MOV 31H,#34H
MOV 32H,#56H
MOV 33H,#78H
LCALL SUBRTE
ORG 1000H
SUBRTE: MOV R0,#30H ; ;置地址指針R0初值
MOV R1,#40H ; ;置地址指針R1初值
MOV R2,#4 ; ;置位元組數
LOOP: MOV A,@R0 ; ;取16進制數
ANL A,#0FH ; ;屏蔽高4位
MOV DPTR,#TABLE ; ;
MOVC A,@A+DPTR ; ;查表低4位轉換為ASCⅡ碼
MOV @R1,A ; ;送結果
INC R1 ; ;修改指針
MOV A,@R0 ; ;從新取16進制數
SWAP A ; ;高4位與低4位互換
ANL A,#0FH ; ;取高4位
ADD A,#7
MOVC A,@A+PC ; ;查表高4位轉換為ASCⅡ碼
MOV @R1,A
INC R0
INC R1
DJNZ R2,LOOP
DEC R1
RET
TABLE: DB '012345678'
DB '9ABCDEF'
END
⑽ 單片機 查表程序設計
LTB2:
;-------------------下面是R2R3乘以2
MOV A, R3
CLR C
RLC A
MOV R3, A
XCH A, R2
RLC A
XCH R2, A
;------------------下面是表首地址加上R2R3
MOV DPTR, #TAB2
ADD A, DPL ;(R2R3)+(DPTR)→(DPTR)
MOV DPL, A
MOV A, DPH
ADDC A, R2
MOV DPH, A
;------------------下面是查表,查出兩個位元組
CLR A
MOVC A, @A + DPTR
MOV R2,A
CLR A
INC DPTR
MOVC A, @A + DPTR
MOV R3,A
RET
----
這個程序,是根據兩個位元組的數據來查表,查出的,也是兩個位元組。
如果先弄懂了一個位元組的查表程序,看這個程序,也就沒有什麼難的了。