汇编语言中@,#是什么含义啊

2024-05-10

1. 汇编语言中@,#是什么含义啊

#表示立即数寻址,采用立即寻址方式的指令,在立即数前面加上立即寻址符“#”。
例如指令MOV A,#30H中30H就是立即数,指令功能为将30H赋给累加器A。
@表示寄存器的间接寻址。
用汇编语言写程序,就得用汇编编译器,不同的汇编编译器对汇编语法有些异,@,#都是linux操作系统中常用的汇编编译器所使用的汇编语法,而windows下常使用的MASM编译器就没有@,#这些符号。

扩展资料:
汇编语言的特点是容易被计算机识别和执行,使用它进行编程可以减少占用空间、提高运行速度,并能直接对硬件实施控制。在需要实时控制的时候,有着不可替代的重要地位,但汇编语言在编程和理解时要复杂、困难一些,尤其是在进行数据处理或是逻辑运算时更加凸显出其劣势。
参考资料来源:百度百科-汇编语言

汇编语言中@,#是什么含义啊

2. 汇编语言中$是什么意思

“$”是汇编语言中的一个预定义符号,等价于当前正汇编到的段的当前偏移值。例如eg:指令“jmp $+3”中的“$”表示当前这条指令在代码段中的偏移量。
汇编语言, 即第二代计算机语言,用一些容易理解和记忆的字母,单词来代替一个特定的指令,比如:用“ADD”代表数字逻辑上的加减,“ MOV”代表数据传递等等,通过这种方法,人们很容易去阅读已经完成的程序或者理解程序正在执行的功能。

扩展资料:
语言特点
汇编语言是计算机提供给用户的最快最有效的语言,也是能够利用计算机的所有硬件特性并能够直接控制硬件的唯-语言。但是由于编写和调试汇编语言程序要比高级语言复杂,因此目前其应用不如高级语言广泛。
汇编语言比机器语言的可读性要好,但跟高级语言比较而言,可读性还是较差。不过采用它编写的程序具有存储空间占用少、执行速度快的特点,这些是高级语言所无法取代的。在实际应用中,是否使用汇编语言,取决于具体应用要求、软件开发时间和质量等方面作权衡。

汇编器
典型的现代汇编器(assembler)建造目标代码,由解译组语指令集的易记码(mnemonics)到操作码(OpCode),并解析符号名称(symbolic names)成为存储器地址以及其它的实体。
使用符号参考是汇编器的一个重要特征,它可以节省修改程序后人工转址的乏味耗时计算。基本就是把机器码变成一些字母而已,编译的时候再把输入的指令字母替换成为晦涩难懂机器码
参考资料来源:百度百科- $ (汇编语言中字符串结束的标志)

3. 汇编语言的含义??

首先说明一下,软件是基于操作系统之上,操作系统是基于硬件之上,操作系统是 
“程序”的集合,这里说的“程序”是针对某个计算机硬件的驱动程序来说的,有了这些程序就能驱动计算机了,把一些“程序”拿出来做成API,软件就是使用操作系统提供的API来实现的。你所说的“汇编语言”是什么高级语言吧?是不是虚拟机一类的,要不然学汇编8086都不知道? 
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》 
软件是基于操作系统:(高级软件的实现离不开操作系统的支持)打个比方:我们开发的软件是使用操作系统提供的API来实现的,高级程序开发就像一个厨房一样。菜,油,米,都是由其它“资源提供商”的(就像操作系统),厨房不必知道这些东西是怎么来的,只须按不同的菜谱做成不同的菜就行了,如果“资源提供商”没有提供这些东西,厨房是做不出东西的;所以软件不会涉及到硬件,只和操作系统有关(JAVA原理其虚拟机说到底还是基于操作系统的)。 
》》》》》》》》 
个人认为学软件一般不用关心汇编语言,汇编语言是用来设计硬件驱动的用来设计和修改操作系统还行,用来做软件效率太低还复杂,世界上就两个CPU生产商,而且ADM都支持intel的指令

汇编语言的含义??

4. 汇编语言里jc指令时啥意思

JC=Jump if Carry
当运算产生进位标志时,即CF=1时,跳转到目标程序处。
例如:
add al,bl
jc carrybit
inc al;如果al+bl产生了进位,这一句就不执行了。
carrybit:
neg al
这段程序没有任何意义,仅仅作为示例哈。。。

