ASCII[AX]-->EAX

Тема в разделе "WASM.A&O", создана пользователем Otebebe, 10 май 2007.

  1. Otebebe

    Otebebe New Member

    Публикаций:
    0
    Регистрация:
    3 апр 2006
    Сообщения:
    91
    Cпасибо Mikl__ и Y_Mur...понял :)
    После исправления - 26 байт:

    Код (Text):
    1. xor DI,DI
    2.  
    3. A:
    4. cmp DI,04H
    5.  jz B
    6. L:
    7. push AX
    8. and al,0Fh
    9. cmp al,0Ah
    10. sbb al,69h
    11.  das
    12. stosb
    13. pop ax
    14. shr ax,4
    15. jmp A
    16.  
    17. B:
    18. xor SI,SI
    19. DB 66H
    20. lodsw
     
  2. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    Otebebe
    не забудь добавить push ds/pop es (+2 байта), так как по умолчанию
    stosb==es:mov [di],al, а lodsw==mov ax, ds:[si] это под Win32 ds=es
     
  3. Otebebe

    Otebebe New Member

    Публикаций:
    0
    Регистрация:
    3 апр 2006
    Сообщения:
    91
    Mikl__
    Хорошо.
    Тогда вот (исправленный 31-битник.Решен вопрос с auxilary flag)
    Код (Text):
    1. xor CX,CX
    2.  
    3. .0:
    4. pushf          ;отслеживаем AF.
    5. push AX
    6. shr AX,CL
    7. AAA
    8. jnc numb
    9. add AL,11H    
    10. numb:
    11. add AL,30H
    12.  
    13.  
    14.  
    15. DB 66H         ;
    16. DB 0FH         ;
    17. DB 0ACH        ;shrd edx,eax,08
    18. DB 0C2H        ;
    19. DB 08H         ;
    20.  
    21. pop AX
    22. add CL,04H
    23. popf
    24. cmp CL,10H
    25. jne .0
    26. DB 66H
    27. xchg AX,DX