请教一道简单的汇编语言题

设某数据段定义如下:DATASEGMENTDA1DB‘COMP’,00H,9AHDA2DB6DUP(?)COUNTEQU$-DA1DATAENDS试回答:(1)DA1+2... 设某数据段定义如下:
DATA SEGMENT
DA1 DB ‘COMP’,00H,9AH
DA2 DB 6 DUP(?)
COUNT EQU $-DA1
DATA ENDS
试回答:
(1) DA1+2字节单元的内容是_____。
(2) COUNT的值是______。

不要只填空,帮忙详细解释一下定义的内存变量的储存方式,比如说汇编程序是怎样处理字符‘COMP’,如何为之分配空间?伪指令语句语句“COUNT EQU $-DA1”是不是也被储存在逻辑数据段内?谢谢!
展开
 我来答
新小无1X
2012-07-08 · TA获得超过1.4万个赞
知道大有可为答主
回答量:1436
采纳率:11%
帮助的人:772万
展开全部
设某数据段定义如下:
DATA SEGMENT ;定义数据段
DA1 DB ‘COMP’,00H,9AH ;按字节定义数据 先从DA1地址开始

;存放一个字符串‘COMP’再存放00H和9AH
DA2 DB 6 DUP(?) ;继续从下一个地址DA2开始 为程序保留6个字节的存储空间
COUNT EQU $-DA1 ;EQU为等价伪指令 定义COUNT 等价于 $-DA1
; $-DA1 中 $代表目前指令指针所指的地址
;比DA1地址多了12个字节的地址空间,即$=DA1+12
; $-DA1 =12

DATA ENDS
试回答:
(1) DA1+2字节单元的内容是( 'M' )。;;按顺序DA1+2字节单元比DA1往下走3个单元
(2) COUNT的值是( 12 )。

伪指令语句语句“COUNT EQU $-DA1”在逻辑数据段内不会分配地址的,其作用在汇编时,用$-DA1(即12)替换指令中的COUNT符号。

'M' 为字符M的ASCII编码。
追问
谢谢!我还有一些问题。这个, $代表目前指令指针所指的地址,那么这个指令指针它是怎么走的?是不是我分配一个内存空间指令指针就加一? 比如说执行这条语句“ DA2   DB   6 DUP(?)”指令指针走6个(加6)?执行这条指令“COUNT  EQU  $-DA1 “后指令指针走1个? 是这么回事吗?
追答
$---在这里指的是COUNT  EQU  $-DA1      这个为指令语句的地址标号  经推算可知为DA1+12
执行完COUNT EQU $-DA1 指令后地址不会增1,因为这条指令并不为数据分配地址。
还有什么问题都可以找我,俺回答的比较详细了,别忘了给俺加点分。

在此叫指令指针的确不妥,应叫做数据指针用来分配地址更好些。
阳光上的桥
2012-07-08 · 知道合伙人软件行家
阳光上的桥
知道合伙人软件行家
采纳数:21423 获赞数:65866
网盘是个好东东,可以对话和传文件

向TA提问 私信TA
展开全部
DA1 DB ‘COMP’,00H,9AH

这个语句让系统为DA1开始分配6个字节的空间,分别是:'C','O','M','P’,00H,9AH,其中DA1+0的内容是'C',DA1+1的内容是'O',DA1+2的内容是'M',……以此类推。

DA2 DB 6 DUP(?)
这个语句让系统从DA2开始分配6个字节,不初始化内容。所以COUNT的值是12,因为6+6=12。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-07-08
展开全部
$代表目前指令指针所指的地址,说法不正确,应该是当前被汇编程序翻译的语句的地址。
指令指针是CS:IP,不要混淆概念

COUNT EQU $-DA1 不会分配地址,当然不会加了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式