欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

汇编语言——单片机基础

程序员文章站 2024-02-02 16:01:40
...

以老师上课讲的例题为例,进行程序分析。


#前两步为跳过中断区,一般程序都直接加上
ORG 0000H     
  LJMP MAIN
  ORG 1000H     #定义源地址为1000H
  MAIN:  MOV A,#30H    #将 立即数30H 赋给  累加器A
  MOVC A,@A+PC    #将(累加器A  + 下一条命令后程序计数器的值)对应地址的内容赋给A,
                  #即A =(源地址1000H  +  30H  +  (MOV所占字节1 + MOVC所占字节2)= 1033H
  ORG 1030H    #定义源地址为1030H
  DB  01H,02H,03H,04H    #分别将以下4个字节数放在源地址中,即分别对应1030H, 1031H,1032H,1033H
  END

TEST.asm

#前两步为从单片机的源地址0000H开始,跳过中断区,为程序必有的部分
    ORG 0000H
	AJMP MAIN
#定义main的起始地址为0100H
    ORG 0100H
MAIN: MOV A,#01H   #将 立即数01H  赋给  累加器A 
      MOV 20H, #02H  #将  立即数02H  赋给 20H地址的内容
	  MOV A, 20H   #将20H对应地址里的内容  赋给  累加器A
      END

MOVX.asm

#前两步为从单片机的源地址0000H开始,跳过中断区,为程序必有的部分
    ORG 0000H
    LJMP MAIN
#定义main的起始地址为1000H
    ORG 1000H
MAIN:  MOV   A,#30H   #将 立即数30H  赋给  累加器A 
       MOV   R0,#40H  #将 立即数40H  赋给  R0
	   MOV   @R0,A   #(在片内RAM中)将  累加器A的值  赋给  R0中的地址对应的数
	   #(在未定义的片外RAM中:地址为FF00H)
	   MOVX  @R0,A   #将  累加器A的值  赋给  R0中的地址对应的数
	   MOV   P2,#11H   #定义片外寄存器的地址为11H
	   #(在定义后的片外RAM中:地址为1100H)
	   MOVX  @R0,A   #将  累加器A的值  赋给  R0中的地址对应的数
	   #下两步为选择DPTR并赋值
	   MOV   0A2H, #01H    #选择DPTR1
	   MOV   DPTR, #1818H   #给  DPTR1 赋值 1818H
	   MOVX  @DPTR, A   #将   累加器A的值(30H) 赋给  DPTR对应的地址的内容
	   END