此代码应使用移位操作来计算: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个不需要的班次操作
答案 0 :(得分:1)
如你所说,那段代码计算p / 8 + v / 16。
每次向右移1位就像你在整数除以2那样。
因此,您应该从两个位置移除SHR ax,01以获得p / 8 + v / 16