相同的指令还有:
JNC,当CF=0时跳转;
JZ,当ZF=1时跳转,JNZ,当ZF=0时跳转;
JO,当OF=1时跳转,JNO,当OF=0时跳转;
JP,当PF=1时跳转……
依此类推,标志寄存器的各个位基本上都可以用来做“条件跳转”的条件。
当然,条件跳转不仅仅是标志寄存器位,还可以是CX
如:
a_loop:
;do  something 
dec cx
jcxz 
jmp a_loop
可以看出,这一段相当于一个loop指令。。。

还有,用于大小判断型的:
cmp op1,op2
JXX XXXX
其中JXX有以下几种:
JA表示op1>op2,JNA表示op1<=op2;
JB表示op1=op2;
JE表示op1=op2,JNE表示op1op2;
还有JAE、JNAE、JBE、JNBE等等功能重复不再赘述。
以上是无符号数的比较。
有符号数的比较将A换成G,将B换成L即可。
A=above B=below G=greater L=less

介绍的够详细了吧。。。

5. 学习汇编语言的实际意义是什么

准确的说,帮助还是有一些,但是所占比重不大。

从汇编目前的使用来看,主要用于硬件方面,如嵌入式、交换机、软硬件高速链接部分……

但从学习的角度而言,还是很有帮助的,可以帮助程序员深化底层结构的认识。特别是立志向硬件方向发展的人,要学的很好才行。现在绝大多数软件单位,都很少专门招聘汇编语言的人才。做硬件的公司招聘的多些。

当然,在中国做硬件开发的人的收入要比做软件的人高。如果你立志就做软件了,汇编对你而言意义不大;如果你立志要做硬件,汇编是你必须学好的。

Good Luck!

学习汇编语言的实际意义是什么

6. 求汇编语言(符号语言)定义

Rn           R0~R7寄存器n=0~7 

Direct      直接地址,内部数据区的地址RAM(00H~7FH)  

@Ri         间接地址Ri=R0或R1  

#data      8位常数 

#data16  16位常数 

Addr16   16位的目标地址 

Addr11   11位的目标地址 

Rel          相关地址 

bit           内部数据RAM

  

指令介绍   

指令             字节           周期              动作说明

 

一、算数运算指令

1.ADD A,Rn 1 1 将累加器与寄存器的内容相加,结果存回累加器

2.ADD A,direct 2 1 将累加器与直接地址的内容相加,结果存回累加器

3.ADD A,@Ri 1 1 将累加器与间接地址的内容相加,结果存回累加器

4.ADD A,#data 2 1 将累加器与常数相加,结果存回累加器

5.ADDC A,Rn 1 1 将累加器与寄存器的内容及进位C相加,结果存回累加器

6.ADDC A,direct 2 1 将累加器与直接地址的内容及进位C相加,结果存回累加器

7.ADDC A,@Ri 1 1 将累加器与间接地址的内容及进位C相加,结果存回累加器

8.ADDC A,#data 2 1 将累加器与常数及进位C相加,结果存回累加器

9.SUBB A,Rn 1 1 将累加器的值减去寄存器的值减借位C,结果存回累加器

10.SUBB A,direct 2 1 将累加器的值减直接地址的值减借位C,结果存回累加器

11.SUBB A,@Ri 1 1 将累加器的值减间接地址的值减借位C,结果存回累加器

12.SUBB A,#data 2 1 将累加器的值减常数值减借位C,结果存回累加器

13.INC A 1 1 将累加器的值加1

14.INC Rn 1 1 将寄存器的值加l

15.INC direct 2 1 将直接地址的内容加1

16.INC @Ri 1 1 将间接地址的内容加1

17.INC DPTR 1 1 数据指针寄存器值加1

说明:将16位的DPTR加1,当DPTR的低字节(DPL)从FFH溢出至00H时,会使高字节(DPH)加1,不影响任何标志位  

18.DEC A 1 1 将累加器的值减1

19.DEC Rn 1 1 将寄存器的值减1

20.DEC direct 2 1 将直接地址的内容减1

21.DEC @Ri 1 1 将间接地址的内容减1

22.MUL AB 1 4 将累加器的值与B寄存器的值相乘,乘积的低位字节存回累加器,高位字节存回B寄存器

说明:将累加器A和寄存器B内的无符号整数相乘,产生16位的积,低位字节存入A,高位字节存入B寄存器。如果积大于FFH,则溢出标志位(OV)被设定为1,而进位标志位为0  

23.DIV AB 1 4 将累加器的值除以B寄存器的值,结果的商存回累加器,余数存回B寄存器

说明:无符号的除法运算,将累加器A除以B寄存器的值,商存入A,余数存入B。执行本指令后,进位位(C)及溢出位(OV)被清除为0  

