微型计算机的程序设计.ppt

上传人:石*** 文档编号:84147198 上传时间:2023-04-02 格式:PPT 页数:22 大小:1.24MB
返回 下载 相关 举报
微型计算机的程序设计.ppt_第1页
第1页 / 共22页
微型计算机的程序设计.ppt_第2页
第2页 / 共22页
点击查看更多>>
资源描述

《微型计算机的程序设计.ppt》由会员分享,可在线阅读,更多相关《微型计算机的程序设计.ppt(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、微型计算机的程序设计微型计算机的程序设计现在学习的是第1页,共22页6.1 6.1 程序设计步骤程序设计步骤程序设计步骤程序设计步骤汇编语言程序设计的步骤:汇编语言程序设计的步骤:汇编语言程序设计的步骤:汇编语言程序设计的步骤:1.1.1.1.分析问题,全面理解问题。分析问题,全面理解问题。分析问题,全面理解问题。分析问题,全面理解问题。2.2.2.2.建立数学模型,确定算法。建立数学模型,确定算法。建立数学模型,确定算法。建立数学模型,确定算法。3.3.3.3.绘制程序流程图。绘制程序流程图。绘制程序流程图。绘制程序流程图。4.4.4.4.内存空间分配:内存空间分配:内存空间分配:内存空间分

2、配:工作区尽可能设在工作区尽可能设在工作区尽可能设在工作区尽可能设在CPUCPUCPUCPU的内部寄存器中的内部寄存器中的内部寄存器中的内部寄存器中。5.5.5.5.编制程序和静态检查编制程序和静态检查编制程序和静态检查编制程序和静态检查6.6.6.6.程序调试实验程序调试实验程序调试实验程序调试实验现在学习的是第2页,共22页6.2 6.2 简单程序简单程序简单程序简单程序n n 程序执行方式为程序执行方式为程序执行方式为程序执行方式为“从头到尾从头到尾从头到尾从头到尾”逐条执逐条执逐条执逐条执行指令语句,直到程序结束。行指令语句,直到程序结束。行指令语句,直到程序结束。行指令语句,直到程序

3、结束。例例例例6.16.1:用数学运算命令,对数据段中两用数学运算命令,对数据段中两用数学运算命令,对数据段中两用数学运算命令,对数据段中两个个个个1616位数做加法运算位数做加法运算位数做加法运算位数做加法运算:3281H:3281H 2797H 2797H。这两个数从地址这两个数从地址这两个数从地址这两个数从地址10050H10050H开始连续存放,开始连续存放,开始连续存放,开始连续存放,低位在小地址一端,结果放在这两个数之低位在小地址一端,结果放在这两个数之低位在小地址一端,结果放在这两个数之低位在小地址一端,结果放在这两个数之后。后。后。后。1.1.分析题目:可用分析题目:可用分析题

4、目:可用分析题目:可用1616位寄存器进行运算,位寄存器进行运算,位寄存器进行运算,位寄存器进行运算,一次完成。一次完成。一次完成。一次完成。2.2.确定方法:采用加法指令实现两个数相确定方法:采用加法指令实现两个数相确定方法:采用加法指令实现两个数相确定方法:采用加法指令实现两个数相加,采用传送指令进行存储。加,采用传送指令进行存储。加,采用传送指令进行存储。加,采用传送指令进行存储。10050H10050H81H81H32H32H97H97H27H27H 和低和低和低和低8 8位位位位和高和高和高和高8 8位位位位 现在学习的是第3页,共22页6.2 6.2 简单程序简单程序简单程序简单程

5、序3.3.程序流程图:程序流程图:程序流程图:程序流程图:4.4.内存空间分配:内存空间分配:内存空间分配:内存空间分配:开始开始开始开始AXAX被加数加数被加数加数被加数加数被加数加数(10054)(10054)和和和和(10055)(10055)单元单元单元单元AXAX暂停暂停暂停暂停初始化:初始化:初始化:初始化:段地址段地址段地址段地址DSDS1000H1000H被加数指针被加数指针被加数指针被加数指针SISI50H50H加数指针加数指针加数指针加数指针DIDI52H52H和的指针和的指针和的指针和的指针BXBX54H54HAXAX被加数被加数被加数被加数内存地址内存地址内存地址内存地

6、址 内容内容内容内容10050H 10050H 被加数低被加数低被加数低被加数低8 8位位位位 81H81H10051H 10051H 被加数高被加数高被加数高被加数高8 8位位位位 32H32H10052H 10052H 加数低加数低加数低加数低8 8位位位位 97H97H10053H 10053H 加数高加数高加数高加数高8 8位位位位 27H27H10054H 10054H 和的低和的低和的低和的低8 8位位位位 10055H 10055H 和的高和的高和的高和的高8 8位位位位3281H 3281H 2797H2797H现在学习的是第4页,共22页6.2 6.2 简单程序简单程序简单程

7、序简单程序5.5.编制的程序如下:编制的程序如下:编制的程序如下:编制的程序如下:MOV AX,1000HMOV AX,1000HMOV DS,AX MOV DS,AX ;DSDS1000H1000HMOV SI,0050H MOV SI,0050H ;被加数地址;被加数地址;被加数地址;被加数地址MOV DI,0052H MOV DI,0052H ;加数地址;加数地址;加数地址;加数地址MOV BX,0054H MOV BX,0054H ;和的地址;和的地址;和的地址;和的地址CLC CLC ;清;清;清;清CFCFXOR AX,AX XOR AX,AX ;清;清;清;清AXAXMOV AX

8、,SI MOV AX,SI ;取被加数到;取被加数到;取被加数到;取被加数到AXAXADD AX,DI ADD AX,DI ;相加运算,;相加运算,;相加运算,;相加运算,AX AX AX+DI AX+DI MOV BX,AX MOV BX,AX ;存一个字到;存一个字到;存一个字到;存一个字到BXBXHLT HLT ;暂停;暂停;暂停;暂停为什么用这三为什么用这三为什么用这三为什么用这三个寄存器?个寄存器?个寄存器?个寄存器?为何不把为何不把为何不把为何不把1000H1000H直直直直接赋给接赋给接赋给接赋给DSDS?这两条指令是必这两条指令是必这两条指令是必这两条指令是必须有的吗?须有的吗

9、?须有的吗?须有的吗?在此程序中其在此程序中其在此程序中其在此程序中其他指令不变的他指令不变的他指令不变的他指令不变的情况下,改用情况下,改用情况下,改用情况下,改用ADCADC可以吗?可以吗?可以吗?可以吗?现在学习的是第5页,共22页6.3 6.3 分支程序分支程序分支程序分支程序利用条件转移指令,根据条件是否满足,来改变程序执行的利用条件转移指令,根据条件是否满足,来改变程序执行的利用条件转移指令,根据条件是否满足,来改变程序执行的利用条件转移指令,根据条件是否满足,来改变程序执行的顺序。顺序。顺序。顺序。IFTHENIFTHEN结构结构结构结构标号标号标号标号:条件满足条件满足条件满足

10、条件满足?处理处理处理处理N NY Y程序结构:程序结构:程序结构:程序结构:测试测试测试测试/比较指令比较指令比较指令比较指令 (TEST/CMP)(TEST/CMP)条件转移指令条件转移指令条件转移指令条件转移指令 (Jx (Jx 标号标号标号标号)处理体处理体处理体处理体 标号标号标号标号:其他指令其他指令其他指令其他指令 现在学习的是第6页,共22页6.3 6.3 分支程序分支程序分支程序分支程序例例例例6.36.3:求求求求AXAX累加器和累加器和累加器和累加器和BXBX寄存器中两个无符号数之差的绝对寄存器中两个无符号数之差的绝对寄存器中两个无符号数之差的绝对寄存器中两个无符号数之差

11、的绝对值,结果放在内存数据段(值,结果放在内存数据段(值,结果放在内存数据段(值,结果放在内存数据段(2800H2800H)单元中。)单元中。)单元中。)单元中。1.1.分析题目:应该先决定哪一个值较大,然后再用大数减去分析题目:应该先决定哪一个值较大,然后再用大数减去分析题目:应该先决定哪一个值较大,然后再用大数减去分析题目:应该先决定哪一个值较大,然后再用大数减去小数,得到绝对值。小数,得到绝对值。小数,得到绝对值。小数,得到绝对值。2.2.程序流程图:程序流程图:程序流程图:程序流程图:开始开始开始开始AX-BX=0?AX-BX=0?BXBX BX-AXBX-AX内存内存内存内存(280

12、0)(2800)和和和和(2801)(2801)单元单元单元单元 BXBX内存内存内存内存(2800)(2800)和和和和(2801)(2801)单元单元单元单元 AXAX结束结束结束结束Y YAXAX AX-BXAX-BXN N初始化初始化初始化初始化现在学习的是第7页,共22页6.3 6.3 分支程序分支程序分支程序分支程序3.3.编制的程序如下:编制的程序如下:编制的程序如下:编制的程序如下:CLC CLC ;清;清;清;清CFCF SUB AX,BX SUB AX,BX ;AX AX (AX AX BXBX)JC AA JC AA ;CF=1CF=1转转转转AAAA去执行去执行去执行去

13、执行 MOV DI,2800H MOV DI,2800H ;结果指针;结果指针;结果指针;结果指针 MOV DI,AX MOV DI,AX ;结果送到;结果送到;结果送到;结果送到2800H2800H和和和和2801H2801H单单单单元元元元 HLT HLT ;暂停;暂停;暂停;暂停AAAA:SUB BX,AX SUB BX,AX ;BX BX (BX BX AXAX)MOV DI,2800HMOV DI,2800H MOV DI,BX MOV DI,BX HLT HLT 此指令执行前,此指令执行前,此指令执行前,此指令执行前,AXAX中的中的中的中的数据是什么?数据是什么?数据是什么?数据

14、是什么?通过这两条指令能将数据通过这两条指令能将数据通过这两条指令能将数据通过这两条指令能将数据送入送入送入送入2800H2800H中吗?中吗?中吗?中吗?现在学习的是第8页,共22页6.3 6.3 分支程序分支程序分支程序分支程序例题例题例题例题6.36.3程序可编制如下:程序可编制如下:程序可编制如下:程序可编制如下:MOVMOV DX,0000HDX,0000HMOV DS,DXMOV DS,DX;设置段地址设置段地址设置段地址设置段地址MOV DI,2800HMOV DI,2800H;结果数据存放地址结果数据存放地址结果数据存放地址结果数据存放地址CMP AX,BXCMP AX,BX;

15、AX-BX;AX-BX,结果影响标志位,结果影响标志位,结果影响标志位,结果影响标志位JC AAJC AA;若产生借位,则若产生借位,则若产生借位,则若产生借位,则CF=1CF=1转转转转AA AA SUB AX,BX SUB AX,BX MOV DI,AXMOV DI,AX;结果送到结果送到结果送到结果送到2800H2800H和和和和2801H2801H单元单元单元单元HLTHLT;暂停暂停暂停暂停AAAA:SUB BX,AXSUB BX,AX;BX;BX (BX-AXBX-AX)MOV DI,BXMOV DI,BXHLT HLT 现在学习的是第9页,共22页6.3 6.3 分支程序分支程序

16、分支程序分支程序例:例:例:例:比较比较比较比较ALAL、BLBL、CLCL中带符号数的大小,将最小数放在中带符号数的大小,将最小数放在中带符号数的大小,将最小数放在中带符号数的大小,将最小数放在ALAL中。中。中。中。CMP AL,BLCMP AL,BL;AL;AL和和和和BLBL比较比较比较比较JNG BBBJNG BBB;若若若若ALBL,ALBL,则转则转则转则转BBBBBBXCHG AL,BLXCHG AL,BL;若若若若ALALBL,BL,则交换则交换则交换则交换BBB:BBB:CMP AL,CL CMP AL,CL;AL;AL和和和和CLCL比较比较比较比较JNG CCCJNG

17、CCC;若若若若ALCL,ALCL,则转则转则转则转CCCCCCXCHG AL,CLXCHG AL,CL;若若若若ALALCL,CL,则交换则交换则交换则交换CCC:CCC:HLTHLT现在学习的是第10页,共22页6.4 6.4 循环程序循环程序循环程序循环程序循环程序:强制循环程序:强制循环程序:强制循环程序:强制CPUCPU重复执行某一程序段。重复执行某一程序段。重复执行某一程序段。重复执行某一程序段。一般由一般由一般由一般由4 4部分构成:部分构成:部分构成:部分构成:n n 初始化:初始化:初始化:初始化:建立循环次数计数器,设定数据地址的初值。建立循环次数计数器,设定数据地址的初值

18、。建立循环次数计数器,设定数据地址的初值。建立循环次数计数器,设定数据地址的初值。n n 循环体:循环体:循环体:循环体:要重复执行的程序内容。要重复执行的程序内容。要重复执行的程序内容。要重复执行的程序内容。n n 循环控制:循环控制:循环控制:循环控制:修改变量、修改指针、修改循环计数器。修改变量、修改指针、修改循环计数器。修改变量、修改指针、修改循环计数器。修改变量、修改指针、修改循环计数器。n n 结束处理:结束处理:结束处理:结束处理:分析和存放程序的结果。分析和存放程序的结果。分析和存放程序的结果。分析和存放程序的结果。现在学习的是第11页,共22页6.4 6.4 循环程序循环程序

19、循环程序循环程序n n循环程序循环程序循环程序循环程序qq单循环:之有一重循环。单循环:之有一重循环。单循环:之有一重循环。单循环:之有一重循环。qq多重循环:两重以上的循环。多重循环:两重以上的循环。多重循环:两重以上的循环。多重循环:两重以上的循环。n n循环控制循环控制循环控制循环控制qq计数控制:事先设定循环次数,达到次数停止循环。计数控制:事先设定循环次数,达到次数停止循环。计数控制:事先设定循环次数,达到次数停止循环。计数控制:事先设定循环次数,达到次数停止循环。qq条件控制:根据是否满足一定的条件来控制循环。条件控制:根据是否满足一定的条件来控制循环。条件控制:根据是否满足一定的

20、条件来控制循环。条件控制:根据是否满足一定的条件来控制循环。现在学习的是第12页,共22页6.4 6.4 循环程序循环程序循环程序循环程序n n DO-WHILE DO-WHILE 结构结构结构结构 先执行,再判断条件。工作部分至少执行一次。先执行,再判断条件。工作部分至少执行一次。先执行,再判断条件。工作部分至少执行一次。先执行,再判断条件。工作部分至少执行一次。初始化初始化循环体循环体循环控制循环控制继续循环?继续循环?YN现在学习的是第13页,共22页6.4 6.4 循环程序循环程序循环程序循环程序n nWHILE WHILE 结构结构结构结构 先判断条件,再执行。工作部分有可能一次都不

21、执行。先判断条件,再执行。工作部分有可能一次都不执行。先判断条件,再执行。工作部分有可能一次都不执行。先判断条件,再执行。工作部分有可能一次都不执行。初始化初始化循环体循环体循环控制循环控制继续循环?继续循环?YN现在学习的是第14页,共22页6.4 6.4 循环程序循环程序循环程序循环程序例例例例6.56.5:求两个多字节数之和,求两个多字节数之和,求两个多字节数之和,求两个多字节数之和,这两个数在数据段这两个数在数据段这两个数在数据段这两个数在数据段10050H10050H地址地址地址地址开始的内存单元中连续存放,开始的内存单元中连续存放,开始的内存单元中连续存放,开始的内存单元中连续存放

22、,低位在小地址一端,运算结果低位在小地址一端,运算结果低位在小地址一端,运算结果低位在小地址一端,运算结果放在这两个数之后。设这两个放在这两个数之后。设这两个放在这两个数之后。设这两个放在这两个数之后。设这两个多字节数均为多字节数均为多字节数均为多字节数均为8 8个字节长。个字节长。个字节长。个字节长。1.1.分析题目:分析题目:分析题目:分析题目:8686系列指令系统系列指令系统系列指令系统系列指令系统可以进行可以进行可以进行可以进行1616位处理,所以,循位处理,所以,循位处理,所以,循位处理,所以,循环次数是环次数是环次数是环次数是4 4次。次。次。次。2.2.程序流程图:程序流程图:程

23、序流程图:程序流程图:3.3.编制的程序:编制的程序:编制的程序:编制的程序:开始开始开始开始AXAX AX+DI+CF AX+DI+CFBX BX AX AXSI SI SI+2,DI SI+2,DI DI+2 DI+2BX BX BX+2BX+2,CX CX CX-1 CX-1暂停暂停暂停暂停初始化初始化初始化初始化段地址段地址段地址段地址DS=1000HDS=1000H第一个数指针第一个数指针第一个数指针第一个数指针SI=50HSI=50H第二个数指针第二个数指针第二个数指针第二个数指针DI=58HDI=58H结果指针结果指针结果指针结果指针BX=60HBX=60H循环次数循环次数循环次

24、数循环次数CX=4CX=4清除进位位清除进位位清除进位位清除进位位CFCFAXAX 取一个字取一个字取一个字取一个字CX=0?CX=0?Y YN N现在学习的是第15页,共22页STARTSTART:MOV AX,1000HMOV AX,1000H MOV DS,AX MOV DS,AX ;DSDS1000H1000H MOV SI,50H MOV SI,50H ;第一个数指针;第一个数指针;第一个数指针;第一个数指针 MOV DI,58H MOV DI,58H ;第二个数指针;第二个数指针;第二个数指针;第二个数指针 MOV BX,60H MOV BX,60H ;结果指针;结果指针;结果指针

25、;结果指针 MOV CXMOV CX,4 4 ;循环次数;循环次数;循环次数;循环次数CXCX4 4 CLC CLC ;清;清;清;清CFCFAAAA:MOV AX,SI MOV AX,SI ;取一个字到;取一个字到;取一个字到;取一个字到AXAX ADC AX,DI ADC AX,DI ;AX AX 11,并且放在内存(,并且放在内存(,并且放在内存(,并且放在内存(2001H2001H)单元中,而数据块本身是从)单元中,而数据块本身是从)单元中,而数据块本身是从)单元中,而数据块本身是从(2002H2002H)单元开始存放的,最后,把找出的最大数放到)单元开始存放的,最后,把找出的最大数放

26、到)单元开始存放的,最后,把找出的最大数放到)单元开始存放的,最后,把找出的最大数放到(2000H2000H)单元中。假设这段数据块中的数都是无符号的)单元中。假设这段数据块中的数都是无符号的)单元中。假设这段数据块中的数都是无符号的)单元中。假设这段数据块中的数都是无符号的8 8位位位位数。数。数。数。1.1.分析题目:此程序为循环程序,并且在处理部分应该包括分析题目:此程序为循环程序,并且在处理部分应该包括分析题目:此程序为循环程序,并且在处理部分应该包括分析题目:此程序为循环程序,并且在处理部分应该包括判断分支的环节。判断分支的环节。判断分支的环节。判断分支的环节。2.2.寻找最大值的方

