展开全部
首先,这个题目本身有一点小错误。
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
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
来自:求助得到的回答
展开全部
20000H 单元内容为__20__H,20006H 单元内容为__33__H,
执行 mov si, offset B2 后,SI 的内容为__000C__H。
说明:
前两个空,分别应该填写 20、33,楼上两位的回答,都说的很清楚了。
第三个空,则应该填写 000C。
楼上两位的回答都是 000B,都有缺欠。
关键是这句:B1 DB '3AC5$空'
注意到了吗?这其中有个《空格》。
楼上两位都少计算了这个《空格》。
执行 mov si, offset B2 后,SI 的内容为__000C__H。
说明:
前两个空,分别应该填写 20、33,楼上两位的回答,都说的很清楚了。
第三个空,则应该填写 000C。
楼上两位的回答都是 000B,都有缺欠。
关键是这句:B1 DB '3AC5$空'
注意到了吗?这其中有个《空格》。
楼上两位都少计算了这个《空格》。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
这属于基础题
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
这属于基础题
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询