1. 题目:给定一条最长边,求所有可能的毕达哥拉斯三角形。

2. 实验要求:一个毕达哥拉斯三角形的三条边是由三个正整数A、B和C组成,从而A2+B2=C2。例如,数字3、4、5,由于9+16=25,而形成一个毕达哥拉斯三角形。写一段完整的汇编程序,实现输入一个值给C,然后显示值为C时,所有可能的毕达哥拉斯三角形。例如,如果输入5作为C的值,那么输出可以是:

A              B              C

3                    4                   5

4                    3                   5

3. 提示:由于C边的值已经给定,建立一个双重循环,外循环将A初值设1,每次循环加1,直到等于C-1;内循环将B值设为1,每次循环加1,直到等于C-1。在内循环中如果A2+B2=C2成立,则当前的A、B、C是一个毕达哥拉斯三角形的边,并显示,如果不成立,继续循环。

 1 ; Example assembly language program
 2 ; Author:  karllen
 3 ; Date:    revised 5/2014
 4
 5 .386
 6 .MODEL FLAT
 7
 8 ExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORD
 9
10 INCLUDE io.h            ; header file for input/output
11
12 cr      EQU     0dh     ; carriage return character
13 Lf      EQU     0ah     ; line feed
14
15 .STACK  4096            ; reserve 4096-byte stack
16
17 .DATA
18      promot BYTE "Please Enter a number as the max slide ",0
19      value  BYTE 40 DUP(?)
20      nc     DWORD ?
21      na     DWORD ?
22      nb     DWORD ?
23      n      DWORD ?
24
25      answer  BYTE "         A         B         C ",0
26      crLf    BYTE cr,Lf,0
27
28
29 .CODE                           ; start of main program code
30 _start:
31         mov    ebx,0
32         mov    ecx,0
33
34         output promot
35         input  value,40
36         atod   value
37
38         mov nc,eax
39         mov n, eax
40
41         mul nc
42         mov nc,eax ;C*C
43         output answer
44         output crLf
45         doFirstWhile:
46              inc ebx
47              mov ecx,0
48              cmp ebx,n
49              jge endFirstWhile  ;大于等于n则转移
50
51              mov eax,ebx
52              mul ebx
53              mov na,eax       ;A*A
54              doSecondWhile:
55                 inc ecx
56                 cmp ecx,n
57                 jge endSecondWhile ;大于等于n则转移
58                 ;执行比较
59
60                 mov eax,ecx
61                 mul ecx         ;B*B
62                 mov nb,eax
63                 mov edx,nb
64
65                 add edx,na        ;A*A+B*B
66
67                 cmp edx,nc
68                 jne  stanIf        ;不等于则转移
69
70                 ;output answer
71                 dtoa value,ebx
72                 output value
73
74                 dtoa value,ecx
75                 output value
76
77                 dtoa value,n
78                 output value
79                 output crLf
80
81                 jmp doSecondWhile
82              stanIf:
83                 jmp doSecondWhile
84              endSecondWhile:
85                 jmp doFirstWhile
86
87         endFirstWhile:
88
89        INVOKE  ExitProcess, 0  ; exit with return code 0
90
91 PUBLIC _start                   ; make entry point public
92
93 END                             ; end of source code

转载于:https://www.cnblogs.com/Forever-Kenlen-Ja/p/3734439.html

