采用约定的英文助记符代替机器码进行编程的计算机语言称为汇编语言,由汇编语言规则编写的程序称为汇编程序。需要通过汇编系统软件将其“翻译”成机器码文件才能运行,这个“翻译”过程称为汇编程序的编译。
所谓指令就是指挥计算机运行的命令。一条汇编语言指令中最多包含4个区段,其中标号区段是当前指令行的符号地址,由英文字母开头的1~6个字符组成,不区分大小写,以英文冒号结尾;操作码区段是指令的操作行为,由操作码助记符表征,它们由2~5个英文字符组成,不区分大小写;操作数区段是指令的操作对象,操作数可以是0~3个,大于1个时,操作数之间要用英文逗号隔开;注释区段是对指令的解释性说明,可以用任何文字描述,以英文分号开始,无须结束符号。
标识符由英文字母开头的1~6个字符组成,例如EAH,C6A等;16进制地址由字符0~9和A~F表示,若最高位为A~F时应加前缀“0”以区别于标识符,例如0EAH,5AH等;立即数需加前缀“#”以区别于地址,例如#0EAH,#5AH等。
MCS-51单片机指令系统共有111条指令,按照基本功能可划分为4大类,即数据传送与交换类、算术运算类、逻辑运算及移位类和控制转移类(或将分散于上述4类之中的位操作类指令汇总作为第5大类指令)。
先将RAM单元值传送到A中,再利用条件转移指令JZ对累加器A的判零间接实现。
ACALL指令的操作数是addr11,子程序可放在距当前指令2KB的范围内,而LCALL指令的操作数是addr16,子程序可放在距当前指令64KB的范围内。选用前者(双字节指令)有利于缩短代码长度,选用后者(三字节指令)可提高程序布局的灵活性。
先利用CJNE对比较的两方进行是否相等判断。如果判断结果是相等,就直接使位单元7FH置1,然后结束程序;如果判断结果为不等,则需进一步利用CY判断指令JC进行大于或小于判断,然后根据结果进行数据排序转存并结束程序。
先利用RLC带进位循环指令将字节数据转为C中的位数据,再利用MOV位传送指令将C传送到I/O端口输出"
伪指令ORG用于定义程序代码在ROM中存放的首地址, 语句ORG 30H表示本程序编译后产生的机器码将从ROM 30H地址开始依次加载;伪指令EQU用于给标识符赋值,语句CYC1 EQU 200表示,程序中的CYC1标识符汇编时将会用常数200代替;伪指令END用于通知编译器源程序结束,如果缺少END,程序编译时就会报错。
51单片机共有7种寻址方法,其中直接寻址范围是片内RAM低128字节单元和除A、B、C、DPTR外的其他SFR;寄存器寻址范围是通用寄存器Rn和SFR中的A、B(仅限于乘除法)、CY和DPTR;寄存器间接寻址范围是@R0、@R1和@DPTR;立即寻址范围是#data或#data16的立即数;变址寻址范围是@A+DPTR或@A+ PC;位寻址范围是片内RAM(含SFR)中的位地址单元;相对寻址范围是以当前地址与偏移量rel合成后的地址单元。
各类指令操作码助记符如下: 数据传送与交换类指令(8种),即MOV,MOVX,MOVC,XCH,XCHD,SWAP,PUSH和POP; 算术运算类指令(8种),即ADD,ADDC,SUBB,INC,DEC,MUL,DIV和DA; 逻辑运算及移位类指令(10种),即ANL,ORL,XRL,SETB,CLR,CPL,RL,RR,RLC和RRC; 控制转移类指令(18种),即AJMP,SJMP,LJMP,JMP,ACALL,LCALL,RET,RETI,JZ,JNZ,CJNE,DJNZ,JC,JNC,JB,JNB,JBC和NOP。
1分析问题,确定算法或解题思路;2通过画流程图表示程序的执行过程或程序的结构;3分别编写各个模块程序,然后汇总成完整程序;4进行语法错误和逻辑错误的调试和修改,直至问题完全排除。
创建含有原理图绘制和Source Code标签页的新项目→在原理图绘图标签页中完成电路图绘图→根据题意完成汇编源程序编写→将源程序添加到source Code标签页的项目树中并保存为*.asm文件→单击菜单【构建】-【构建工程】进行程序编译→启动仿真运行或进入调试环节→完成设计过程。