LEA DX, A
MOV AH, B
INT 21H
ENDM
DATASEGMENT USE16
BUF1DB60
DB?
DB60 DUP(?)
BUF2DB60
DB?
DB60 DUP(?)
STR1 DB0DH,0AH,'$'
STR2 DB'success!$'
STR3 DB 'Your telephone number is not match, please try again.$'
STR4DB'Please input your telephone number:$'
STR5DB'Please input your telephone number again:$'
DATAENDS
STACK SEGMENT USE16 STACK
DB 200 DUP(0)
STACK ENDS
CODE SEGMENT USE16
ASSUME DS:DATA, ES:DATA, CS:CODE, SS:STACK
START:
MOV AX, DATA
MOV DS, AX
MOV ES, AX
LOOP1: RW STR4, 9输出Please input your telephone number:
RW BUF1, 10 输入号码
RW STR1, 9回车换行
RW STR4, 9输出Please input your telephone number again:
RW BUF2, 10 输入号码
RW STR1, 9回车换行
MOV CL, BUF1[1]
CMP CL, BUF2[1] 比较输入的号码位数是否一样
JNE NO
MOVSX CX, CL
MOV SI, OFFSET BUF1[2]
MOV DI, OFFSET BUF2[2]
CLD
REPZ CMPSB 比较输入的号码是否相同
JNE NO
RW STR2, 9 输出success!
JMP EXIT
NO: RW STR3, 9 输出Your telephone number is not match, please try again.
RW STR1, 9回车换行
JMP LOOP1
EXIT: MOV AH, 4CH
INT 21H
CODE ENDS
END START
汇编语言程序设计的基本步骤了解了汇编语言指令的功能和用法,了解了汇编语言程序的编写格式,就可以编制完整的汇编语言程序了。一个程序通常具有顺序、分支、循环和子程序4种结构形式。顺序程序结构就是指完全按顺序逐条执行的指令序列。在程序设计过程中,顺序结构大量存在,屡见不鲜。但一个完整的程序只是逐条去执行指令,这非常少见。常见的程序结构,是上述4种结构的混合体。一般来说,编制一个汇编语言程序的步骤如下:(1) 分析题意,确定算法或算法思想。算法是指解决问题的方法和步骤。比如现有的一些计算方法和日常生活中解决问题的逻辑思维推理方法等。(2) 根据算法画出流程图,简单的情况也可不画。画出描述算法的流程图,可以首先从图上检验算法的正确性,减少出错的可能,使得动手编写程序时的思路更加清晰。(3) 分配存储空间和工作单元,合理地使用寄存器。分配存储空间和工作单元,是指存储空间的分段和数据定义。另外,由于寄存器的数量有限,编写程序时经常会感到寄存器不够用。因此,对于字节数据,要尽量使用8位寄存器。而采用适当的寻址方式,也会达到节省寄存器的目的。(4) 根据流程图编写程序。这是编制汇编语言程序最为重要的一步。算法里规定的功能,是要通过一条条指令描述出来的。为了提高编程能力,对于初学者,一是要多阅读现有的程序,以学习别人的编程经验;而更为重要的是,必须多亲自动手编写,不要怕失败,只有通过无数次失败,才能从中积累自己的编程经验。(5) 上机调试运行程序。通过汇编的源程序,只能说明它里面不存在语法错误。但是它是否能达到算法所要求的预期效果,还必须经过上机调试,用一些实验数据来测试,才能够真正地得出结论。可以这么说,即使是一个非常有经验的程序员,也没有百分之百的把握说他编写的程序一次就成功。 用流程图表示算法 流程图用一些图形框来代表各种 *** 作。用图形表示算法,直观形象,可以用来帮助人们对算法的理解。下图给出了一些常用的流程图符号。上图中的判断框(菱形)用来对一个给定的条件作出判断,以决定如何执行其后的 *** 作。它有一个入口,两个出口,如下图(a)所示。
连接点(圆圈)是用来将画在不同地方的流程线连接起来。例如在下图(b)里,有两个圈里写着数字1的圆圈,它表示是从左边的1出来,进到右边图的1里(这由流程线的方向给出)。可以看出,这两个点其实就是同一个点,只是由于画不下而分开来画的。用连接点,可以避免流程图中的流程线相互交叉或过长,从而使流程图清晰。
注释框不是流程图中必需的部分。在流程图中使用它,是为了对流程图中的某些框的 *** 作做一些必要的说明,以便使人们能够更好地通过流程图来理解算法。
处理框反映做些什么样的 *** 作,如把某个单元的内容送入某个寄存器,从某个存储单元取出数据等。它是流程图里最为本质的、出现最多的图形框。
输入/输出框反映程序的输入和输出情况。计算机程序无外乎接收数据,进行处理,然后加以输出,所以输入/输出框是必不可少的。
① inc s10 ;100的个数加1② jmp short change_addr ;short是伪指令,跳转的标号是change_addr
③ change_addr: inc bx ;BX指向下一个数
④ loop compare ;循环
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)