2 .4 循环程序设计实验 2 .4 .1 实验目的 1、掌握循环程序的设计方法。 2、掌握比较指令、转移指令和循环指令的使用方法。 3、进一步掌握调试工具的使用方法。 2 .4 .2 实验预习要求 1、复习比较指令、条件转移指令和循环指令。 2、复习循环程序的结构、循环控制方法等知识。 3、读懂“2.4.3 实验内容”中给出的将十进制数转换为二进制数以及将二进制数转换为十进制数的程序。 4、根据“2.4.3 实验内容”中给出的流程图和程序框架编写源程序,以便上机调试。 5、从“2.4.4 实验习题”中任选一道题目,编写源程序,以便上机调试。 2 .4 .3 实验内容 计算 1+2+… … n=?,其中 n 通过键盘输入。要求在屏幕上提供如下信息: Please inpu t a nu mber(1627): ;出现此信息后通过键盘输入一个小于 628 的无符号整数 1+2+… ..n=sum ;其中 n 为用户输入的数,su m 为所求的累加和 程序运行情况如下图所示(说明:图中所运行程序允许累加和不大于一个 32 位二进制数所能表示的范围)。 1、编程指导 (1)键盘输入的十进制数如 368 在计算 机 中 是 以33H,36H,38H形式存放的,如何将它们转换为一个 二 进制数101110000B,以便对累加循环的循环次数进行控制是本程序首先要解决的问题。将键盘输入的十进制数转换为二进制数的程序清单如下: DATA SEGMENT INF1 DB "Please inpu t a nu mber (0-65535):$" IBUF DB 7,0,6 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS:DATA START: MOV AX, DATA MOV DS, AX MOV DX, OFFSET INF1 MOV AH, 09H INT 21H MOV DX, OFFSET IBUF ;键入一个十进制数(<65535) MOV AH, 0AH INT 21H MOV CL, IBUF+1 ;十进制数的位数送 CX MOV CH, 0 MOV SI, OFFSET IBUF+2 ;指向输入的第一个字符(最高位) MOV AX, 0 ;开始将十进制数转换为二进制数 AGAIN: MOV DX, 10 ; ((010+a 4) 10+… ) 10+a 0 MUL DX AND BYTE PTR [SI], 0FH ADD AL, [SI] ADC AH, 0 INC SI LOOP AGAIN MOV AH, 4CH INT 21H CODE ENDS END START 本程序功能:从键盘接收一个无符号十进制整数(小于65535),将其转换为二进制数,转换结果存在AX 寄存器中。 (2)累加结果为一个16 位的二进制数,为了显示结果,必需把它们转换为十进制数。将二进制数转换为十进...