单片机汇编语言中符号 # 是什么意思

如题所述

第1个回答  2008-10-13
表示这个说是立即数
第2个回答  2008-10-09
要单片机完成一项基本任务,必须将任务分解成一些具体步骤,再要求它去逐项执行每个步骤,还要对它下命令。该命令在单片机术语中称为“指令”(Inetruction)。完成一项任务所需的所有指令的有序集合就称为“程序”(Programm)。这些指令要预先一条一条顺序地放到单片机的程序存贮器中,单片机在运行时,片中的CPU从程序存贮器中逐条有序取出指令,执行指令,并将有关指令执行完毕,即可完成既定任务。
不同种类的单片机有不同的一套命令(即所谓“指令系统”)。PIC系列的单片机其指令系统与51系列的完全不同。PIC16F84有30余条指令构成的指令系统。每条指令由14位(bit)构成,这些位是二进制码的0和1,如果要使16F84端口B的B0位输出高电平,以点亮一只发光二极管LED,而B口的其余各位仍保持低电平,则需要使单片机执行下列各条指令(机器码):
11000000000000
00000001100110
11000000000001
00000010000110
10100000000100
早先的技术人员就是用这样的二进制码来编写程序的。上列程序,看起来像天书,很费解,但它完全能指挥单片机的运作。因为单片机实际上是一种复杂的数字逻辑电路。我们都知道,要数字电路运作,必须相应输入高、低电平,对正逻辑而言,高电平为1,低电平为0。上述指令顺序在不同的数位上出现的0和1,经译码后,即可完成各种不同的运作,逐步完成单片机所要执行的任务,如点亮一个LED。
上述各条指令的写法,虽然是完全面向单片机,是用来直接指示单片机该如何运作的。因此,这种由0、1组成的指令称为机器语言。
实际上,这种由二进码构成的指令集不但难读懂,而且用来编程也有困难。因为程序往往不是从头到尾顺序执行,有时还需中途转移到其它单元执行一段程序后再返回来。而指令是一条一条顺序存放在存贮器各个单元内的。因此,如果要转移,需指明具体转到哪个单元,即要写出该单元的地址。但在编写程序时,该程序有多长,具体要放到哪些单元中,都是未知数,又怎能具体指明要转到哪个单元呢?
由于用机器语言会使程序难写、难读,后来一种新型的语言形式——汇编语言就问世了。使用这种语言写程序较方便,也比较容易读懂。不过,和机器语言一样,不同类型的单片机有完全不同的汇编语言。就如不同地区的人有不同的方言一样。在汇编语言中,转移地址是用符号来表示的。现在,我们把上面由机器语言写成的程序改写成由汇编语言构成的程序:
movlw B‘00000000’
tris PORT B
movlw B‘00000001’
movwf PORT B
fin: goto fin
上列各条指令实际上是英语缩写和一些数组成的。如第一条中的movlw就是move Literal to w的缩写,其意义为照原样移入工作寄存器W,而“原样”就是后接引号内的数字‘00000000’。引号前的B表示后续的是二进制数。第二句是将W内的数复制到B口的三态(tri-state)控制寄存器中,以设定B口为输出,然后将00000001送入W中,再复制到B口;最后执行一条无限循环语句以保持B口的状态不变。从单片机外部看去,16F84的第6脚(即B0)维持为高电平,以点亮LED。
由上例可知,汇编语言较之机器语言要好懂得多。同时,最后一句自身循环也是一种转移语句,转移目的地就是此句所在单元地址,如用机器语言,就难以标出具体地址,而用汇编语言助记符fin即可替代。

汇编语言里#是什么意思 比如MOV A , #21H
汇编语言中的“#”代表的是寻址方式为立即寻址。比如指令: MOV A,#21H MOV意思是单片机片内RAM之间传送,该指令的意思是:将值21H送给寄存器A中暂存;如果把“#”去掉,MOV A,21H该指令寻址方式变了,为直接寻址,21H就不是值了,而变成了一个地址,意思为:将21H这个地址里面中的内容送给寄存器A中...

单片机汇编语言编程中#和@是是什么意思
差不多是你说的意思,#表示是一个立即数,或者是一个地址指针 如#tab 就是tab这个表格的首地址 而#12h,则表示为十六进制12 是间接寻址用的,可以理解为取地址,一般后面为R0-R7 希望能给你带来帮助

汇编语言中MOV时#和@如何使用
不知你指的这二个符号是在什么机器上用的时候。如是在51单片机中用它们都有准确的名字,# 号叫立即符,它表示它后跟的是一个立即数,这个数是死的,写程序时就固定了,不可变的了。@号叫间接符,实际上的意思就是指它后跟的是一个地址指针,内的数是一个地址,操作时只是对这个地址内的数进行...

单片机汇编语言中符号 # 是什么意思
你这回答不完全,你这只能特指在51系列的汇编中,因不同厂家的汇编就不同样,如义隆的就是用@表示后是立即数。这些符号只是一个特定的表示符,在不同的厂家芯片的汇编中这些*,#,@,%,...都有只是一个厂家在出汇编时特定的一个符号罢。要具体到那个厂家的什么单片机上并要说明这符号在什么位置上...

#data和direct在汇编语言中的区别?
在单片机汇编语言中,#data指的是8位立即数,“#”为立即数的前缀符号;direct指的是8位内部数据单元的地址,可以是内部RAM单元地址00H~0FFH,也可以是一个专用寄存器地址,如I\/O端口、控制寄存器、状态寄存器等。

单片机中#0FFH什么意思
0FFH是单片机汇编语言程序中一个8位二进制数的16进制表示方法,#表示这是一个数字,0是汇编语言的规定,即当16进制数的高位数大于9时,前面要加0,FF是这个16进制数的数值,即255,H是16进制数的尾缀。

汇编语言里面#00fh是什么意思啊
在51单片机汇编语言中,数据前加井号代表这个数是立即数,也就是说是纯粹的数据,比如#00fh就是双字节十六进制数,一般代表一个地址。

单片机汇编程序 看不懂了
JMP FUWU2 START: SETB EA SETB EX0 ;开启外部中断0中断 SETB EX1 MOV R1,#OF0H设置初始值 MOV R2,#OF2H MOV R3,#OF3H MOV R4,#OF3H LOOP0: MOV TMOD,#10H设置中断工作方式 MOV TH1,#00H中断计时器复位。清冷 MOV TL1,#00H SETB TR1 计时器开始 JNB TF1,$ 等中断 CLR TF1 SETB...

在用汇编语言给单片机编程时,CLR C SUBB A,#0是什么意思
这两行应该是分开写的。是两条汇编语句;CLR C 清楚进位标志 SUBB A,#0 将累加器A中的数据与0进行比较

请问单片机的汇编语言里的“MOV B,#08H”和符号“$”表示什么意思...
MOV B,#08H;给B寄存器赋值08H.具体B寄存器的数值去做什么要看上下程序的处理.表示自身.

相似回答