关于位移指令的一个题

来源:百度知道 编辑:UC知道 时间:2024/09/25 02:24:14
例题看不明白。
MOV CL,5
SAR 【DI】,CL
如指令执行前:(DS)=0F800H,(DI)=180AH,(0F980A)=0064H,
则指令执行后:(0F980A)=0003H,(CF)=0,相当于100d/32d=3d.
不明白“(DS)=0F800H,(DI)=180AH”和“相当于100d/32d=3d”两句话的意思。

我们先看你的例子哈:
MOV CL,5 ;移位的数大于1时必须用CL或者CX装
SAR [DI],CL ;SAR指令是右移指令,相当与不断除以2,[DI]实际是制定数据段使用DI中的数据作为偏移地址,也就是你说的:数据段段基址(DS)=0F800H,偏移地址(DI)=180AH,相加得到物理地址(0F980A)=0064H,其中的数据为64H=100D。
执行指令SAR [DI],CL,将DI指向的数据64H右移五次,64H二进制为01100100B→00110010B→00011001B→00001100B→00000110B=3D,也就是相当于100d/32d=3d的意思了!

AY OK?