8085微处理器程序

问题描述

从 m/m 位置 2500H 存储了 N 个字节。 N 的值存储在 2400H 中。如何编写 8085 程序来将所有字节的位 Di 与 Dj 交换(不考虑位值)。 i=4 和 j=0 的值

解决方法

没有人愿意为你做功课。话虽如此,下面是如何将 1 字节数据的第 i 位与第 j 位互换。

首先让我们回顾一下按位逻辑运算符及其用法。假设我们想知道是否设置了第 4 位,我们取一个位掩码 0000 1000(即 08H)并将它与数据一起 AND。为了清除第二位,我们采用位掩码 1111 1101(即 FDH)和 AND 它与数据。而要设置第 6 位,我们采用位掩码 0000 0010(即 02H)并将其与数据一起 OR。为了对第 4 位进行翻转,我们采用位掩码 0000 1000(即 08H)并将其与数据一起 XOR

假设实际数据在寄存器 D 中,因此我们可以将第 2 位与第 4 位交换:

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 字节上重复此过程将完成所需的任务。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...