欢迎来到天天文库
浏览记录
ID:1482646
大小:736.50 KB
页数:55页
时间:2017-11-11
《51系列汇编语言程序设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第五章《MCS-51汇编语言程序设计》刘建成ljc@mail.csu.edu.cn14.1汇编语言程序设计概述汇编语言是面向机器硬件的语言,要求程序设计者对MCS-51单片机具有很好的“软、硬结合”的功底。MCS-51单片机的编程语言可以是汇编语言也可以是高级语言(如C语言),高级语言编程快捷,但程序长,占用存储空间大,执行慢;汇编语言产生的目标程序简短,占用存储空间小,执行快,能充分发挥计算机的硬件功能。无论是高级语言还是汇编语言,源程序都要转换成目标程序(机器语言)单片机才能执行。2连接/定位器L51汇编语言源程序汇编器A51符号转换程序OHS51绝对地址目标程
2、序.BINC语言程序浮动地址目标程序编译器C51·HEX图3-1两种语言源程序转换成目标程序1.伪指令(1)起始指令ORGnn功能:定义程序或数据块的起始地址。指示此语句后面的程序或数据块以nn为起始地址,连续存放在程序存储器中。指令地址机器码源程序ORG2000H2000H7830MAIN:MOVR0,#30H2002HE6MOVA,@R0…ORG3000H3000H23TAB:DB23H,100,‘A’3001H643002H414.2伪指令与汇编程序基本格式(2)字节定义标号:DB(字节常数,或字符或表达式)功能:指示在程序存储器中以标号为起始地址的单元里存放
3、的数为字节数据(八位二进制数)。例如LN:DB32,’C’,25H,-1;LN~LN+2地址单元依次存放20H,43H,25H,FFH地址数据LN20LN+143LN+225LN+3FF(3)字定义标号:DW(字常数或表达式)作用:指示在程序存储器中以标号为起始地址的单元里存放的数为字数据(即16位的二进制数),例如:GH:DW1234H,5678H,08GH1234GH+25678GH+40008(5)等值指令标号EQU(数值表达式)表示EQU两边的量等值,用于为标号或标识符赋值。例如:X1EQU2000HX2EQU0FH…MAIN:MOVDPTR,#X
4、1;DPTR=2000HADDA,#X2;A=A+0FH(4)保留字节标号:DS(数值表达式)作用:指示在程序存储器中保留以标号为起始地址的若干字节单元,其单元个数由数值表达式指定。例如L1:DS32;从L1地址开始保留32个存储单元。(6)位定义标号BIT[位地址]作用:同EQU指令,不过定义的是位操作地址。例如AICBITP1.1(7)汇编结束END作用:指示源程序段结束。END指令放在程序的最后。A51汇编程序还有一些其它的伪指令。2、汇编程序基本格式(1)汇编语言的语句格式[<标号>]:<操作码>[<操作数>];[<注释>](2)汇编程序的一般格式ORGXX
5、XXH汇编语句1……汇编语句NEND返回本节8第四章MCS-51汇编语言程序设计本章介绍以下内容汇编语言程序设计概述汇编语言伪指令源程序的编辑和汇编汇编语言程序基本结构形式程序设计举例9汇编语言程序基本结构形式按结构化程序设计思想,任何复杂程序都可由顺序结构、分支结构、循环结构等构成10顺序结构不同的操作顺序执行,没有分支、循环、子程序调用。多字节无符号数相加整个系统流程就是顺序结构11顺序程序设计顺序结构程序是一种最简单、最基本的程序(也称为简单程序),它是一种无分支的直线形程序,按照程序编写的顺序依次执行。【例】两个8位无符号数相加,和仍为8位。假设两个无符号数
6、X1,X2分别存放于内部RAM60H、61H单元中,求其和并将和送入62H单元。程序如下:ORG0000HCLRCMOVR0,#60H;设R0为数据指针MOVA,@R0;取X1INCR0ADDCA,@R0;X1+X2INCR0MOV@R0,A;保存结果END12由于MCS-51指令系统中只有单字节加法指令,因此对多字节相加时运算,必须从低位字节开始分字节进行。最低字节可以使用ADD指令其它字节相加时要把低字节的进位考虑进去.因此应使用ADDC指令。顺序程序设计13【例】两个无符号双字节数相加。设被加数存放在内部存储器30H(高位字节)、31H(低位字节)单元,加数存
7、放在内部存储器40H(高位字节)、41H(低位字节)单元,和存入30H(高位字节)、31H(低位字节)单元。ORG0000HCLRC;将C清零MOVR0,#31H;送被加数首址MOVR1,#41H;送加数首址MOVA,@R0;取被加数低字节ADDA,@R1;两个低字节相加MOV@R0,A;低字节和存人被加数低字节DECR0;修改指针,指向被加数高字节DECR1;修改指针,指向加数高字节MOVA,@R0;取被加数高字节ADDCA,@R1;高字节相加MOV@R0,A;存结果END顺序程序设计14没有专门循环指令通过条件判断控制循环区分先执行后判断先判断后执行循环控制
此文档下载收益归作者所有