24.DA A 1 1 将累加器A作十进制调整,

若(A) 3-0>9或(AC)=1,则(A) 3-0←(A)3-0+6  

若(A) 7-4>9或 (C)=1,则(A) 7-4←(A)7-4+6  

 

二、逻辑运算指令

25.ANL A,Rn 1 1 将累加器的值与寄存器的值做AND的逻辑判断,结果存回累加器

26.ANL A,direct 2 1 将累加器的值与直接地址的内容做AND的逻辑判断,结果存回累加器

27.ANL A,@Ri 1 1 将累加器的值与间接地址的内容做AND的逻辑判断,结果存回累加器

28.ANL A,#data 2 1 将累加器的值与常数做AND的逻辑判断,结果存回累加器

29.ANL direct,A 2 1 将直接地址的内容与累加器的值做AND的逻辑判断,结果存回该直接地址

30.ANL direct,#data 3 2 将直接地址的内容与常数值做AND的逻辑判断,结果存回该直接地址

31.ORL A,Rn 1 1 将累加器的值与寄存器的值做OR的逻辑判断,结果存回累加器

32.ORL A,direct 2 1 将累加器的值与直接地址的内容做OR的逻辑判断,结果存回累加器

33.ORL A,@Ri 1 1 将累加器的值与间接地址的内容做OR的逻辑判断,结果存回累加器

34.ORL A,#data 2 1 将累加器的值与常数做OR的逻辑判断,结果存回累加器

35.ORL direct,A 2 1 将直接地址的内容与累加器的值做OR的逻辑判断,结果存回该直接地址

36.ORL direct,#data 3 2 将直接地址的内容与常数值做OR的逻辑判断,结果存回该直接地址

37.XRL A,Rn 1 1 将累加器的值与寄存器的值做XOR的逻辑判断,结果存回累加器

38.XRL A,direct 2 1 将累加器的值与直接地址的内容做XOR的逻辑判断,结果存回累加器

39.XRL A,@Ri 1 1 将累加器的值与间接地扯的内容做XOR的逻辑判断,结果存回累加器

40.XRL A,#data 2 1 将累加器的值与常数作XOR的逻辑判断,结果存回累加器

41.XRL direct,A 2 1 将直接地址的内容与累加器的值做XOR的逻辑判断,结果存回该直接地址

42.XRL direct,#data 3 2 将直接地址的内容与常数的值做XOR的逻辑判断,结果存回该直接地址

43.CLR A 1 1 清除累加器的值为0

44.CPL A 1 1 将累加器的值反相

45.RL A 1 1 将累加器的值左移一位

46.RLC A 1 1 将累加器含进位C左移一位

47.RR A 1 1 将累加器的值右移一位

48.RRC A 1 1 将累加器含进位C右移一位

49.SWAP A 1 1 将累加器的高4位与低4位内容交换。(A)3-0←(A)7-4

 

三、数据移动指令

50.MOV A,Rn 1 1 将寄存器的内容载入累加器

51.MOV A,direct 2 1 将直接地址的内容载入累加器

52.MOV A,@Ri 1 1 将间接地址的内容载入累加器

53.MOV A,#data 2 1 将常数载入累加器

54.MOV Rn,A 1 1 将累加器的内容载入寄存器

55.MOV Rn,direct 2 2 将直接地址的内容载入寄存器

56.MOV Rn,gdata 2 1 将常数载入寄存器

57.MOV direct,A 2 1 将累加器的内容存入直接地址

58.MOV direct,Rn 2 2 将寄存器的内容存入直接地址

59.MOV direct1, direct2 3 2 将直接地址2的内容存入直接地址1

60.MOV direct,@Ri 2 2 将间接地址的内容存入直接地址

61.MOV direct,#data 3 2 将常数存入直接地址

62.MOV @Ri,A 1 1 将累加器的内容存入某间接地址

63.MOV @Ri,direct 2 2 将直接地址的内容存入某间接地址

64.MOV @Ri,#data 2 1 将常数存入某间接地址

65.MOV DPTR,#data16 3 2 将16位的常数存入数据指针寄存器

66.MOVC A,@A+DPTR 1 2 (A) ←((A)+(DPTR))

累加器的值再加数据指针寄存器的值为其所指定地址,将该地址的内容读入累加器  

67.MOVC A,@A+PC 1 2 (PC)←(PC)+1;(A)←((A)+(PC))累加器的值加程序计数器的值作为其所指定地址,将该地址的内容读入累加器

68.MOVX A,@Ri 1 2 将间接地址所指定外部存储器的内容读入累加器(8位地址)

