汇编问题 高手来!!!!!!

来源:百度知道 编辑:UC知道 时间:2024/06/14 16:21:51
(1)MOV SI,0FFFFH
MOV AX,[SI] 请问这里为什么说[SI]寻址的是双字节,高字节偏移地址为10000H 怎样计算出来的呢?
(2)MOV SI,20H
MOV EBX,[SI] 这里为什么说从数据段偏移地址20H-23H单元取数 范围是如何确定的?

(1)MOV SI,0FFFFH
MOV AX,[SI]
请问这里为什么说[SI]寻址的是双字节,高字节偏移地址为10000H 怎样计算出来的呢?
答:第二条指令传送的目的地AX,是个双字节的寄存器,所以要传送两个字节。
其中第一字节的源地址,是SI指定的0FFFFH单元,
第二字节的源地址,是SI+1指定的,即0FFFFH+1,即10000H单元。

(2)MOV SI,20H
MOV EBX,[SI]
这里为什么说从数据段偏移地址20H-23H单元取数 范围是如何确定的?
答:第二条指令传送的目的地EBX,是个四字节的寄存器,所以要传送四个字节。
即将 SI、SI+1、SI+2、SI+3单元的内容进行传送。

只能说 拿复杂指令集讲汇编其实是很毁人的...

1. mov ax,[si] 这本身就是一个双字节读取指令,所以自然是双字节的(目标寄存器ax是双字节的)读取的首地址是FFFF,高地址自然是10000。

2. 首先说这个mov ebx, [si]这个指令根本就是错的。既然用了32位寄存器,不可能能用16位寄存器寻址。一定要说的话,这是个四字节读取指令,虽说根本没这个指令