汇编语言输出10-10000的回文数

palindrome(回文)是指正读和反读都一样的数或文本。例如:11、121、12321等。
编写程序,求10到10000之间所有回文数并输出。

算法设计思想:首先我们用 除法指令来分离所要判断的整数的每一位,即就是把要判断的整数与10做除法,取其余数,再将执行除法指令后的整数部分继续与10相除取余,这样循环执行下去,直到取整为0,再将所有余数重新组合得到的整数相当于是原整数的 逆序序列,所以我们只需要将分离后的整数与原整数进行比较,如果相等,则说明待判断的整数是回文数。

算法描述:
if  被除数=10 to 10000  do
{    num=被除数;
     newnum=0;

     while  num !=0  do

     {       num = num/10;         //取整
             rem = num%10;         //取余
              newnum=newnum *10 + rem;    //余数拼成的新整数
      }
    if   newnum==被除数  then  输出newnum;

}

汇编语言程序实现:
      
.data
	num dword ?
	output byte '%d',0ah
.code
main proc
	mov ecx,10
start:
	cmp ecx,10000
	ja finish
	mov eax,ecx      //eax保存待判断整数
	mov ebx,10
	mov esi,0
again:
	cmp eax,0
	jz  next          //eax=0时说明整数分离完毕
	xor edx,edx
	div ebx           //执行div后,整数部分默认保存在eax中,余数保存在edx中
	imul esi,10       //执行双操作数乘法,结果保存在esi中
	add esi,edx       //esi=esi*10+edx
	jmp again
next:
	cmp esi,ecx        //将分离后得到的新整数(即原整数的逆序序列)与原整数比较
	je done
	inc ecx
	jmp start

done:
	mov num,ecx
	pushad 
		invoke printf,offset output,num
	popad
	inc ecx
	jmp start

finish:
	ret

main endp
end main


  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值