新闻  |   论坛  |   博客  |   在线研讨会
我的第一个汇编程序;
0750long | 2009-06-16 13:28:25    阅读:1557   发布文章

我的第一个汇编程序;

 

//这是一个流水灯程序,主要是练练手,熟悉下汇编,
//之前都是用C编程,汇编接触得很少,写完这几行代码,
//发现汇编还是非常有意思的,以后会尝试写一写大型的汇编程序;
//张平,BUPT,to_zhangping@yahoo.com.cn
//V1.0,2009/6/11
//Crystal:12Mhz MCU:AT89S52

//显示数据:
BUFF1:
DB 00000000B,00011000B,00111100B,01111110B
DB 11111111B,11100111B,11000011B,10000001B
DB 10101010B,01010101B,11001100B,00110011B
DB 11110000B,00001111B,100110001,10000001B

  ORG 0000H
  LJMP MAIN
  ORG 0080H
MAIN:
  MOV R0,#0X00    ;计算地址偏移;
  MOV R1,#0X0F    ;计算循环次数;
  MOV DPTR,#BUFF1 ;装入表格地址;
  L1:
  MOV A,R0          ;装入偏移地址;
  MOVC A,@A+DPTR    ;载入显示数据;
  MOV P0,A          ;输出显示数据;
  LCALL DELAY_LONG  ;调用延时;
  INC R0            ;地址偏移加一;
  DJNZ R1,L1        ;循环次数减一;
  LJMP MAIN         ;无限循环;

DELAY_LONG:     ;DELAY 2*1.26S=2.52S
    MOV R5,#2
 LP00:          ; (2+250*2)+2)*250=1.26S for 1Mhz SYSCLK(EG. 12MHZ CRYSTAL);
    MOV R6,#250
 LP01:          ; EXECUTION TIME:(2+250*2)个时钟周期;
    MOV R7,#250   ;  2 SYSCLK
    DJNZ R7,$     ;  2 SYSCLK
    DJNZ R6,LP01  ;  2 SYSCLK
    DJNZ R5,LP00  ;  2 SYSCLK
  RET 

END

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客