欢迎来到天天文库
浏览记录
ID:19532263
大小:84.00 KB
页数:10页
时间:2018-10-03
《[工学]45 程序设计方法和上机调试》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、微机原理及应用第四章8086汇编语言程序设计zhou§4.5汇编语言程序设计方法汇编语言设计基本要求:①结构化、简明、易读、易调试、易维护(修改、扩充等)②执行速度快:③占用的存储空间少相矛盾,根据实际权衡汇编语言程序设计的基本步骤:①分析问题,建数学模型,确定算法②绘制流程图或写出步骤安排③分配空间及寄存器,根据框图写程序④静态检查⑤上机调试程序结构类型:l顺序结构l分支结构不同的情况有不同的做法l循环结构重复做的工作l子程序多次重复使用的、具有通用性便于共享的部分。子程序前面应加必要的说明;子程序名称;功能;入口参数;出口参数
2、;所用寄存器例1:查平方表程序----顺序结构0~15的平方值存在TABLE开始的16个单元。任给一自然数M在XX单元中。查表求M的平方值,并将结果存入YY单元中。STACKSEGMENTPARASTACK‘STACK’DB50DUP(?)STACKENDS;组合类型,本段可以被别的段引用类别DATASEGMENTPARAPUBLIC‘DATA’TABLEDB0,1,4,9,16,25,36,49,64,81DB100,121,144,169,196,125XXDB6YYDB?DATAENDS;CODESEGMENTASSUMEC
3、S:CODE,DS:DATA,SS:STACK段寄存器指向说明CS指向CODE段……STARTPROCFAR21微机原理及应用第四章8086汇编语言程序设计zhouPUSHDSMOVAX,0将DOS段值和偏移量(零)入栈。PUSHAXMOVAX,DATAMOVDS,AX;当前数据段MOVBX,OFFSETTABLE;取表的偏移量MOVAH,0可用MOVAL,XXMOVAL,XXXLAT代替ADDBX,AX;取要查数的偏移量MOVAL,[BX];查表MOVAL,XX[BX]MOVYY,ALRETSTARTENDPCODEENDSEN
4、DSTARTP67页*:XLAT换码指令完成一字节的查表转换AL←(BX+AL)表的首址放入BX,相对首址偏移值入AL。TABLE[XX]XXYY014……24……E1624******例2:数据块传送----分支结构将内存中首址为STG1、长度为STRSE的数据块传送到首址为STG2的区域中去。无重迭STG1+STRSE-1<STG2或STG2+STRSE-1<STG1有重迭时STG1+STRSE-1≥STG2STG2+STRSE-1≥STG1分析可知第一种情况用减量传送STG1+STRSE-1≥STG2,其它都用增量传送。DA
5、TASEGMENTSTRGDB100DUP(?)STG1EQUSTRG+7STG2EQUSTRG+25STRSEEQU50;传送50字节数据DATAENDS21微机原理及应用第四章8086汇编语言程序设计zhou;STACKSEGMENTPARASTACK‘STACK’DB100DUP(?);定义100个字节堆栈STACKENDS;CODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACKGOOPROCFAR主模块用STARTPUSHDSMOVAX,0DOS入栈PUSHAXMOVAX,DAT
6、A指向当前数据段MOVDS,AXMOVES,AXMOVCX,STRSE;计数器值MOVSI,OFFSETSTG1;数据源指针MOVDI,OFFSETSTG2;目的数据指针CLD;增量传送MOVBX,SIPUSHSI;保护源操作数指针ADDBX,STRSE-1ADDSI,STRSE-1;源最后一个数指针CMPBX,DICMPSI,DI;比较STG1+STRSE-1≥STG2.减POPSI;恢复SI<STG2.增(?)JBOK;低于则转移STD;减量传送ADDSI,STRSE-1;源尾部ADDDI,STRSE-1;目的尾部OK:REP
7、MOVSB;重复传送RETGOOENDPCODEENDSENDGOO例3分支结构存储器中由一串字符串首址为BUF,字符串长度N小于256,要求分别计算出其中数字、字母和其它字符的个数,存放在字符串的下面三个单元中。解:本题根据字符的ASCII码值范围进行判断,字母41H~5AH,数字30H~39HDATASEGMENTBUFDBNDB01H,38H,47H,60H,…,76HNUMDB3DUP(?)DATAENDS;21微机原理及应用第四章8086汇编语言程序设计zhouSTACKSEGMENTPARASTACK‘STACK’DB
8、100DUP(?);定义100个字节堆栈STACKENDS;CODESEGMENTMAINPROCFARASSUMECS:CODE,DS:DATA,SS:STACKSTART:PUSHDSMOVAX,0DOS入栈PUSHAXMOVAX,DATA指向
此文档下载收益归作者所有