一个简单的循环灯实例 下图中的8个发光 二极管代表 8 个彩灯,让我们看看是如何实现的
STAT: MOV A , #01H ; 高电平对应的发光二极管亮 LOOP: MOV P1, A ; 从 P1 口输出到发光二极管 MOV R1, #10 DEL1: MOV R2 , #200 DEL2: MOV R3, #126 DEL3: DJNZ R3, DEL3 DJNZ R2, DEL2 DJNZ R1, DEL1 RL A LJMP LOOP ; 左移一位 , 下一个发光二极管亮 END
汇编语言指令格式 [ 标号 ] : 操作码 [ 目的操作数 ] [ 源操作数 ] ; [ 注释 ] ↓ ↓ ↓ ↓ ↓ LOOP : MOVX A , @DPTR ; 将外部 RAM 单元内容送到 A
标号: 又称为指令地址符号。对标号有如下规定: 一般由 1 ~ 8 个 ASCII 字符组成,以字母开头,其余字符可以是字母、数字和其他特定字符。 不能使用助记符、伪指令或者寄存器的符号名称做标号。 与操作码之间用冒号分开,带方括号表示为可选项。 一个标号只能在程序中出现一次,不能重复出现。 操作码 是由助记符表示的字符串,它规定了指令要完成的具体操作。 操作数 指令操作的对象 . 操作数分为目的操作数(上例累加器 A) 和源操作数(上例中的 @DPTR). 目的操作数和源操作数的书写顺序不能颠倒 . 注 释 对指令功能的说明,以便于阅读,符号“;”后面的内容为注释。 汇编指令及其注释中常用的符号 Rn ------选中当前的工作寄存器区中的寄存器R0~R7之一 @ Ri------选中当前的工作寄存器组中的寄存器R0或R1,间接寻址前缀符号direct------直接地址,一个内部RAM单元地址或SFR地址. #data ------------8位或16位常数,也称立即数. #为立即数前缀标志符号 addr11------------11位目的地址 addr16------------16位目的地址 rel ---------------8位地址偏移量,值在-128~+127范围内 bit---------------位地址.SFR的位地址(可用符号或名称表示) /-----------------位操作前缀,表示该位内容求反 (×)------------表示以×为地址单元中内容 ((×))--------表示以×为地址单元中内容为地址的单元中的
|