预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共49页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

3.3汇编语言程序设计3.3.2伪指令 1、定位伪指令 格式:ORGn 2、定义字节伪指令 格式:标号:DBX1,X2,……Xn 此伪指令的功能是把Xi存入从标号开始连续的单元中。 3、定义双字节伪指令 格式:标号:DWX1,X2,……Xn 此伪指令的功能是把Xi存入从标号开始的连续单元中。 4、预留存贮区伪指令 格式:DSn DSn从标号指定单元开始,预留n个单元的存贮区。 5、赋值伪指令 格式:字符名称xEQUn 此指令的功能是将数据或地址n赋给字符名称。 6、结束汇编指令 格式:END END指示源程序到结束,常将其放在汇编语言源程序的末尾。 3.3.3汇编语言程序设计过程 1、分析任务,确定算法或解题思路 2、根据算法和解决思路画出程序流程图 流程图是由一些框图和流程线组合而成: ` 置的框图连接在一起,位于不同框图的圈内,应标注相同的字母。 3、根据流程图编写程序 4、上机调试程序 3.3.4顺序结构程序设计 按照程序编写的顺序,依次执行。任何复杂的程序,都含有较大成份的顺序结构程序。 【例3-8】将两位压缩BCD码转换成二进制数 编程思路:(a1a0)BCD=a1×10+a0 编程说明:待转换的两位压缩BCD码存放于R2,转换结果存回R2。 程序流程图如图3-1所示。 编程如下: START:MOVA,R2 ANLA,#0F0H;取高位BCD码 SWAPA MOVB,#0AH MVLAB MOVR3,A MOVA,R2 ANLA,#0FH;取低位BCD码 ADDA,R3 MOVR2,A END 3.3.5分支程序设计 【例3-9】求符号函数的值 1当X>0 Y= 0当X=0的值。 -1当X<0 编程说明:设变量X存放在40H单元中,函数Y存放在41H单元中。此程序为三分支程序。 程序流程图如图3-3所示。编程如下: START:MOVA,40H JZCOMP JNBACC.7,POST MOVA,#81H;表示-1 SJMPCOMP POSI:MOVA,#01H;表示+1 COMP:MOV41H,A END 【例3-10】求单字节有符号二进制数的补码。编程如下: CMPT: MOVA,30H JNBACC.7,NCH ;(A)≥0,不需要转换 MOVC,ACC.7 ;保存符号 MOV10H,C CPLA ADDA,#1 MOVC,10H MOVACC.7,C ;恢复符号 NCH: END 图3-5中,K的最大值一般为128。 【例3-1‰】用单片机作四则运算。 编程说明:在单片机系统中,设置+、-、×、÷四个运算键,这四个运算键的键值分别为0、1、2、3(键值存放在寄存器(2中),当其中一个按键按下时,进行相应的运算。 P1口输入被加数、被减数、被乘数或被除数,以及运算结果的低8位或商。 P3口输入加数、减数、乘数或除数,,以及结果的高8位或余数。 键号存放在累加器A中。 程序流程图如图3-6所示。参考程序如下: START:MOVP1,#0FFH MOVP3,#0FFH MOVDPTR,#TABLE CLRC MOVA,R2 SUBBA,#04H JNCERROR ADDA,#0-4H CLRC RLA;正确的散转偏移号,键号×2 JMP@A+DPTR TABLE:AJMPPRG0 AJMPPRG1 AJMPPRG2 AJMPPRG3 ERROR:(错误处理) PRG0:MOVA,P1 ADDA,P3 MOVP1,A CLRA ADDCA,#00H ;进位位放入A中 MOVP3,A RET PRG1:MOVA,P1 CLRC SUBBA,P3 MOVP1,A CLRA RLCA ;借位放入A中 MOVP3,A RET PRG2:MOVA,P1 MOVB,P3 MULAB MOVP1,A MOVP3,B RET PRG3:MOVA,P1 MOVB,P3 DIVAB MOVP1,A MOVP3,B RET 【例3-12】已知内存单元有16个二进制无符号数,分别存放在30H~3FH中,试求它们的累加和,并将其和数存放在R4、R5中。 编程说明:存放16个二进制无符号数的首地址为30H,此循环程序的循环次数为16次,和数放在R4、R5中。程序流程如图3-8。 参考程序如下: START:MOVR0,#30H MOVR2,#10H MOVR4,#00H MOVR5,#00HLOOP:MOVA,R5 ADDA,@R0 MOVR5,A MOVA,#00H ADDCA,R4 MOVR4,A INCR0 DJNZR2,LOOP END 【例3-13】将内部数