汇编语言-求毕达哥拉斯三角形的边
1. 題目:給定一條最長(zhǎng)邊,求所有可能的畢達(dá)哥拉斯三角形。
2. 實(shí)驗(yàn)要求:一個(gè)畢達(dá)哥拉斯三角形的三條邊是由三個(gè)正整數(shù)A、B和C組成,從而A2+B2=C2。例如,數(shù)字3、4、5,由于9+16=25,而形成一個(gè)畢達(dá)哥拉斯三角形。寫(xiě)一段完整的匯編程序,實(shí)現(xiàn)輸入一個(gè)值給C,然后顯示值為C時(shí),所有可能的畢達(dá)哥拉斯三角形。例如,如果輸入5作為C的值,那么輸出可以是:
A????????????? B????????????? C
3??????????????????? 4?????????????????? 5
4??????????????????? 3?????????????????? 5
3. 提示:由于C邊的值已經(jīng)給定,建立一個(gè)雙重循環(huán),外循環(huán)將A初值設(shè)1,每次循環(huán)加1,直到等于C-1;內(nèi)循環(huán)將B值設(shè)為1,每次循環(huán)加1,直到等于C-1。在內(nèi)循環(huán)中如果A2+B2=C2成立,則當(dāng)前的A、B、C是一個(gè)畢達(dá)哥拉斯三角形的邊,并顯示,如果不成立,繼續(xù)循環(huán)。
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則轉(zhuǎ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則轉(zhuǎn)移 58 ;執(zhí)行比較 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 ;不等于則轉(zhuǎn)移 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?
轉(zhuǎn)載于:https://www.cnblogs.com/Forever-Kenlen-Ja/p/3734439.html
總結(jié)
以上是生活随笔為你收集整理的汇编语言-求毕达哥拉斯三角形的边的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: [转]Cookie/Session机制详
- 下一篇: 【转】GPS定位原理