
微机原理中的一道题目请教大家
若程序的数据段定义如下,写出各指令语句独立执行后的结果:DSEGSEGMENTDATA1DB10H,20H,30HDATA2DW10DUP(?)STRIGNDB'123'...
若程序的数据段定义如下,写出各指令语句独立执行后的结果:
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, 展开
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, 展开
1个回答
展开全部
data1,data2和string都在同一数据段,所以在内存中存放是从上往下存的
|10h|
|20h|
|30h|
20个空的内存单元(dw 10 dup()十个字)
31h (‘1’的assic码)
32h
33h
所以data2的偏移地址为0003h(从上往下第四个,10h的偏移地址为0000h)
string为0017h(即十进制的23)
|10h|
|20h|
|30h|
20个空的内存单元(dw 10 dup()十个字)
31h (‘1’的assic码)
32h
33h
所以data2的偏移地址为0003h(从上往下第四个,10h的偏移地址为0000h)
string为0017h(即十进制的23)
追问
这么说来,DATA1,DATA2,STRING之间的相对偏移地址都是有关联的啊,我还以为他们是完全独立的的呢。

2023-08-25 广告
电机控制原理是基于电磁感应和电路理论,通过控制电机的电压、电流、频率等参数,实现对电机转速、转矩等物理量的调节和控制。在电机控制中,一般采用PWM(脉冲宽度调制)技术,通过对电机三相电源的斩波,实现电机的调速和转矩控制。同时,电机控制还需要...
点击进入详情页
本回答由亿昇科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询