;编写程序,求10到10000之间所有回文数并输出。要求每行输出10个数
;提示:采用div指令把一个整数N的每一位分离出来,注意,
;此时得到的是N的各个位的逆序序列。将这个逆序序列再组合
;成一个新的整数M,若M=N,则N是回文数
include vcIO.inc
.data
frmStr byte "%d ",0
frmStr2 byte 0ah,0
.code
main proc
;ecx 10-10000
;
;
mov ecx,10
xor ebx,ebx ;统计回文数个数,够十个清零
jmp whileLab
entry:
;
;
mov eax,ecx
xor edi,edi ;edi used to count reversed number,init 0
entry2:
xor edx,edx
mov esi,10;esi临时放下被除数
div esi ;edx余数 eax 商
;edi = edi*10 + edx
; 错;mov edi,edi*10
IMUL edi,10
add edi,edx
;eax = eax
cmp eax,0
ja entry2
;
cmp edi,ecx ;判断倒序之后和正序是否一致
jne next
;
inc ebx ;是回文数,回文数个数+1
pushad
invoke printf ,offset frmStr,ecx
popad
cmp ebx,10 ;如果够十个回文数,清零ebx
jne next2
pushad
invoke printf ,offset frmStr2
popad
xor ebx,ebx
next2:
;
next:
;
inc ecx
whileLab:
cmp ecx,10000
jbe entry
ret
main endp
end main
【汇编语言】输出10-10000的所有回文数
最新推荐文章于 2022-11-26 14:34:49 发布