从m/m位置2500H开始有N个字节存储。N的值存储在2400H.How中。我能否编写一个8085程序来交换(不管位值如何)所有字节的位Di和Dj。i=4和j=0的值
发布于 2021-06-21 17:08:59
没人愿意帮你做作业。也就是说,下面是如何将1字节数据的第i位与第j位互换的方法。
首先,让我们回顾一下按位逻辑运算符及其用法。假设我们想知道是否设置了第4位,我们采用位掩码0000 1000 (即08H)并将其与数据一起AND。为了清除第二位,我们采用位掩码1111 1101 (即FDH)并用数据对其进行AND。然而,为了设置第6位,我们采用位掩码0000 0010 (即02H)并用数据对其进行OR。为了补充或翻转第4位,我们采用位掩码0000 1000 (即08H),并用数据对其进行XOR。
假设实际数据在寄存器D中,因此为了与第四位交换第二位,我们可以这样写:
MVI A, 08H ;i-th bit
ORI 02H ;j-th bit
ANI D ;only 2nd and 4bit of the data survives
JPE SKIP ;if both bits are same (both 0 or both 1) no exchange required
;if not we need a swap, which is this case can be done by flipping the both
MOV A,D ;bring back the data again
XRI 08H ;flip the i-th bit
XRI 02H ;flip the j-th bit
SKIP: MOV D,A ;put the data back to D位掩码可以以适当的移位次数(或不进位地旋转)以编程方式生成。并且在所有n字节上重复此过程将完成所需的任务。
https://stackoverflow.com/questions/67856677
复制相似问题