Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 在程序集x8086中交换位_Assembly_X86 16 - Fatal编程技术网

Assembly 在程序集x8086中交换位

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

我在组装课上做了作业,在试图解决问题时遇到了一个问题,问题是:

编写一个程序,在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


pq0s或00c0将c放入:pqcd

现在您希望我们为您做家庭作业吗?请提供一些代码。到目前为止你做了什么?嘿,我不需要你做我的家庭作业,只是需要一个解决这个问题的方法,你不必发表评论。请阅读这篇右移确实是右移。虽然我可以想象你的问题的解决方案使用右移一个有点人为复杂的,它不能作为唯一的东西来解决问题,需要相当多的指示来支持这样的建设。从这个问题上看,不清楚你的想法是什么,听起来更像是你随机挑选了一些指导,并希望它能起作用。不,只需从原始值中提取所需的位,然后清除这些位置,然后将另一位放在那里,但保留所有其他位,这将以交换的第二位结束。IIRC,您可以使用修改的xor交换稍微更有效地执行此操作:在前两个xor操作或其他操作后使用0b0010屏蔽,因此,总共需要4位操作来交换1位并保留其余的位。如果我没记错的话;我并没有真正完成它。