microsoftxiao

记忆 流逝

导航

将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
我的算法

posted on 2006-08-19 12:24  龙巢NET刀  阅读(599)  评论(0)    收藏  举报