资源描述:
《MCS51单片机汇编语言程序设计课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第4章MCS-51单片机汇编语言程序4.1程序设计的基本方法4.2汇编语言程序的基本形式与设计举例4.2汇编程序设计示例4.2.1顺序程序例4.1把累加器中的8位无符号二进制数转换成3位(2字节)BCD码形式。百位数字存入片内的21H单元,十位数和个位数存入相邻的22H单元中。BINBCD:MOVB,#100DIRABMOV21H,AMOVA,10XCHA,BDIVABSWAPAADDA,BMOV22H,ARET例4.2设在片内RAM中,20H和21H单元各存放有一个8位数据,要求拼装一个新的字节并送30H保存,其低5位取自20H单元中的低5位,高3位取自21H单元中的低3位。实现程序如
2、下:MOV30H,20HANL30H,#00011111BMOVA,21HSWAPARLAANLA,#11100000BORL30H,A例4.3做3个字节的无符号的加法.设一个加数存放在内部RAM的50H、51H、52H单元中,另一个加数存放在RAM的53H、54H、55H单元中,相加结果存内部RAM的50H、51H、52H单元,均从高字节开始存放,进位存放在位寻址区的00H位中。实现程序如下:MOVR0,#52HMOVR1,#55HMOVA,@R0ADDA,@R1MOV@R0,ADECR0DECR1MOVA,@R0ADDCA,@R1MOV@R0,ADECR0DECR1MOVA,@R0A
3、DDCA,@R1MOV@R0,AMOV00H,C4.2.2分支程序条件满足?N影响条件Y处理段程序段B条件满足?N影响条件Y程序段A单分支结构双分支结构4.2.2分支程序00分支N分支条件满足?n-1影响条件nN-1分支多分支结构…例4.4设在外部的3个连续存储单元ST1、ST2和ST3中,ST1和ST2存放着两个不带符号的二进制,请找出其中的大数并存入ST3单元中。实现程序如下:START:CLRCMOVDPTR,#ST1MOVXA,@DPTRMOVR7,AINCDPTRMOVXA,@DPTRSUBBA,R7JNCBIG1XCHA,R7BIG0:INCDPTRMOVX@DPTR,ARE
4、TBIG1:MOVXA,@DPTRSJMPBIG0例4.5某温度控制系统,采集的温度值T存放在累加器A中,此外在内部RAM的54H单元中存入控制温度的下限值Ta,在55H单元中存放控制的上限值Tb。若T>Tb,程序转向降温处理程序JW;若T5、。实现程序如下:START:MOVDPTR,#TABMOVA,R7ADDA,R7MOVR3,AMOVCA,@A+DPTRXCHA,R3INCAMOVCA,@A+DPTRMOVDPL,AMOVDPH,R3CLRAJMP@A+DPTRTABDWA0DWA1………….DWAN循环次数的控制,有两种控制方式:第一种方法先判断再处理即先判断满不满足循环条件,如不满足,就不循环,多以循环条件控制。第二种方法先处理再判断,即循环执行一遍后,下一轮还需不需要进行,多以计循环次数控制。循环可以有单重循环和多重循环,在多重循环中,内外循环不能交叉,也不允许外循环跳入内循环。下面通过几个实例说明循环程序的设计
6、方法。4.2.3循环程序设计例4.7长度为10H的字符串存放在首地址为inbuf的内部RAM中,从inbuf地址开始将字符串向片外RAM的outbuf地址开始的存储单元传送,一直进行到遇见回车符(0DH)或整个字符串传送完毕。实现程序如下:MOVR7,#10HMOVR0,#inbufMOVDPTR,#outbufLOOP:CJNE@R0,#0DH,NEXTSJMPEDNEXT:MOVA,@R0MOVX@DPTR,AINCR0INCDPTRDJNZR7,LOOPED:SJMP$例4.8在外部RAM首地址为table的数据表中,有10个字节的数据,编程将每个字节的最高位无条件地置1。实现程序
7、如下:MOVDPTR,#tableMOVR7,#0AHLOOP:MOVXA,@DPTRORLA,#10000000BMOVX@DPTR,AINCDPTRDJNZR7,LOOPSJMP$例4.9把片内RAM中地址为30H到39H单元中的10个无符号数逐一比较,并按从小到大的顺序依次排列在这片单元中。实现程序如下:START:CLR00HMOVR7,#09HMOVR0,#30HMOVA,@R0LOOP:INCR0MOVR2,ASUBBA