| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 772 人关注过本帖
标题:初学汇编,请问这个程序,32位数(比如说1千万)怎么办
只看楼主 加入收藏
wl1259472421
Rank: 1
来 自:南京
等 级:新手上路
帖 子:16
专家分:3
注 册:2013-3-18
结帖率:80%
收藏
已结贴  问题点数:20 回复次数:2 
初学汇编,请问这个程序,32位数(比如说1千万)怎么办
这是三位数的水仙花数,如果改成8位,就是要用到32位寄存器了,怎么修改程序
assume cs:code
data segment
num db 0,0,0
data ends

code segment

;将百位数ax的值百位存到num[0],十位num[1],个位num[2]
init:
push ax
push bx
push cx
push dx
push bp

mov bp,10
lea bx,num
add bx,2  

mov cx,3
init1:
xor dx,dx
div bp
mov ds:[bx],dl
dec bx
loop init1   

pop bp
pop dx
pop cx
pop bx
pop ax
ret

;将num[]的三个数输出
print:

push ax
push cx
push dx

lea bx,num
mov cx,3
print1:
mov dl,ds:[bx]
add dl,30h
mov ah,2
int 21h
inc bx
loop print1

mov ah,2
mov dx,10
int 21h

pop dx
pop cx
pop ax

ret

;将num[3]的每个数的3次方相加保存到ax
calc:

push bx
push cx
push dx  
push si
push bp

xor si,si
mov cx,3  
lea bx,num
calc1:
mov al,ds:[bx]  
mov ah,0
mov bp,ax
mul bp
mul bp
add si,ax   
inc bx
loop calc1
mov ax,si   
  
pop bp
pop si
pop dx
pop cx
pop bx

ret

start:
mov ax,data
mov ds,ax

mov cx,99
s:  
inc cx
cmp cx,999
ja exit

mov ax,cx
call init
 
call calc
cmp ax,cx   
jne s   

call print
jmp s

exit:
mov ah,4ch
int 21h
code ends
end start
2013-06-04 18:41
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:14 
eax ebx ecx edx ebp esp edi esi

DO IT YOURSELF !
2013-06-05 10:50
wl1259472421
Rank: 1
来 自:南京
等 级:新手上路
帖 子:16
专家分:3
注 册:2013-3-18
收藏
得分:0 
回复 2楼 wp231957
还是没明白,能否说的清楚些。那不是等同于用字变量在做了吗?

爱好编程,想让电脑按照我的想法执行指令!
2013-06-06 14:35
快速回复:初学汇编,请问这个程序,32位数(比如说1千万)怎么办
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028087 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved