导航:首页 > 操作系统 > 单片机查表指令

单片机查表指令

发布时间:2022-01-12 12:33:57

❶ 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

❷ 单片机查表指令相关问题

MOV DPTR,#TABLE :#TABLE 指向的是表格的首地址,把它给了DPTR
MOVC A,@A+DPTR:A是偏移量,加上首地址DPTR后就是你想要的了

比如说10个人排成一对
DPTR就是第一个人战的地方
再往后数几个就可以找到相应的人了

❸ 单片机查表指令MOVC A @A+DPTR

51单片机的指令系统中,是没有MOVC
A,@R0+DPTR的,查表指令只有两条:
1、MOVC
A,@A+DPTR
2、MOVC
A,@A+PC

❹ 单片机的查表指令(1)MOVC A,@A+PC(2)MOVC A,@A+DPTR怎样理解

(1): PC+A 的地址所在的值送到A寄存器中。
(2):DPTR+A的地址所在的值送到A寄存器中。

❺ 单片机查表程序

// 希望能达到你的要求
ORG 0000H
LJMP MAIN
ORG 0003H

ORG 0030H
MAIN:
MOV SP,#30H ; 设置堆栈
MOV R2,#41H ;A的ASCII码
MOV R3,#50H ;循环50次
MOV DPTR,#2000H ;表首地址
MOV A,#00H
GOTO:
PUSH ACC
MOVC A,@A+DPTR
XRL A,R2
JZ CONTROL ;如果是41H 则跳出保存
DJNZ R3,GOTO2 ;是否寻到了50H个地址 寻到了则退出(这时无有效的结果保存)_
LJMP EXIT
GOTO2:
POP ACC
INC A
AJMP GOTO
CONTROL:
POP ACC ;弹出A 即低位地址
MOV R1,A
MOV DPTR,#2051H
MOVX @DPTR,A ; 存放低位地址
INC DPTR
MOV A,#20H
MOVX @DPTR,A ; 存放高位地址

EXIT:

END

❻ 单片机汇编查表指令

mov xp0,#0
mov dptr,#tp0
LOOP: mov a,xp0
movc a,@a+dptr
mov p2,a
inc xp0
mov a,xp0
cjne a,#80,LOOP %循环查表中每一个直接的值,一共80次%
ret

tp0: DB 030H,048H,048H,048H,048H,048H,030H,000H
DB 010H,030H,010H,010H,010H,010H,07CH,000H
DB 000H,038H,044H,004H,018H,020H,07CH,000H
DB 030H,048H,008H,010H,008H,048H,030H,000H
DB 008H,018H,028H,048H,07CH,008H,008H,000H
DB 03CH,020H,020H,038H,004H,024H,018H,000H
DB 078H,040H,040H,078H,048H,048H,078H,000H
DB 078H,008H,008H,008H,008H,008H,008H,000H
DB 030H,048H,048H,030H,048H,048H,030H,000H
DB 030H,048H,048H,038H,008H,048H,030H,000H

❼ 关于单片机两种查表指令偏移量的算法 偏移量怎么计算啊帮帮忙

找到每条指令的字节数
把要跳过的所有指令的字节数都加起来就是偏移量

❽ 汇编语言里面的查表法是什么意思啊。在单片机里面是怎么运行的啊~~~~

51单片机汇编语言有一条查表指令是:MOVC A, @A+DPTR
它不是单独使用的,要和 DB 伪指令配套使用。

例如:若累加器A中有一个0~9的数,请用查表法求出该数的平方值,设平方表表头地址为1000H。
程序如下:
;-------------------------------------
MOV DPTR,#1000H
MOVC A,@A+DPTR
……

ORG 1000H
DB 0, 1, 4, 9, 16, 25......
;-------------------------------------
“DB”,在ROM 1000H中,顺序存放了一系列的“平方”数据。
MOVC A,@A+DPTR指令中A如果等于0,就会在“平方”数据中取出第0个,就是0;
MOVC A,@A+DPTR指令中A如果等于1,就会在“平方”数据中取出第1个,就是1;
MOVC A,@A+DPTR指令中A如果等于2,就会在“平方”数据中取出第2个,就是4;
MOVC A,@A+DPTR指令中A如果等于3,就会在“平方”数据中取出第3个,就是9;
……
MOVC A,@A+DPTR指令中A如果等于9,就会在“平方”数据中取出第9个,就是81。

❾ 单片机查表程序编写 急!

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

;完

❿ 单片机查表程序

DEC A

因为要用自然数作为表的偏移,而自然数是从1开始的、表格偏移是从0开始的,所以当然要减1咯。例如要查2的平方,实际就是要查找表格偏移+1的元素。

RL A

因为表格每个元素是两个字节,所以偏移地址要乘以2。还是以查2的平方为例,它对应于表格偏移+1的元素,但因为每个元素占用2个字节,所以地址偏移量实际是(+1)×2 = +2h。

阅读全文

与单片机查表指令相关的资料

热点内容
服务器数据遇到异常什么原因 浏览:450
phpexif信息 浏览:542
单片机三字节浮点数 浏览:756
命令与征服泰伯利亚战争下载 浏览:378
c窗口界面编程 浏览:23
hypermill编程能做模板吗 浏览:782
计算机网络最经典的算法 浏览:628
华为思科的配置命令 浏览:869
linux设置光盘启动 浏览:361
程序员俱乐部注册 浏览:19
洗洁精鸡蛋盘解压视频 浏览:293
企业内网加密app 浏览:49
腾讯云服务器怎么设置本地网络 浏览:623
日常程序员 浏览:515
哪个pe有bit加密功能 浏览:110
rust服务器是用什么ip 浏览:692
java随机字符串生成 浏览:553
数码宝贝编程人物 浏览:392
php多用户建站系统 浏览:626
加密防盗地上栓价位 浏览:673