⑴ 关于单片机查表程序
如下:
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
----
这个程序,是根据两个字节的数据来查表,查出的,也是两个字节。
如果先弄懂了一个字节的查表程序,看这个程序,也就没有什么难的了。