汇编程序设计.ppt

汇编程序设计.ppt

ID:56480336

大小:366.50 KB

页数:44页

时间:2020-06-19

汇编程序设计.ppt_第1页
汇编程序设计.ppt_第2页
汇编程序设计.ppt_第3页
汇编程序设计.ppt_第4页
汇编程序设计.ppt_第5页
资源描述:

《汇编程序设计.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第四章汇编语言程序设计所谓程序设计,就是按照给定的任务要求,编写出完整的计算机程序。要完成同样的任务,使用的方法或程序并不是唯一的。因此,程序设计的质量将直接影响到计算机系统的工作效率、运行可靠性。前面我们学过了汇编语言形式的指令系统,本章重点介绍汇编语言程序结构以及如何利用汇编语言指令进行程序设计的方法。4.1汇编语言程序设计概述4.1.1汇编语言程序设计步骤使用汇编语言设计一个程序大致上可分为以下几个步骤。(1)分析题意,明确要求。(2)确定算法。(3)画程序流程图,用图解来描述和说明解题步骤。图4.1常用的流程图符号(4)分配内存工作单元,确定程序与数据区的存放地址。(5)编写源

2、程序(6)程序优化。(7)上机调试、修改和最后确定源程序。4.2.2伪指令语句伪指令并不是真正的指令,也不产生相应的机器码,它们只是在计算机将汇编语言转换为机器码时,指导汇编过程,告诉汇编程序如何汇编。下面介绍一些MCS-51汇编程序常用的伪指令。(1)汇编起始伪指令ORG格式:[标号:]ORG16位地址功能:规定程序块或数据块存放的起始地址。如:ORG8000HSTART:MOVA,#30H……该指令规定第一条指令从地址8000H单元开始存放,即标号START的值为8000H。(2)汇编结束伪指令END格式:[标号:]END[表达式]功能:结束汇编。例如:ORG2000HSTART:

3、MOVA,#00H……END(ENDSTART)表示标号START开始的程序段结束。(3)等值指令EQU格式:字符名称EQU项例如,TESTEQUR0MOVA,TEST(4)定义字节指令DB格式:[标号:]DB8位二进制数表DB命令是从指定的地址单元开始,定义若干个8位内存单元的内容。例如,ORG1000HTAB;DB23H,73,“6”,“B”TABl:DB110B以上伪指令经汇编以后,将对从1000H开始的若干内存单元赋值:(1000H)=23H(1001H)=49H(1002H)=36H(1003H)=42H(1004H)=06H其中36H和42H分别是字符6和B的ASCII码,

4、其余的十进制数(73)和二进制数(110B)也都换算为十六进制数了。(5)定义字命令DW格式:[标号:]DW16位二进制数表例如,ORG1000HTAB:DW1234H,0ABH,10汇编后:(1000H)=12H(1001H)=34H(1002H)=00H(1003H)=ABH(1004H)=00H(1005H)=0AHDB、DW伪指令都只对程序存储器起作用,不能用来对数据存储器的内容进行赋值或进行其它初始化的工作。4.2顺序程序设计顺序结构程序是一种最简单、最基本的程序(也称为简单程序),它是一种无分支的直线形程序,按照程序编写的顺序依次执行。【例4-1】两个8位无符号数相加,和仍

5、为8位。假设两个无符号数X1,X2分别存放于内部RAM60H、61H单元中,求其和并将和送入62H单元。程序如下:ORG0000HCLRCMOVR0,#60H;设R0为数据指针MOVA,@R0;取X11NCR0ADDCA,@R0;X1+X21NCR0MOV@R0,A;保存结果END【例4-2】两个无符号双字节数相加。设被加数存放在内部存储器30H(高位字节)、31H(低位字节)单元,加数存放在内部存储器40H(高位字节)、41H(低位字节)单元,和存入30H(高位字节)、31H(低位字节)单元。程序如下:ORG0000HCLRC;将C清零MOVR0,#31H;送被加数首址MOVR1,#

6、41H;送加数首址MOVA,@R0;取被加数低字节ADDA,@R1;两个低字节相加MOV@R0,A;低字节和存人被加数低字节DECR0;修改指针,指向被加数高字节DECR1;修改指针,指向加数高字节MOVA,@R0;取被加数高字节ADDCA,@R1;高字节相加MOV@R0,A;存结果END【例4-3】编写16位二进制数求补程序二进制数的求补可归结为“求反加1”的过程,求反可用CPL指令实现;加1时应注意,加1只能加在低8位的最低位上。因为现在是16位数,有两个字节,因此要考虑进位问题,即低8位取反加1,高8位取反后应加上低8位加1时可能产生的进位,还要注意这里的加1不能用INC指令,因

7、为INC指令不影响CY标志。程序如下:ORG0200HMOVA,R0;低8位送ACPLA;取反ADDA,#01H;加lMOVR2,A;存结果MOVA,R1;高8位送ACPLA;取反ADDCA,#00H;加进位MOVR3,A;存结果(R1R0---R3R2)END【例4-4】编程将20H单元中的8位无符号二进制数转换成3位BCD码,并存放在22H(百位)和21H(10位,个位)两个单元中。程序如下:ORG1000HMOVA,20H;取数送AMOV

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。