汇编语言-求毕达哥拉斯三角形的边相关推荐

  1. 毕达哥拉斯三角形数,unsignedlong long long

    1.毕达哥拉斯三角形数,运用了unsigned long long的数据类型,用来储存较大的数,"%llu" 注意k为奇数,还是偶数,这决定了它是否可以/2: k(k+1)/2: ...

  2. 海伦公式用计算机语言怎么写,python中海伦公式求取三角形面积的示例

    python中海伦公式求取三角形面积的示例 发布时间:2020-12-07 10:01:44 来源:亿速云 阅读:143 作者:小新 这篇文章将为大家详细讲解有关python中海伦公式求取三角形面积的 ...

  3. python海伦公式求三角形面积_python编程实战:海伦公式求取三角形的面积

    之前小编向大家介绍了在python中求取三角形面积的方法:三角形面积代码.大家对三角形面积的求取有了一定的了解,我们也知道计算机可以进行高精度的计算,那如果说在测量土地的面积的时候,不测三角形的高,只 ...

  4. C语言:输入三角形的边长,求出三角形的周长,面积和,若不能构成,则提示出来,

    //3.输入三角形的边长,求出三角形的周长,面积和,若不能构成,则提示出来, #include <stdio.h> #include <math.h> int main(int ...

  5. C语言 算法判断是否构成三角形,如能则求出三角形的周长和面积并输出;如不能,输出不能构成三角形的信息

    从键盘输入三角形的三条边长,判断是否构成三角形,如能则求出三角形的周长和面积并输出:如不能,输出不能构成三角形的信息.构成三角形的条件为:三角形任意两边的和大于第三边时,构成三角形. 算法分析: #i ...

  6. 再次修订后的版本。。。。。。1.0(发布版,射线求交三角形)

    // Det.cpp : Defines the entry point for the console application. // #include "stdafx.h" # ...

  7. C语言求毕达哥拉斯亲密数

    亲密数 2500年前数学大师毕达哥拉斯就发现,220与284两数之间存在着奇妙的联系: 220的真因数之和为:1+2+4+5+10+11+20+22+44+55+110=284 284的真因数之和为: ...

  8. 毕达哥拉斯 三角形数和正方形数

    如题: 古希腊著名的毕达哥拉斯学派把1.3.6.10-这样的数称为"三角形数",而把1.4.9.16的称为"正方形数",从图中可以发现,任何一个大于1的&quo ...

  9. 汇编语言 求三个数中最大值,结果存入MAX单元

    已知X.Y.Z.MAX为16位的带符号数,求三个数中最大值,结果存入MAX单元. 思路:定义数据段,代码段,让堆栈段自动装入:X,Y,Z,MAX 16位带符号数没有给出,那就自己写几个吧,那问题来了, ...

最新文章

  1. c#退出窗口跳转_关于winform如何如在关闭一个窗口时打开另外一个窗口
  2. 权限管理----角色管理
  3. asp.net页面出错时的处理方法
  4. 立个flag,一个月之内把知识点整理完,放到博客
  5. java泛型学习一:解惑继承
  6. YAML基础知识及搭建一台简洁版guestbook
  7. IntelliJ IDEA for Mac的窗口操作
  8. char*,const char*和string的相互转换
  9. TransCAD完整视频教程简介
  10. 消息队列 RocketMQ原理和使用整理
  11. matlab实现神经网络
  12. sprintf左右对齐
  13. 年货:Python技术知识清单(数据分析)
  14. 科学革命——承认自己无知的革命
  15. 杭电多校第六场个人补题6 7 9 10 12
  16. Strings、bytes and runes -- 就要学习 Go 语言
  17. Neo4j-简单使用
  18. Redis批量启停脚本
  19. 敷完面膜后要擦水乳吗_敷完面膜还要擦水乳吗?
  20. 七个必学的“RPA功能组件”技巧,把时间用在刀刃上

热门文章

  1. Shell Sort 希尔排序 收藏
  2. 在线实时大数据平台Storm并行和通信机制理解
  3. UBOOT添加命令的执行流程
  4. 优化SQL步骤——查看SQL执行频率 || 定位低效率执行SQL
  5. 数据表格+弹出层的综合案例
  6. 品牌管理案例——添加新品牌 删除品牌 根据条件筛选品牌
  7. JAVA的知识点3——浮点数的相关处理
  8. 在字符串中查找指定的字符串--strstr
  9. CTFshow 文件上传 web159
  10. 单片机GPIO软件模拟I2C通讯程序