27、法:寻找最大值的方法:寻找最大值的方法:寻找最大值的方法:预先把预先把预先把预先把00H00H放在放在放在放在ALAL累加器中,依次与数据块中的数据累加器中,依次与数据块中的数据累加器中,依次与数据块中的数据累加器中,依次与数据块中的数据进行比较,若比进行比较,若比进行比较,若比进行比较,若比ALAL中的大,则取而代之。中的大,则取而代之。中的大,则取而代之。中的大,则取而代之。3.3.程序流程图:图程序流程图:图程序流程图:图程序流程图:图6-156-15。现在学习的是第20页,共22页4.4.编制的程序如下(未作为子程序时):编制的程序如下(未作为子程序时):编制的程序如下(未作为子程序时

28、):编制的程序如下(未作为子程序时):MOV SIMOV SI,2001H2001H;指向存放数据块长度的单元指向存放数据块长度的单元指向存放数据块长度的单元指向存放数据块长度的单元MOV CHMOV CH,00H00H;初始化初始化初始化初始化MOV CLMOV CL,SISI;取出来作为循环次数取出来作为循环次数取出来作为循环次数取出来作为循环次数INC SIINC SI;指针指向第一个数指针指向第一个数指针指向第一个数指针指向第一个数MOV ALMOV AL,00H00H;设置最大值设置最大值设置最大值设置最大值0000LPLP:CLCCLC;清清清清CFCFCMP AL,SICMP A

