80x86 組合語言程式設計 尋找水仙花數

2021-07-09 15:01:56 字數 2251 閱讀 4253

乙個三位的十進位制數字 n,如果它的百位數、十位數和個位數的立方和,恰好等於這個數字本身,那麼,這個數字 n 就是水仙花數。

現在已經知道,三位的水仙花數共有4個:153,370,371,407;

四位的水仙花數共有3個:1634,8208,9474;

五位的水仙花數共有3個:54748,92727,93084;

六位的水仙花數只有1個:548834;

七位的水仙花數共有4個:1741725,4210818,9800817,9926315;

八位的水仙花數共有3個:24678050,24678051,88593477

……十進位制自然數中的所有水仙花數共有88個,最大的水仙花數有39位數。

這麼些水仙花數,都是怎麼找出來的呢 ? 當然需要編寫程式。

做而論道用組合語言編寫的程式如下。

datas segment

in1 db 13,10,'the number is : $'

a1  db  0 ;百位數

a2  db  0 ;十位數

a3  db  0 ;個位數

b1  dw  0 ;百位立方

b2  dw  0 ;十位立方

b3  dw  0 ;個位立方

datas ends

codes segment

assume cs:codes,ds:datas

start:

mov   ax, datas

mov   ds, ax

mov   cx, 999

l1:mov   ax, cx

mov   bl, 100

div   bl          ;al=百位數, ah=餘數

mov   a1, al      ;百位

mov   al, ah

mov   ah, 0

mov   bl, 10

div   bl

mov   a2, al      ;十位

mov   a3, ah      ;個位

call  lifang      ;求各個立方

mov   ax, b1

add   ax, b2

add   ax, b3

cmp   ax, cx

jne   next

call  print       ;相等則顯示

next:

loop  l1          ;迴圈到0為止

mov   ah, 4ch

int   21h

;------------------------------

lifang:

mov   al, a1

mov   ah, 0

mov   bx, ax

mul   bx

mul   bx

mov   b1, ax

mov   al, a2

mov   ah, 0

mov   bx, ax

mul   bx

mul   bx

mov   b2, ax

mov   al, a3

mov   ah, 0

mov   bx, ax

mul   bx

mul   bx

mov   b3, ax

ret;------------------------------

print:

lea   dx, in1

mov   ah, 9

int   21h

mov   ah, 2

mov   dl, a1      ;百

add   dl, 30h

int   21h

mov   dl, a2      ;十

add   dl, 30h

int   21h

mov   dl, a3      ;個

add   dl, 30h

int   21h

ret;------------------------------

codes ends

end start

執行後顯示:

c:\masm510>xx

the number is : 407

the number is : 371

the number is : 370

the number is : 153

the number is : 001

c:\masm510>

提問者評價:謝謝!

80x86組合語言 分類統計

組合語言的程式設計題!急 有100個學生成績,存放在以data為首址的位元組儲存單元中。試統計其中90 含90 以上的人數,60 90 含60 之間的人數,60以下的人數,分別存入max,middle,min三個變數中。15 分鐘前 做而論道 十七級 最快回答 assume ds qq,cs cc ...

組合語言 80x86定址方式

1 立即定址方式 立即定址方式中指令的運算元是8位或16位立即數,並直接出現在指令中。例如 mov al,10h 源運算元為立即定址 執行後al 10h mov ax,0a48h 源運算元為立即定址 執行後ax 0a48h 立即定址只能用於源運算元,不能用於目的運算元。2 暫存器定址方式 暫存器定址...

80x86組合語言程式設計P50

386 stack segment use32 db 200 dup 0 stack ends con equ 500 data segment use16 a dw m buf db ab 0dh,0ah b dw 0ffaah d dd buf m db 2 dup 1 2 dup 2,b 12...