资源描述:
《[计算机软件及应用]汇编语言程序设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、汇编语言程序设计AssemblyLanguageProgramming第四章汇编语言程序设计1.汇编语言程序设计基本步骤好的程序速度快;资源消耗少;结构化的;易维护的。步骤分析问题;确定算法;绘制流程图,模块图;确定数据结构;进行数据段设计;编写程序;调试;程序结构顺序结构循环结构分支结构子程序结构复合结构:多种程序结构的组合……2.顺序程序设计1.从键盘读入一个2位的十进制的正整数,存入BL中。2.将BL中的数以十六进制的形式显示到屏幕。3.P6410.(6)x为8位带符号数,计算10*x+x/4–100,结果送入Result单元。3.分支程序设计分支程序使用条件转移指令来完成分支
2、。一个可以产生两分支。JMP不会产生分支。分支程序基本结构3.1双分支结构JXNextJMPDoneNext:;HandleADone:;SwitchhasdoneN判定条件X处理AYJXNext;HandleBJMPDoneNext:;HandleADone:;SwitchhasdoneN判定条件X处理BY处理AJNXNext;HandleANext:;Switchhasdone例子1取NUMBER字单元中数的绝对值送入AX例子2试根据SIGN中的信息进行计算:若(SIGN)>0,则计算X1+X2Result;若(SIGN)<=0,则计算X1-X2Result。例子3P111-
3、例5-4。1、将Num与Num[1]比较,小的放在Num[1],大的放在AL;2、将AL与Num[2]比较,小的放在Num[2],大的放在Num;3、将Num[1]和Num[2]比较,小的放在Num[2],大的放在Num[1];moval,Numcmpal,Num[1]jaeskip1movdl,almoval,Num[1]movNum[1],alSkip1:;做第二步3.2多分支结构多分支程序处理方法:1.多条件转移指令实现(if…elseif…elseif…)2.地址表(Switch…Case…)3.转移表(Switch…Case…)多分支结构switch(表达式){case:常
4、量1:dosth1;break;……case:常量n:dosthn;break;}离散常量多分支条件转化为表达式分析问题地址表(AddressTable)原理通过某种映射变换,能将待处理的分支条件映射为自然数序列1,2,…,n把各个分支程序段的入口地址依次存放在数据段的一张表中。查表,取出分支地址,进行转移。方法要点:映射表序号入口地址分支程序段地址表实现首先,设计分支条件,使第n个分支映射为数n然后,在存储器的数据段中定义一张入口地址表AddressTableDWs1,s2,s3,……最后,根据条件转入n分支。n号分支地址=[入口地址表首地址+n×2]JMPAddressTa
5、ble[2*n]转移表(JMPTable)原理通过某种映射变换,能将待处理的分支条件映射为自然数序列1,2,…,n把转移到各分支程序段的转移指令依次存放在代码段的一张表(转移表)中。查表,取出目标转移指令的地址,转移到该指令进行执行。方法要点:映射表序号转移指令分支程序段转移表实现首先,设计分支条件,使第n个分支映射为数n然后,我们在代码段中定义一张入口地址表JMPTABLE:JmpnearptrL1JmpnearptrL2……最后,根据条件转入n分支。表项地址=表首地址+表项编号×3JMPoffsetJMPTABLE+3*n强迫远跳转ORG$+80H地址表L1地址L2地址……
6、Ln地址L1:L2:…….Ln:JMPNEARPTRL1……JMPNEARPTRLnL1:…….Ln:条件?转移表例子1AL=?AH=-1AH=1BHAH<0>0AH=0=0例2在内存Score缓冲区中存放有100个学生的成绩数据,为无符号字节数。分别统计各个分数段的人数,分别存储在NOTPASSED、PASSED、GOOD、BETTER、BEST。CMPSCORE[BX],90JBNEXTINCBEST;if>=90,Best!JMPDONENEXT:CMPSCORE[BX],80;Ifgothere,must<90!JBNEXT1INCBETTER;if>=80,BetterJ
7、MPDONE…例3(地址表)根据输入的数字1-7,分别显示相应的英文星期名。DatasegmentADDRTABLEDWL1,L2,L3,L4;S1DB'MONDAY$'S2DB'TUESDAY$'S3DB'WEDNESDAY$'S4DB'THURSDAY$';......Dataends……MOVAH,1INT21HSUBAL,31HSHLAL,1MOVAH,0MOVBX,AXJMPADDRTABLE[BX]L1:LEADX,S1……JMPTABLE:J