若程序的数据段定义如下,写出各指令语句独立执行后的结果:DSEG SEGMENTDATA1 DB 10H,20H,30HDATA2 DW 10 DUP(?)STRIGN DB '123'DSEG ENDS(1) MOV AL,DATA1(2) MOV BX,OFFSET DATA2(3) LEA SI,STRINGADD DI,SI答案给出的解释是这
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/08 23:58:17
若程序的数据段定义如下,写出各指令语句独立执行后的结果:DSEG SEGMENTDATA1 DB 10H,20H,30HDATA2 DW 10 DUP(?)STRIGN DB '123'DSEG ENDS(1) MOV AL,DATA1(2) MOV BX,OFFSET DATA2(3) LEA SI,STRINGADD DI,SI答案给出的解释是这
若程序的数据段定义如下,写出各指令语句独立执行后的结果:
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 SEGMENTDATA1 DB 10H,20H,30HDATA2 DW 10 DUP(?)STRIGN DB '123'DSEG ENDS(1) MOV AL,DATA1(2) MOV BX,OFFSET DATA2(3) LEA SI,STRINGADD DI,SI答案给出的解释是这
data1,data2和string都在同一数据段,所以在内存中存放是从上往下存的
|10h|
|20h|
|30h|
20个空的内存单元(dw 10 dup()十个字)
31h (‘1’的assic码)
32h
33h
所以data2的偏移地址为0003h(从上往下第四个,10h的偏移地址为0000h)
string为0017h(即十进制的23)