Assembly 如何将钻头设置到位?

Assembly 如何将钻头设置到位?,assembly,x86,fasm,Assembly,X86,Fasm,如何在第5位燃烧cf 例如: 我的电话号码是10000111。CF=1=>10001111 我的主要任务是使用shr(shl)生成反向字节。我想自己做,但我不知道如何将位设置在位置以反转位,只需将它们从源移出的同一端移入到目标操作数(即使用相反的移位)。示例代码: mov al, 100d ; 01100100 shr eax, 1 ; cf = 0 ; 00110010 mov al, 100 ; input = 01100100 mov ah, 0

如何在第5位燃烧cf

例如: 我的电话号码是10000111。CF=1=>10001111


我的主要任务是使用shr(shl)生成反向字节。我想自己做,但我不知道如何将位设置在位置

以反转位,只需将它们从源移出的同一端移入到目标操作数(即使用相反的移位)。示例代码:

mov al, 100d ; 01100100
shr eax, 1 ; cf = 0
           ; 00110010
    mov al, 100  ; input = 01100100
    mov ah, 0    ; output
    mov ecx, 8   ; 8 bits to process
next:
    shr al, 1    ; shift next bit out to the right
    rcl ah, 1    ; shift it in from the right
    loop next
    ; result in ah = 38 = 0010 1100
不过,要回答您的问题,请将进位移到一个调零的临时寄存器中的给定位置,然后使用按位
将其设置到目标位置。示例代码:

mov al, 100d ; 01100100
shr eax, 1 ; cf = 0
           ; 00110010
    mov al, 100  ; input = 01100100
    mov ah, 0    ; output
    mov ecx, 8   ; 8 bits to process
next:
    shr al, 1    ; shift next bit out to the right
    rcl ah, 1    ; shift it in from the right
    loop next
    ; result in ah = 38 = 0010 1100
“…但我不知道如何设置钻头的位置…”

可以理解。有无数的说明

您选择使用的第一个,即
SHR
(和
SHL
,在本讨论中被忽略),将拨动进位标志以包含您移出的(源寄存器)边缘上的位

还有另一条指令,
RCL
(和
RCR
,在本次讨论中同样被忽略),它将进位放入另一个边缘(目标寄存器)上的位,也就是说,您将“移入”

连续八次这样做,您将完成您的“reverse-o-matic”程序

这里有两页描述这两个说明,包括一个小图片

嘿,这很简单,所以,免费代码,只是因为我今天感觉很好

mov dl, 0 ; zero temp register, without affecting CF
rcl dl, 5 ; move CF into bit #5 (use CL register for dynamic)
or al, dl ; merge into al

测试它并让我们知道它是否有效

我不明白。你能举个例子吗?我不知道RCL的存在。非常感谢。