将AL中的第7和第0 第6-1 5-2 4-3互换
这个, 可能也可以通过循环的移位操作来进行吧:
mov al, 12h ; 原始数据在 AL 中
mov cx, 8 ; AL, 字节类型, 共 8 个 bits
mov ah, 0 ; AH 作为换位时的中间寄存器, 初始为 0
l_1bit:
shl al, 1 ; 左移 1 位, 当前最高位进入 CF
rcr ah, 1 ; AH 右移 1 位, CF 就进入 AH 的最高位
loop l_1bit ; 一共进行 8 此循环移位
mov al, ah ; 最后结果在 AL 中
mov ah, 0 ; 中间寄存器 AH 清零
CSDN上zara(Kyrie eleison)给出精简答案
;高4位
xor ax,ax
xor bx,bx
xor cx,cx
xor dx,dx
mov bl,4; 计算数器
again2:mov al,MEMB; 取数据
mov cl,bh
sal cl,1 ;计算2n + 1 (n=0)值为 1 3
add cl,1
cmp bl,2
jbe con12; ;x<= 2时
rol al,cl
jmp judge2
con12: dec bh
mov cl,bh
sal cl,1
add cl,1
ror al,cl
judge2:cmp bl,4
jz msk12
cmp bl,3
jz msk22
cmp bl,2
jz msk32
cmp bl,1
jz msk42
jmp exit
msk12:and al,01h
jmp afte2
msk22:and al,02h
jmp afte2
msk32:and al,04h
jmp afte2
msk42:and al,08h
afte2:or dl,al
cmp bl,2
jz count32
inc bh ; 加1
count32:dec bl
jnz again2 ; ZF = 0 上接bl 计数器 倒计数法
;低4位
xor ax,ax
xor bx,bx
xor cx,cx
mov bl,4; 计算数器
mov bh,0
again:mov al,MEMB; 取数据
mov cl,bh
sal cl,1
add cl,1
cmp bl,2
jbe con1;
ror al,cl
jmp judge
con1: dec bh
mov cl,bh
sal cl,1
add cl,1
rol al,cl
judge:cmp bl,4
jz msk1
cmp bl,3
jz msk2
cmp bl,2
jz msk3
cmp bl,1
jz msk4
jmp exit
msk1: and al,80h
jmp afte
msk2: and al,40h
jmp afte
msk3: and al,20h
jmp afte
msk4: and al,10h
afte: or dl,al
cmp bl,2
jz count3
inc bh ; 加1
count3:dec bl
jnz again ; ZF = 0
mov rel,dl ;最终值保存在dl中
exit:mov ah,4ch
int 21h
我的算法
mov al, 12h ; 原始数据在 AL 中
mov cx, 8 ; AL, 字节类型, 共 8 个 bits
mov ah, 0 ; AH 作为换位时的中间寄存器, 初始为 0
l_1bit:
shl al, 1 ; 左移 1 位, 当前最高位进入 CF
rcr ah, 1 ; AH 右移 1 位, CF 就进入 AH 的最高位
loop l_1bit ; 一共进行 8 此循环移位
mov al, ah ; 最后结果在 AL 中
mov ah, 0 ; 中间寄存器 AH 清零
CSDN上zara(Kyrie eleison)给出精简答案
;高4位
xor ax,ax
xor bx,bx
xor cx,cx
xor dx,dx
mov bl,4; 计算数器
again2:mov al,MEMB; 取数据
mov cl,bh
sal cl,1 ;计算2n + 1 (n=0)值为 1 3
add cl,1
cmp bl,2
jbe con12; ;x<= 2时
rol al,cl
jmp judge2
con12: dec bh
mov cl,bh
sal cl,1
add cl,1
ror al,cl
judge2:cmp bl,4
jz msk12
cmp bl,3
jz msk22
cmp bl,2
jz msk32
cmp bl,1
jz msk42
jmp exit
msk12:and al,01h
jmp afte2
msk22:and al,02h
jmp afte2
msk32:and al,04h
jmp afte2
msk42:and al,08h
afte2:or dl,al
cmp bl,2
jz count32
inc bh ; 加1
count32:dec bl
jnz again2 ; ZF = 0 上接bl 计数器 倒计数法
;低4位
xor ax,ax
xor bx,bx
xor cx,cx
mov bl,4; 计算数器
mov bh,0
again:mov al,MEMB; 取数据
mov cl,bh
sal cl,1
add cl,1
cmp bl,2
jbe con1;
ror al,cl
jmp judge
con1: dec bh
mov cl,bh
sal cl,1
add cl,1
rol al,cl
judge:cmp bl,4
jz msk1
cmp bl,3
jz msk2
cmp bl,2
jz msk3
cmp bl,1
jz msk4
jmp exit
msk1: and al,80h
jmp afte
msk2: and al,40h
jmp afte
msk3: and al,20h
jmp afte
msk4: and al,10h
afte: or dl,al
cmp bl,2
jz count3
inc bh ; 加1
count3:dec bl
jnz again ; ZF = 0
mov rel,dl ;最终值保存在dl中
exit:mov ah,4ch
int 21h
我的算法
浙公网安备 33010602011771号