| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 635 人关注过本帖
标题:请求大神给点指导
只看楼主 加入收藏
wl1259472421
Rank: 1
来 自:南京
等 级:新手上路
帖 子:16
专家分:3
注 册:2013-3-18
结帖率:80%
收藏
已结贴  问题点数:20 回复次数:2 
请求大神给点指导
这是一个三位数的汇编程序,只需要16的寄存器,如何改写成八位数的汇编的程序。
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-08 19:34
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:20 
试试看:
assume cs:code
data segment
num db 0,0,0,0,0,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,8
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,8
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

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2013-06-09 07:10
wl1259472421
Rank: 1
来 自:南京
等 级:新手上路
帖 子:16
专家分:3
注 册:2013-3-18
收藏
得分:0 
回复 2楼 hu9jj
上面那种该法不行的,四位的可以改。但是超过5位的话要使用32位的寄存器。请你花点时间帮我看看吧

爱好编程,想让电脑按照我的想法执行指令!
2013-06-10 20:15
快速回复:请求大神给点指导
数据加载中...
 
   



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

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