69.MOVX A,@DPTR 1 2 将数据指针所指定外部存储器的内容读入累加器(16位地址)

70.MOVX @Ri,A 1 2 将累加器的内容写入间接地址所指定的外部存储器(8位地址)

71.MOVX @DPTR,A 1 2 将累加器的内容写入数据指针所指定的外部存储器(16位地址)

72.PUSH direct 2 2 将直接地址的内容压入堆栈区

73.POP direct 2 2 从堆栈弹出该直接地址的内容

74.XCH A,Rn 1 1 将累加器的内容与寄存器的内容互换

75.XCH A,direct 2 1 将累加器的值与直接地址的内容互换

76.XCH A,@Ri 1 1 将累加器的值与间接地址的内容互换

77.XCHD A,@Ri 1 1 将累加器的低4位与间接地址的低4位互换

四、位操作指令(布尔指令)  

78.CLR C 1 1 清除进位C为0

79.CLR bit 2 1 清除直接地址的某位为0

80.SETB C 1 1 设定进位C为1

81.SETB bit 2 1 设定直接地址的某位为1

82.CPL C 1 1 将进位C的值反相

83.CPL bit 2 1 将直接地址的某位值反相

84.ANL C,bit 2 2 将进位C与直接地址的某位做AND的逻辑判断,结果存回进位C

85.ANL C,/bit 2 2 将进位C与直接地址的某位的反相值做AND的逻辑判断,结果存回进位C

86.ORL C,bit 2 2 将进位C与直接地址的某位做OR的逻辑判断,结果存回进位C

87.ORL C,/bit 2 2 将进位C与直接地址的某位的反相值做OR的逻辑判断,结果存回进位C

88.MOV C,bit 2 1 将直接地址的某位值存入进位C

89.MOV bit,C 2 2 将进位C的值存入直接地址的某位

90.JC rel 2 2 若进位C=1则跳至rel的相关地址

91.JNC rel 2 2 若进位C=0则跳至rel的相关地址

92.JB bit,rel 3 2 若直接地址的某位为1,则跳至rel的相关地址

93.JNB bit,rel 3 2 若直接地址的某位为0,则跳至rel的相关地址

94.JBC bit,rel 3 2 若直接地址的某位为1,则跳至rel的相关地址,并将该位值清除为0

 

五、程序跳转指令

95.ACALL addr11 2 2 调用2K程序存储器范围内的子程序

96.LCALL addr16 3 2 调用64K程序存储器范围内的子程序

97.RET 1 2 从子程序返回

98.RETI 1 2 从中断子程序返回

99.AJMP addr11 2 2 绝对跳跃(2K内)

100.LJMP addr16 3 2 长跳跃(64K内)

101.SJMP rel 2 2 短跳跃(2K内)-128~+127字节

102.JMP @A+DPTR 1 2 跳至累加器的内容加数据指针所指的相关地址

103.JZ rel 2 2 累加器的内容为0,则跳至rel所指相关地址

104.JNZ rel 2 2 累加器的内容不为0,则跳至rel所指相关地址

105.CJNE A,direct,rel 3 2 将累加器的内容与直接地址的内容比较,不相等则跳至rel所指的相关地址

106.CJNE A,#data,rel 3 2 将累加器的内容与常数比较,若不相等则跳至rel所指的相关地址

107.CJNE @Rn,#data,rel 3 2 将寄存器的内容与常数比较,若不相等则跳至rel所指的相关地址

108.CJNE @Ri,#data,rel 3 2 将间接地址的内容与常数比较,若不相等则跳至rel所指的相关地址

109.DJNZ Rn,rel 2 2 将寄存器的内容减1,不等于0则跳至rel所指的相关地址

110.DJNZ direct,rel 3 2 将直接地址的内容减1,不等于0则跳至rel所指的相关地址

 

六、其它指令

111.NOP 1 1 无动作

112.RET 1 2 子程序返回

113.RETI 1 2 中断返回

7. 汇编语言 求大神帮我看看这段汇编语言是什么意思,谢谢了!!

TEMP温度值是16位的,TEMP中是低8位,TEMP+1中是高8位,而这段程序是将16位的温度乘16了,乘的结果在R2(低8位)和R3(高8位)中。最后5行是判断TEMP是不是负数(补码),如果最高位为1即为补码,减一取反,是求绝对值。

汇编语言 求大神帮我看看这段汇编语言是什么意思,谢谢了!!

8. 汇编语言怎么定义不同的段?

要运行,不运行时是一样的.