请问在汇编语言对51单片机编程时,查表用到的“DB”指令怎么用?
DB 指令以表达式的值的字节形式初始化代码空间。格式: [标号:] DB 表达式表表达式中可包含符号、字符串、或表达式等项,各个项之间用逗号隔开,字符串应用引号括起来。括号内的标号是可选项,如果使用了标号,则标号的值将是表达式表中第一字节的地址。DB 指令必须位于 CODE 段之内,否则将会发生错误。例TABLE:DB 0C0H, 0F9H, 0A4HTABLE1:DB " WEINA "(引自伟纳电子)
MOVC A,@A+PC查表指令?
第一个:1002H的命令MOVA,@A+PC,此时PC=1003H(PC指向下一条程序单元),A+PC=0DH+1003H=1010H,把1010H作为地址的内容赋给A,1010H内容是30H,所以A的结果就是30H第二个:1003H命令行,把A赋值给R0,结果自然R0=30H第三个:程序运行到1003H,PC指向下一条命令地址,1004H希望对你有帮助
单片机查表指令movc什么意思?
查表指令:MOVCA,@A+DPTR不是单独使用的,在1000H处,应该有个DB伪指令,如下:DB0,1,4,9,16,25......它在ROM中,顺序存放了一系列的“平方”数据。
MOVCA,@A+DPTR指令中A如果等于0,就会在“平方”数据中取出第0个,就是0;
MOVCA,@A+DPTR指令中A如果等于3,就会在“平方”数据中取出第3个,就是9。
查表中的表是存储在rom中的,51的rom最大可以是64k,也就是2个字节。所以查表的时候当然要用DPTR了,也就是16bit的寄存器。DPTR叫做数据指针。51汇编的查表指令还可以用PC,只不过有点麻烦,所以一般都用的是DPTR作为基址寄存器。
c语言常用的段?
1>只读数据段:
只读数据段是程序使用的一些不会被更改的数据,使用这些数据的方式类似查表式的操作,由于这些变量不需要更改,因此只需要放置在只读存储器中即可。一般是const修饰的变量以及程序中使用的文字常量一般会存放在只读数据段中。
2>已初始化的读写数据段:
已初始化数据是在程序中声明,并且具有初值的变量,这些变量需要占用存储器的空间,在程序执行时它们需要位于可读写的内存区域内,并且有初值,以供程序运行时读写。在程序中一般为已经初始化的全局变量,已经初始化的静态局部变量(static修饰的已经初始化的变量)
3>未初始化段(BSS):
未初始化数据是在程序中声明,但是没有初始化的变量,这些变量在程序运行之前不需要占用存储器的空间。与读写数据段类似,它也属于静态数据区。但是该段中数据没有经过初始化。未初始化数据段只有在运行的初始化阶段才会产生,因此它的大小不会影响目标文件的大小。在程序中一般是没有初始化的全局变量和没有初始化的静态局部变量。