汇编语言问题

34题怎么做?求讲解... 34题怎么做?求讲解 展开
 我来答
百度网友dd2a4ae
2013-03-04 · TA获得超过1.6万个赞
知道大有可为答主
回答量:2628
采纳率:11%
帮助的人:1661万
展开全部
首先,这个题目本身有一点小错误。
B2 DB B1是错误的,应当改为B2 DW B1。
因为在数据定义的操作数里使用B1,代表是它的十六位的偏移地址,不能用在DB定义的8位变量中。

分析一下数据段里的数据存储情况:
物理地址 数据
20000H 20H ;W1首址,就是32
20001H 20H
20002H FFH ; W2首址,每个数占两个字节
20003H FFH
20004H 41H
20005H 00H
20006H 33H ; B1首址,第一个是‘3’
20007H 41H ; 这是‘A’
20008H 43H ; 这是‘C’
20009H 35H ; 这是‘5’
2000AH 24H ; 这是‘$'
2000BH 06H ; B2首址,存放的是B1的偏移地址0006H
2000CH 00H

数据存储清楚了,答案也就容易得到了。
1. 20000H单元的内容是十进制数32,即20H
2. 20006H单元的内容是33H
3. OFFSET B2,是B2的偏移地址=000BH
追问
B1的偏移地址为什么是0006H?B2的偏移地址为什么是000BH?能详细讲下吗
追答
程序在分配内存时,是按顺序依次往后排的。
B1,B2的偏移地址当然就是这么顺着排下来的。
先给W1分配,从0开始,W1定义了2个字节数据,就占用地址0和1
再给W2分配,顺着排,就是从2开始了。W2定义了2个字,每个字占2个字节,一共是4个字节,所以占用地址2,3,4,5
等到给B1分配时,就是从6开始了。因而,B1的偏移地址就是0006H
继续这么排,排到B2时就到了000BH
来自:求助得到的回答
做而论道
高能答主

2013-03-04 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部
20000H 单元内容为__20__H,20006H 单元内容为__33__H,
执行 mov si, offset B2 后,SI 的内容为__000C__H。

说明:

前两个空,分别应该填写 20、33,楼上两位的回答,都说的很清楚了。

第三个空,则应该填写 000C。
楼上两位的回答都是 000B,都有缺欠。

关键是这句:B1 DB '3AC5$空'
注意到了吗?这其中有个《空格》。

楼上两位都少计算了这个《空格》。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
huanghaohongso
2013-03-04 · TA获得超过2万个赞
知道小有建树答主
回答量:968
采纳率:50%
帮助的人:354万
展开全部
M1 DB 32,20H
M2 DW -1,41H
B1 DB '3AC5$'
B2 DB B1

标号实际的意义是段的偏移地址,其中M1=0000H,M2=0002H,B1=0006H,B2=000BH
计算方式:标号所表示的偏移地址值=0000H+标号之前的有效内存数
加载标号的值常见有两种,mov指令方式需要offset修饰标号,lea指令方式不需要offset修饰

DATA段首地址为20000H,表示段偏移地址为0000H开始的单元,即M1处的单元内容为十进制数32,即十六进制表示为20H,

20006H处表示0006H即B1处单元内容,为3的ascii码,十六进制为33H
mov si,offset B2等同于lea si,B2;SI=B2=000BH

这属于基础题
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
秒懂百科
2021-04-04 · TA获得超过5.9万个赞
知道大有可为答主
回答量:25.3万
采纳率:88%
帮助的人:1.2亿
展开全部

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
__SevenMIT
2013-03-04
知道答主
回答量:33
采纳率:0%
帮助的人:24.7万
展开全部
32 41 7
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式