微机原理与接口 第5章3_汇编语言程序设计的基本方法1.ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:55 大小:346KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

微机原理与接口 第5章3_汇编语言程序设计的基本方法1.ppt

微机原理与接口第5章3_汇编语言程序设计的基本方法1.ppt

预览

免费试读已结束,剩余 45 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

5.6汇编语言程序设计的基本方法5.6.1顺序程序设计[例5.8]求两个数的平均值。这两个数分别存放在X单元和Y单元中,而平均值放在Z单元中。源程序编制如下:DATASEGMENTXDB5FHYDB57HZDB?DATAENDSSTACSEGMENTSTACK‘STACK’DW20HDUP(?)TOPLABELWORDSTACENDSCODESEGMENTMAINPROCFARASSUMECS:CODE,DS:DATA,SS:STACSTART:PUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AXMOVAX,STACMOVSS,AXMOVSP,OFFSETTOPMOVAL,XADDAL,YMOVAH,0ADCAH,AHSHRAX,1MOVZ,ALRETMAINENDPCODEENDSENDSTART例5.9在内存中自tab开始的16个单元连续存放着0~15的平方值(平方表),任给一个数x(0≤x≤15),如13,且存放在x单元中,查表求x的平方值,并把结果送入y单元中。根据给出的平方表,分析表的存放规律,可知表的起始地址与数x之和,正是x的平方值所在单元的地址,由此编制程序如下:CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEABX,tabMOVAL,xXLAT;查表;;MOVAH,0;ADDBX,AX;MOVAL,[BX]MOVy,ALMOVAH,4CHINT21HCODEENDSENDSTART5.6.2分支程序设计5.6.2分支程序设计(续)1、单分支结构2、双分支结构[例5.10]现有一符号函数:1当X>0时Y=0当X=0时-1当X<0时假定X为-25,且存放在VARX单元中,函数值Y存放在VARY单元,试编写程序根据X的值确定函数Y的值。根据题意画出流程图如下:实现符号函数程序的流程图DSEGSEGMENTVARXDB-25VARYDB?DSEGENDSCSEGSEGMENTASSUMECS:CSEG,DS:DSEGSTART:MOVAX,DSEGMOVDS,AXMOVAL,VARXCMPAL,0JGENEXTMOVAL,0FFHJMPHALTNEXT:JEZAREMOVAL,1JMPHALTZARE:MOVAL,0HALT:MOVVARY,ALMOVAH,4CHINT21HCODEENDSENDSTART5.6.3循环程序设计用分支结构实现:MOVDL,VARYMOVCL,4ROLDL,CLANDDL,0FHCMPDL,0AHJBNUMADDDL,7NUM:ADDDL,30HMOVAH,2INT21HMOVDL,VARYANDDL,0FHCMPDL,0AHJBNUBADDDL,7NUB:ADDDL,30HMOVAH,2INT21HMOVDL,‘H’MOVAH,2INT21H1.循环程序的组成一个循环程序通常由四部分构成:⑴初始化部分建立循环初始值。如初始化地址指针,计数器,其他循环参数的起始值等。⑵工作部分它是循环程序的这主要部分,是为完成某种特定功能而设计的程序段。⑶修改部分为保证正确的循环而修改某些参数。如修改计数器的值、操作数地址等。⑷控制部分循环控制的关键[例]在xx单元开始的连续单元中存放有10个无符号数,从中找出中最大者送yy单元。根据题意,我们把第一个数先送入AL寄存器中,然后将AL中的数与后面的9个数逐个进行比较。如果AL中的数较小,则两数交换;如果AL中的数大,则不交换。在比较过程中,AL中始终保持较大的数,这样,比较9次后,则最大的数在AL中,最后把AL中的数(最大者)存入yy单元。由此可画出程序的流程图:从一批数中求最大者流程图DATASEGMENTxxDB49,38,65,12,97,13,55,27,28,85yyDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,A