文档介绍:大连理工大学
本科实验报告
(汇编语言编程实验)
课程名称: 计算机原理实验
学院(系):
专业:
班级:
学号:
学生姓名:
2012 年 11 月 21 日
《计算机原理实验报告》----- 汇编语言部分
实验( 二)名称:运算程序设计——用减奇数法开平方
一、实验目的:
。
。
二、实验要求:
运用减奇数的方法计算一个整数的平方根
三、编程算法与说明:
8086/8088指令系统中有乘法除法指令,但是没有开平方指令。因此,开平方运算是通过程序来实现的。下面介绍一个算法:用减奇数法开平方。
用减奇数法可以求得近似平方根,以获得平方根的整数部分。我们知道,N个自然数中的奇数之和等于,即:
1+3=4=
1+3+5=9=
1+3+5+7=16=
1+3+5+7+9=25=
若要做的运算,那么就可以从S中逐次减去自然数中的奇数1、3、5、7…,一直进行到被减数为零或不够减下一个自然数为止,然后统计减去自然数的奇数个数,它就是S的近似平方根。
在8086中可以用AX来储存被开方数,CX控制循环的次数,即要得到的平方根,BX为奇数初始为1,用BX与AX相减,之后判断AL是否大于0,若小于等于0则CX中的循环次数即为结果平方根的值,若大于0,则BX加2,再循环相减,直到AL不大于0为止。
四、程序流程图:
AL<=0
AL>0
START
CX<-CX+1
BX=1, CX=0
AL<-DATA
AX-BX
AL>0?
BX<-BX+2
CX为平方根
END
BX:储存奇数单元
CX:储存平方根
AL:储存待开平方数
五、程序清单:
DATA SEGMENT PARA
MSG DB 'PLEASE INPUT THE NUMBER',0DH,0AH,'$'
ENTER DB ' ',0DH,0AH,'$'
STRING DB 'THE RESULT IS:',0DH,0AH,'$'
DATA ENDS
SS_SEG SEGMENT STACK
DB 100 DUP (0)
SS_SEG ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
LEA DX,MSG
MO