《第4章汇编语言程序设计 伪指令的功能和应用 程序设计的步骤和基本方法汇编的概念 顺序程序 分支程序 循环程序 子程序.ppt》由会员分享,可在线阅读,更多相关《第4章汇编语言程序设计 伪指令的功能和应用 程序设计的步骤和基本方法汇编的概念 顺序程序 分支程序 循环程序 子程序.ppt(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第4章 汇编语言程序设计 伪指令的功能和应用 程序设计的步骤和基本方法汇编的概念 顺序程序 分支程序 循环程序 子程序 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望2.汇编语言汇编语言标号标号:操作码操作码 目的操作数,源操作数目的操作数,源操作数;注释;注释4-1 4-1 程序设计概述程序设计概述4.1.1 4.1.1 程序设计语言简介程序设计语言简介1.机器语言机器语言(用二进制或十六进制的代码来表示(用二进制或十六进制的代码来表示 指令或数据)指令或数据)
2、举例:举例:将寄存器将寄存器R0中的值送给累加器中的值送给累加器A 机器语言机器语言 E8优点优点:便于记忆、阅读;占用内存少。便于记忆、阅读;占用内存少。缺点缺点:低级语言面向机器,不同机型有不同的语言低级语言面向机器,不同机型有不同的语言特点:特点:一条指令对应一组二进制代码一条指令对应一组二进制代码 3.高级语言C语言 汇编和调试汇编和调试4.1.2 4.1.2 程序设计的基本方法程序设计的基本方法 分析问题,确定算法或解题思路分析问题,确定算法或解题思路 画流程图画流程图 编写源程序编写源程序 流程图符号和说明流程图符号和说明:P73页看判断框的使用页看判断框的使用起止框:处理框流程线
3、判断框连接点4.1.3 4.1.3 伪指令伪指令 伪指令:伪指令:在汇编时起控制作用,自身在汇编时起控制作用,自身并不产生并不产生机器码,机器码,而仅是为汇编服务的一些指令,称为而仅是为汇编服务的一些指令,称为伪指令伪指令。起始伪指令起始伪指令 ORG(OriginORG(Origin)功能:规定功能:规定ORGORG下面第一条指令的起始地址为下面第一条指令的起始地址为 ORG指定的指定的16位地址。位地址。格式:格式:ORG 16ORG 16位位地址地址常用的伪指令有以下几种:常用的伪指令有以下几种:ORG 0100HORG 0100H START START:MOV AMOV A,#05H
4、#05H ADD A ADD A,#08H#08H MOV 20H MOV 20H,A AMOV AMOV A,#05H#05H指令的第一个字节地址为指令的第一个字节地址为01000100H H,标号标号STARTSTART代表的地址为代表的地址为01000100H H。结束伪指令结束伪指令 ENDEND功能:汇编语言源程序的结束标志。功能:汇编语言源程序的结束标志。在在ENDEND后面的指令,不被汇编后面的指令,不被汇编。格式:格式:ENDEND 等值伪指令等值伪指令 EQUEQU(EquateEquate)格式:格式:字符名称字符名称 EQUEQU 数据或符号数据或符号例如:例如:PW E
5、QU 2000H PW EQU 2000H MOV DPTR,#PW ;(DPTR)=2000H MOV DPTR,#PW ;(DPTR)=2000H 这里将这里将PWPW等值为数值等值为数值2000H2000H,在指令中在指令中PWPW就可就可以代替以代替2000H2000H来使用。来使用。PQ EQU R0 PQ EQU R0 ;PQ=R0PQ=R0 MOV A MOV A,PQ PQ ;A (R0)A (R0)这里将这里将PQPQ等值为汇编符号等值为汇编符号R0R0,在指令中在指令中PQPQ就就可以代替可以代替R0R0来使用。来使用。4.4.定义字节伪指令定义字节伪指令DBDB(Defi
6、ne ByteDefine Byte)格式:标号:格式:标号:DB 8DB 8位二进制数表位二进制数表功能:从指定的地址单元开始,定义若干功能:从指定的地址单元开始,定义若干 个个8 8位位 内存单元的数据。数据与数据之间用内存单元的数据。数据与数据之间用“,”分分割。割。例如:例如:2000H:DB 0,1,4,981例如:例如:ORG 4000HORG 4000H TAB TAB:DB 73H DB 73H,4545,A,“A”A,“A”,2,“2”2,“2”TAB1 TAB1:DB 101BDB 101B 以上指令经汇编后,将对以上指令经汇编后,将对40004000H H开始的若干内存单
7、开始的若干内存单元赋值。元赋值。(4000(4000H)=73HH)=73H,(4001H)=2DH(4001H)=2DH(注:注:4545的的1616进进制数制数),5.5.定义字数据伪指令定义字数据伪指令DWDW(Define WordDefine Word)格式:格式:DW 16DW 16位二进制数表位二进制数表功能:从指定的地址单元开始,定义若干个功能:从指定的地址单元开始,定义若干个 1616位数据。数据之间用位数据。数据之间用,号。,号。举例:举例:ORG 2000HDATA:DW 4579H,3CH汇编后汇编后(2000H)=45H (2001H)=79H (2002H)=00H
8、 (2003H)=3CH AQ BIT P0.0AQ BIT P0.0 DEF BIT 00H DEF BIT 00H 把把P0P00 0的位地址赋给字符的位地址赋给字符AQAQ,把位地址把位地址0000H H赋赋给字符给字符DEFDEF。在其后的编程中,在其后的编程中,AQAQ可作可作P0.0P0.0使用,使用,DEFDEF可作位地址可作位地址3030H H使用。使用。格式:格式:字符名称字符名称 BITBIT 位地址位地址6.6.定义位地址伪指令定义位地址伪指令BITBIT功能:将位地址赋予所规定的字符名称。功能:将位地址赋予所规定的字符名称。7.定义空间伪指令:定义空间伪指令:格式:标号
9、:格式:标号:DS 表达式表达式功能:从标号指定的地址单元开始,保留若干个存储功能:从标号指定的地址单元开始,保留若干个存储 单元作为备用的空间,保留的个数由表达式指定。单元作为备用的空间,保留的个数由表达式指定。ORG 1000H BUF:DS 05H4.1.4.4.1.4.汇编汇编 将汇编语言源程序转换为计算机所能识别将汇编语言源程序转换为计算机所能识别的机器语言代码程序的过程称为汇编。的机器语言代码程序的过程称为汇编。汇编可分为:汇编可分为:手工汇编手工汇编 计算机汇编(计算机汇编(keilkeil软件和各种实验箱软件和各种实验箱 附带的软件)附带的软件)【例【例4-14-1】对下段程序
10、进行手工汇编。】对下段程序进行手工汇编。P52页 见AJMP addr11 顺序程序是指按顺序依次执行的程序,顺序程序是指按顺序依次执行的程序,顺序程顺序程序结构虽然比较简单,但它是构成复杂程序的基础序结构虽然比较简单,但它是构成复杂程序的基础。【例【例4-2】编写编写16位二进制数求补程序。位二进制数求补程序。设设16位二进制数存放在位二进制数存放在R1、R0中,求补以后的中,求补以后的结果则存放于结果则存放于R3、R2中。中。第二节第二节 汇编语言程序设计举例汇编语言程序设计举例一一.顺序程序顺序程序注意;注意;这里不能用这里不能用INCINC指令,因为指令,因为INCINC指令不影响标志
11、指令不影响标志位。位。ORG 0200HCONT:MOVCONT:MOV A,R0 A,R0;读低读低8 8位位CPLCPL A A;取反取反ADDADD A,#1 A,#1;加加1 1MOVMOV R2,A R2,A;存低存低8 8位位MOVMOV A,R1 A,R1;读高读高8 8位位CPLCPL A A;取反取反ADDCADDC A,#80H A,#80H;加进位及符号位加进位及符号位MOV R3,AMOV R3,A;存高存高8 8位位RETRET;ORG 2000HORG 2000H BCD2 BCD2:MOV AMOV A,R2 ;R2 ;取入口数据取入口数据 ANL AANL A,
12、#0F0H ;#0F0H ;取出十位取出十位 SWAP A ;SWAP A ;高高4 4位位 低低4 4位位 MOV BMOV B,#0AH#0AH 【例【例4-3】:将将R2R2中中BCDBCD码数转为二进制数存进码数转为二进制数存进R2R2。方法:将十位取出,乘方法:将十位取出,乘10,加上个位。加上个位。(设(设R2中存放的数是中存放的数是19)MUL AB ;MUL AB ;十位乘十位乘1010(A)=0AHA)=0AH MOV R3MOV R3,A ;A ;积暂存进积暂存进R3R3 MOV A MOV A,R2 ;R2 ;再取入口数据再取入口数据 ANL AANL A,#0FH ;#
13、0FH ;取出个位取出个位 ADD AADD A,R3 R3 ;(;(A A)=12H=12H MOV R2 MOV R2,A ;A ;结果结果R2 R2 END ;END ;根据不同条件转向不同的处理程序,这结构根据不同条件转向不同的处理程序,这结构的程序称为分支程序。的程序称为分支程序。8080C51C51指令系统中的指令系统中的条件转移指令条件转移指令、比转移比转移指令指令和和位转移指令位转移指令,可以实现分支程序。,可以实现分支程序。二二.分支程序分支程序【例【例4-4-4 4】已知已知X X、Y Y均为均为8 8位二进制有符号数,位二进制有符号数,分别存在分别存在3030H,31HH
14、,31H中,试编制能实现下列符号函中,试编制能实现下列符号函数的程序:数的程序:实现程序如下实现程序如下:【例【例4-54-5】将】将ASCIIASCII码转换为十六进制数。设码转换为十六进制数。设ASCIIASCII 码放在累加器码放在累加器A A中,转换结果放到中,转换结果放到B B中。中。解:解:0 09 9的的ASCIIASCII码码3030H H39H39H为为,将将ASCIIASCII码减码减3030H(0H(09)9)。A AF F的的ASCIIASCII码码4141H H46H46H为为,37,37H(AH(AF)F)就可获得对应就可获得对应 的十六进制数。的十六进制数。散转程序是散转程序是一种并行多分支程序。一种并行多分支程序。见前面学过的内容:按0、1、2、3发生三角波、方波、锯齿波、正弦波。