29、L,SI;取出数与最大值比较取出数与最大值比较取出数与最大值比较取出数与最大值比较JC BBJC BB;AL;AL中的数较小,转到取代处中的数较小,转到取代处中的数较小,转到取代处中的数较小,转到取代处JMP AAJMP AA;AL;AL中的数较大,不取代中的数较大,不取代中的数较大,不取代中的数较大,不取代BBBB:MOV AL,SIMOV AL,SI;把大数放到把大数放到把大数放到把大数放到ALAL中保存中保存中保存中保存AAAA:INC SIINC SI;调整指针指向下一个数调整指针指向下一个数调整指针指向下一个数调整指针指向下一个数LOOP LPLOOP LP;CX;CX 减减减减1,

30、1,若不为若不为若不为若不为0 0,转,转,转,转LPLPMOV 2000H,ALMOV 2000H,AL;把最大值放到指定单元保存把最大值放到指定单元保存把最大值放到指定单元保存把最大值放到指定单元保存HLTHLT;暂停暂停暂停暂停为何要分两步进行循环为何要分两步进行循环为何要分两步进行循环为何要分两步进行循环次数初始化?次数初始化?次数初始化?次数初始化?现在学习的是第21页,共22页5.5.把程序改为子程序形式:把程序改为子程序形式:MAX:MAX:PUSHFPUSHFPUSH AXPUSH AXPUSH CXPUSH CXPUSH SIPUSH SI上面程序段上面程序段上面程序段上面程序段POP SIPOP SIPOP CXPOP CXPOP AXPOP AXPOPFPOPFRETRET现场保护现场保护现场保护现场保护恢复现场恢复现场恢复现场恢复现场最后一条一定是最后一条一定是最后一条一定是最后一条一定是RETRET指令指令指令指令现在学习的是第22页,共22页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