作业帮 > 综合 > 作业

若程序的数据段定义如下,写出各指令语句独立执行后的结果:

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/08/01 08:05:34
若程序的数据段定义如下,写出各指令语句独立执行后的结果:
DSEG SEGMENT
DATA1 DB 10H,20H,30H
DATA2 DW 10 DUP(?)
STRIGN DB '123'
DSEG ENDS
(1) MOV AL,DATA1
(2) MOV BX,OFFSET DATA2
(3) LEA SI,STRING
ADD DI,SI
答案给出的解释是这样的:
(1) 取变量DATA1的值.指令执行后是,AL = 10H.
(2) 变量DATA2的偏移地址.指令执行后,BX = 0003H.
(3) 先取变量STRING的偏移地址送寄存器SI,之后将SI的内容与DI 的内容相加并将结果送DI.指令执行后,SI = 0017H;DI = DI+0017H.
我现在不明白关于第二个问题中,为什么BX = 0003H,第三个问题中,为什么执行后SI =0017H,
若程序的数据段定义如下,写出各指令语句独立执行后的结果:
data1,data2和string都在同一数据段,所以在内存中存放是从上往下存的
|10h|
|20h|
|30h|
20个空的内存单元(dw 10 dup()十个字)
31h (‘1’的assic码)
32h
33h
所以data2的偏移地址为0003h(从上往下第四个,10h的偏移地址为0000h)
string为0017h(即十进制的23)
再问: 这么说来,DATA1,DATA2,STRING之间的相对偏移地址都是有关联的啊,我还以为他们是完全独立的的呢。