资源描述:
《汇编语言程序设计第五章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第五章循环和分支程序设计汇编程序编写步骤汇编程序编写格式循环程序设计分支程序设计子程序设计字符串程序设计编制一个汇编语言程序的步骤(1)分析题意,确定算法(2)根据算法,画出程序框图(3)根据框图编写程序(4)上机调试程序EXE文件的编程要求源程序可使用多逻辑段在实模式下,每个逻辑段大小不超过64KB适合编写大型程序例显示10行HELLO(EXE文件);FILENAME:41.ASM.486DATASEGMENTUSE16MESGDB‘HELLO’,0DH,0AH,’$’DATAENDSSTACK_SEGMENTDB100DUP(?)STACK_ENDSCODESE
2、GMENTASSUMECS:CODE,DS:DATA,SS:STACK_SEGMENTBEG:MOVAX,STACK_SEGMENTMOVSS,AXMOVSP,100MOVAX,DATAMOVDS,AXMOVCX,10LAST:MOVAH,9MOVDX,OFFSETMESGINT21HLOOPLASTMOVAH,4CHINT21HCODEENDSENDBEGCOM文件的编程要求源程序只允许使用一个逻辑段,即代码段,不允许设置堆栈段;数据可以集中设置在段的开始或者末尾;程序的启动指令必须存放在偏移地址为100H的单元;代码段长度小于64KB,适合于编写中
3、小型程序。例显示10行HELLO(COM文件);FILENAME:42.ASM.486CODESEGMENTASSUMECS:CODEORG100HBEG:JMPSTARTMESGDB‘HELLO’,0DH,0AH,’$’START:MOVCX,10LAST:MOVAH,9MOVDX,OFFSETMESGINT21HLOOPLASTMOVAH,4CHINT21HCODEENDSENDBEG汇编源程序的书写结构形式1堆栈段名 SEGMENT STACK用变量定义预置的堆栈空间堆栈段名 ENDS数据段名 SEGMENT用变量定义预置的数据空间数据段名 ENDS代码段名 SEG
4、MENTASSUME 定义的寻址关系START:填充数据段...MOV AH,4CHINT 21H代码段名 ENDSEND START汇编源程序的书写结构形式2堆栈段名 SEGMENT STACK用变量定义预置的堆栈空间堆栈段名 ENDS数据段名 SEGMENT用变量定义预置的数据空间数据段名 ENDS代码段名 SEGMENT过程名 PROCFARASSUME 定义的寻址关系START:PUSH DSSUB AX,AXPUSH AX填充数据段...RET过程名 ENDP代码段名 ENDSEND START顺序程序设计例.写出计算Y=A*B+C-18的程序,题中A,B,C是
5、带符号的8位二进制数。顺序程序设计练习:试编制一程序,求出下列公式中的Z值,并存放在RESULT单元中:Z=((X+Y)*8-X)/2其中X,Y的值分别存放在VARX,VARY单元中。循环程序设计循环程序的结构循环程序的设计方法循环程序的组成循环初始化部分循环体循环参数修改部分循环控制部分循环程序的结构在程序设计中,常见的循环结构有两种:一种是先执行循环体,然后判断循环是否继续进行;另一种是先判断是否符合循环条件,符合则执行循环体,否则退出循环。两种循环结构如下图所示。循环控制的方法计数控制法条件控制法混合控制法循环程序设计单循环程序设计多重循环程序设计【例】假设从BUF
6、单元开始为一个ASCⅡ码字符串,找出其中的最大数送屏幕显示.解一:.486DATASEGMENTUSE16BUFDB‘QWERTYUIOP123’COUNTEQU$-BUFMAXDB‘MAX=“,?,0DH,0AH,’$’DATAENDS单重循环程序设计CODESEGMENTUSE16ASSUMECS:CODE,DS:DATABEG:MOVAX,DATAMOVDS,AXMOVAL,0LEABX,BUFMOVCX,COUNTLAST:CMP[BX],ALJCNEXTMOVAL,[BX]NEXT:INCBXLOOPLASTMOVMAX+4,ALMOVAH,9MOVDX,OFF
7、SETMAXINT21HMOVAH,4CHINT21HCODEENDSENDBEG解二:.486DATASEGMENTUSE16BUFDB‘QWERTYUIOP123’FLAGDB-1MAXDB‘MAX=“,?,0DH,0AH,’$’DATAENDSCODESEGMENTUSE16ASSUMECS:CODE,DS:DATABEG:MOVAX,DATAMOVDS,AXMOVAL,0LEABX,BUFLAST:CMPBYTEPTR[BX],-1JEDISPCMP[BX],ALJCNEXTMOVAL,[BX]NEXT:INCBXJM