| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 502 人关注过本帖
标题:汇编中段地址
只看楼主 加入收藏
Spygg
Rank: 5Rank: 5
等 级:职业侠客
帖 子:135
专家分:394
注 册:2007-5-20
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
汇编中段地址
;程序功能:将a段和b段中的数据依次相加,结果存到d段中
;会溢出,因为是db,byte类型
;假如 a的地址是0b66,为什么b的地址是0b67,a段是byte类型的啊?
;=============================================
;按照我的想法,b的地址应该是 0b660+08h而不是0b660+10h=0b670

assume cs:code
a segment   
   db 1,2,3,4,5,6,7,8
a ends
b segment   
   db 1,2,3,4,5,6,7,8
b ends
d segment     ;这里为什么不能写成c segment
db 8 dup(0)
d ends
code segment   
start:      
    mov cx,8         
mov ax,a        
mov ds,ax         
mov bx,0      
   mov al,0     
s:         
add     al,ds:[bx]         
add al,ds:[bx+10h]   
mov ds:[bx+20h],al   
      mov al,0        
inc bx   
loop s        
   mov ah,4ch     
int 21h
code ends
end start
搜索更多相关主题的帖子: 地址 汇编 
2010-11-06 23:04
wisji8
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:53
专家分:198
注 册:2010-9-19
收藏
得分:10 
因为C是一个保留字。
2010-11-06 23:54
wisji8
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:53
专家分:198
注 册:2010-9-19
收藏
得分:10 
因为a与b各是一个段。楼主可以Debug下,把b里面对八个字节移到a里面,那么操作就和楼主想的一样。而如果不移,是不是a与b段的后八个字节补0
2010-11-07 01:02
shzlw
Rank: 2
等 级:论坛游民
帖 子:11
专家分:14
注 册:2010-10-2
收藏
得分:0 
这是因为段分配的时候 不够16字节的,按16字节分配,8个字节也要分配16个,假如是17个字节也要分配32个;
公式为(N%16+1)*16    %代表求余

[ 本帖最后由 shzlw 于 2010-11-13 23:08 编辑 ]
2010-11-13 08:42
快速回复:汇编中段地址
数据加载中...
 
   



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

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