takasi 发表于 2022-3-3 21:39:19

关于offset指令的疑问

本帖最后由 takasi 于 2022-3-4 10:03 编辑

已知程序的数据段为:
DATA SEGMENT
A DB ‘$’,10H
B DB ‘COMPUTER’
C DW 1234H,0FFH
D DB 5DUP(?)
E DD1200459AH
DATA ENDS

求下列程序段执行后的结果是什么。
MOV AL,A
MOV DX,C
XCHG DL,A
MOV BX,OFFSET B
MOV CX,3
LEA BX,D
LDS SI,E
LES DI,E

解:
AL=24H
DX=1234H
DL=24H,A=34H
BX=2
CX=5550H
BX=000EH
DS=1200H,SI=459AH
ES=1200H,DI=459AH

可以帮忙解释一下BX=2和BX=000EH是怎么得来的吗?

人造人 发表于 2022-3-3 22:19:35

发完整代码

takasi 发表于 2022-3-4 10:01:21

人造人 发表于 2022-3-3 22:19
发完整代码

已知程序的数据段为:
DATA SEGMENT
A DB ‘$’,10H
B DB ‘COMPUTER’
C DW 1234H,0FFH
D DB 5DUP(?)
E DD1200459AH
DATA ENDS

求下列程序段执行后的结果是什么。
MOV AL,A
MOV DX,C
XCHG DL,A
MOV BX,OFFSET B
MOV CX,3
LEA BX,D
LDS SI,E
LES DI,E

解:
AL=24H
DX=1234H
DL=24H,A=34H
BX=2
CX=5550H
BX=000EH
DS=1200H,SI=459AH
ES=1200H,DI=459AH

takasi 发表于 2022-3-4 10:30:59

已解决

publicwhore 发表于 2022-3-4 15:49:30

0002h是B在data段中偏移,A中两个byte,故而B的offset是2,同理000e是D的偏移
页: [1]
查看完整版本: 关于offset指令的疑问