无法理解这个汇编代码

时间:2011-04-29 17:03:21

标签: assembly x86-16

此代码应使用移位操作来计算:p / 4 + v / 8

Data Segment
Db p
Db v
Db q
Data ends
Code Segment
Assume cs:code,ds:data
Start: mov ax,p
       Shr ax,01
Mov cl,02
Shr ax,cl
Mov bx,ax
Mov ax,v
Shr ax,01
Mov cl,03
Shr ax,cl
Mov dx,q
add bx
Mov q,ax
Code ends
end

我的主要问题是: 对我来说,似乎我们正在计算p / 8 + v / 16?!!! 1 因为我认为有2个不需要的班次操作

1 个答案:

答案 0 :(得分:1)

如你所说,那段代码计算p / 8 + v / 16。

每次向右移1位就像你在整数除以2那样。

因此,您应该从两个位置移除SHR ax,01以获得p / 8 + v / 16