| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1375 人关注过本帖
标题:offset + offset的问题
只看楼主 加入收藏
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
 问题点数:0 回复次数:6 
offset + offset的问题

data segment
d1 db 2d
d2 db 2d
data ends

code segment
assume cs:code,ds:data
_main:
mov ax,offset d2 + offset d2
mov ah,4ch
int 21h
code ends
end _main

想不明白,这样一个好好的程序怎么就通不过编译呢

搜索更多相关主题的帖子: offset segment ends main data 
2006-04-05 22:49
johnsonyang
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-4-6
收藏
得分:0 
运算符问题

2006-04-07 12:49
lj_860603
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:714
专家分:0
注 册:2006-1-25
收藏
得分:0 
两个地址相加后的值再赋给AX?这样好象不行的,这样相加后的地址的值应该是未定义的,另外,这段代码好象什么也没有干.(个人看法)

我的原则很简单:不做不喜欢的事!
2006-04-17 19:05
p1s
Rank: 4
等 级:贵宾
威 望:10
帖 子:454
专家分:3
注 册:2005-11-4
收藏
得分:0 
mov ax,offset d2 + offset d2
该作mov ax,d1+d2是将两个的地址相加,然后到那个地址里面去找数据,放入ax
如果楼主想把(d1)+(d2)->ax,那么
mov ax,d1
add ax,d2
就可以了
2006-04-17 19:09
fengyqf
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-5-2
收藏
得分:0 
offset 相加?你的目的是什么呢,问一句,这样是什么意思?

2006-05-02 14:34
公子吕
Rank: 1
等 级:新手上路
帖 子:79
专家分:0
注 册:2006-5-4
收藏
得分:0 
你的程序有很明显的错误
ASSUME CS:CODE,DS:DATA ;这个后面要有红色的代码.
MOV AX,DATA ;DATA是数据段起始地址
MOV DS,AX ;数据段地址通过AX送到数据段寄存器DS中.

这个给段地址赋值的操作一定要有的.

有人问:
ASSUME CS:CODE,DS:DATA的作用不是把DATA的段地址赋给DS吗?
为什么这里还要再赋一次呢?

答案是这样的:

ASSUME只是告诉汇编程序建立段与段寄存器之间的联系,规定对某个段寻址时用哪个段寄存器提供段地址
但是并不设置段寄存器的初值. 假如你这样:
ASSUME DS:CODE,CS:DATA
那么程序访问DATA里的数据,它就会用CS寻址,而不是DS了.

而且我也觉得你的mov ax,offset d2 + offset d2 操作是无意义的.

2006-05-06 18:02
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
恩,我也认为是没有意义,就好像C语言的指针一样

淘宝杜琨
2006-05-21 20:11
快速回复:offset + offset的问题
数据加载中...
 
   



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

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