资源描述:
《接口技术第4章(4.5)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、4.5汇编语言程序设计基础4.5.1.概述编写汇编语言的步骤(1)根据实际问题抽象出数学模型(2)确定解决此数学模型的算法(3)画出程序框图(流程图)(4)分配内存工作单元和寄存器(5)根据框图编制程序(6)上机调试,进行修改(汇编、链接)顺序程序结构1.顺序结构分支程序结构示意图2.分支结构3.循环结构示意图例1:DATASEGMENTTABLEDB0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225;定义平方表XXDB?YYDB?DATAENDSSTAC
2、KSEGMENTPARASTACK‘STACK‘DB100DUP(?);定义100个字节空间STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA例1:内存中自TABLE开始的16个单元连续存放着0到15的平方值(称为平方表)。任给一数X(0≤X≤15)在XX单元,查表求X的平方值,并把结果存入YY单元。STARTPROCFARPUSHDS:标准序MOVAX,0PUSHAXMOVAX,DATAMOVDS,AX;置数据段寄存器MOVBX,OFFSETTABLEMOVAH,0MO
3、VAL,XX;取待查数ADDBX,AX;查表MOVAL,[BX]MOVYY,AL;平方数存YY单元RETSTARTENDPCODEENDSENDSTART例2;DOSSEG.MODELSMALL.STACK256;定义堆栈段,长度为256字节.DATA;定义数据段BUFDW’58’;待输出的字符’58‘XXDB?;二进制数存放单元.CODE;定义代码段START:MOVAX,DGROUP;设置DS指向DGROUP组的段地址MOVDS,AXMOVCL,10MOVBX,BUF;BX=3538ANDBH,0F
4、H;BH=05HMOVAL,BH;十位数5ALMULCL;AX=50=0000000000110010BANDBL,0FH;BL=08H,个位数ADDAL,BL;AL=00111010BMOVXX,AL;[XX]=00111010BMOVAH,4CHINT21HENDSTART符号函数实现流程图Y=Y=1当X>00当X=0-1当X<0例1;DATASEGMENTXXDBX;存放XYYDB?;存放YDATAENDSSTACKSEGMENTPARASTACK‘STACK’DB100DUP(0)STACKEN
5、DSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX;设置DSMOVAL,XXCMPAL,0JGEBIGER;X≥0带符号数比较指令MOVAL,-1;X<0,-1送入YY单元JMPEQULBIGER:JEEQUL;ZF=1转移MOVAL,1;X>0,1送入YY单元EQUL:MOVYY,AL;X=0,0送入YY单元MOVAH,4CHINT21HCODEENDSENDSTART例2:数据块的传送.DATASEGMENTSTRGDB1000DUP
6、(?);数据区起始STG1EQUSTRG+7;定义源串存放区STG2EQUSTRG+27;定义目标串存放区STRSEEQU50;串长DATAENDSSTACKSEGMENTPARASTACK‘STACK’DB100DUP(?)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATA例2:数据快的传送.MAINMOVAX,DATAMOVDS,AX;DS指向数据段MOVES,AX;ES指向数据段MOVCX,STRSE;串长CXMOVSI,OFFSETSTG1;源串首
7、地址SIMOVDI,OFFSETSTG2;目标串首地址DICLD;DF=0,增量方式传递PUSHSIADDSI,STRSE-1;SI=源串末地址CMPSI,DI;DI=目标串首地址POPSIJLOK;小于转OK处,源串地址与目标串地址不重叠STD;DF=1,否则,按减量方式传送ADDSI,STRSE-1;指向数据块底部ADDDI,STRSE-1OK:REPMOVSB;重复传送50个数据MOVAX,4C00HINT21HCODE:ENDSENDMAIN地址跳转表利用跳转表实现分支(1)根据表内地址分支DA
8、TASEGMENTBASEDWSBR0,SBR1,SBR2,SBR3,SBR4,SBR5,SBR6,SBR7;定义跳转表BNDB?;BN中存放某一产品编号DATAENDSSTACKSEGMENTPARASTACK‘STACK’DB100DUP(0)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATASTARTPROCFARPUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AXMOVBL,BN