Assembly 在程序集x8086中交换位
我在组装课上做了作业,在试图解决问题时遇到了一个问题,问题是: 编写一个程序,在DS:10H和DS:20H之间交换D2第2位Assembly 在程序集x8086中交换位,assembly,x86-16,Assembly,X86 16,我在组装课上做了作业,在试图解决问题时遇到了一个问题,问题是: 编写一个程序,在DS:10H和DS:20H之间交换D2第2位 我试图用Shift Right解决这个问题,但似乎效果不好。解决这个问题的可能方法: 为了可读性,我在示例中使用了4位。所以字母a,b。。是位,每个位的值为0或1 abcd和0010给出位c:00c0 pqrs和0010给出了r:00r0 然后: abcd和1101清除c:ab0d ab0d或00r0将r放入:abrd 同样地: pqrs和1101清除r:pq0s pq0
我试图用Shift Right解决这个问题,但似乎效果不好。解决这个问题的可能方法: 为了可读性,我在示例中使用了4位。所以字母a,b。。是位,每个位的值为0或1 abcd和0010给出位c:00c0 pqrs和0010给出了r:00r0 然后: abcd和1101清除c:ab0d ab0d或00r0将r放入:abrd 同样地: pqrs和1101清除r:pq0s
pq0s或00c0将c放入:pqcd现在您希望我们为您做家庭作业吗?请提供一些代码。到目前为止你做了什么?嘿,我不需要你做我的家庭作业,只是需要一个解决这个问题的方法,你不必发表评论。请阅读这篇右移确实是右移。虽然我可以想象你的问题的解决方案使用右移一个有点人为复杂的,它不能作为唯一的东西来解决问题,需要相当多的指示来支持这样的建设。从这个问题上看,不清楚你的想法是什么,听起来更像是你随机挑选了一些指导,并希望它能起作用。不,只需从原始值中提取所需的位,然后清除这些位置,然后将另一位放在那里,但保留所有其他位,这将以交换的第二位结束。IIRC,您可以使用修改的xor交换稍微更有效地执行此操作:在前两个xor操作或其他操作后使用0b0010屏蔽,因此,总共需要4位操作来交换1位并保留其余的位。如果我没记错的话;我并没有真正完成它。