循环程序设计实验样本
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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 input a number(1 627): ;浮现此信息后通过键盘输入一种不大于628无符号整数
1+2+…..n=sum;其中n为顾客输入数,sum为所求累加和
程序运营状况如
下图所示(阐明:图中
所运营程序容许累加
和不不不大于一种32
位二进制数所能表达
范畴)。
1、编程指引
(1)键盘输入十进制数如368在计算机中是以33H,36H,38H形式存储,如何将它们转换为一种二进制数B,以便对累加循环循环次数进行控制是本程序一方面要解决问题。将键盘输入十进制数转换为二进制数程序清单如下:
DA TA SEGMENT
INF1 DB "Please input a number (0-65535):$"
IBUF DB 7,0,6 DUP(?)
DA TA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DA TA
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 ;((0⨯10+a4) ⨯10+…) ⨯10+a0 MUL DX
AND BYTE PTR [SI],0FH
ADD AL,[SI]
A DC AH,0
I NC SI
LOOP AGAIN
MOV AH, 4CH
INT 21H
CODE ENDS
END START
本程序功能:从键盘接受一种无符号十进制整数(不大于65535),将其转换为二进制数,转换成果存在AX寄存器中。
(2)累加成果为一种16位二进制数,为了显示成果,必须把它们转换为十进制数。将二进制数转换为十进制数程序清单如下:
DA TA SEGMENT
OBUF DB 6 DUP(?)
DA TA ENDS
C ODE SEGMENT
ASSUME CS:CODE,DS:DATA
S TART: MOV AX,DA TA
MOV DS,AX
MOV BX,OFFSET OBUF+5
MOV BYTE PTR [BX],'$'
MOV CX,10 ;做(DX):(AX)/10运算
L OOP1: MOV DX,0 ;被除数高16位清0
DIV CX
ADD DL,30H ;将DL中一位十进制数转换为ASCII码
DEC BX
MOV [BX],DL
OR AX,AX
JNZ LOOP1
;判断商与否为0,不为0继续
MOV DX,BX
MOV AH,09H
INT 21H
;显示转换得到十进制数
MOV AH,4CH
INT 21H
C ODE ENDS
END START
本程序功能:将存储在AX寄存器中二进制数转换为十进制数并显示。
2、流程图及程序
(1)流程图
(2)实验代码:
DA TA SEGMENT
INF1 DB "Please input a number (0-65535):$"
IBUF DB 7,0,6 DUP(?)
OBUF DB 6 DUP (?)
DA TA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
S TART:MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET INF1
MOV AH,09H
INT 21H
MOV DX,OFFSET IBUF
MOV AH,0AH
INT 21H
MOV CL,IBUF+1
MOV CH,0
MOV SI,OFFSET IBUF+2
MOV AX,0
AGAIN:MOV DX,10
MUL DX
AND BYTE PTR[SI],0FH
ADD AL,[SI]
ADC AH,0
INC SI
LOOP AGAIN