News:

MASM32 SDK Description, downloads and other helpful links
MASM32.com New Forum Link
masmforum WebSite

About szCmpi and french... and swedish !!!

Started by jdoe, January 05, 2007, 03:36:43 PM

Previous topic - Next topic

jdoe

hutch, I think the latest version of the table I posted (link below) would be appreciated from the french community.
Free to you to update szCmpi or not but if you do, you know where to look at.   :wink


http://www.masm32.com/board/index.php?topic=6462.msg48234#msg48234


EDIT: And the new table make it compatible with swedish also.


hutch--

jdoe,

See if this algo does justice to your tables. Its a remote table version that should properly suit different tables for different character sets.


; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
    include \masm32\include\masm32rt.inc
; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««

comment * -----------------------------------------------------
                        Build this  template with
                       "CONSOLE ASSEMBLE AND LINK"
        ----------------------------------------------------- *

    CmpiRT PROTO :DWORD,:DWORD,:DWORD

    .data
    align 16
      Eng_tbl \
      db   0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15
      db  16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31
      db  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47
      db  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63
      db  64, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111
      db 112,113,114,115,116,117,118,119,120,121,122, 91, 92, 93, 94, 95
      db  96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111
      db 112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127
      db 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143
      db 144,145,146,147,148,149,150,151,152,153,154,155,156,156,158,159
      db 160,161,162,163,164,165,166,167,168,169,170,171,172,173,173,175
      db 176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191
      db 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207
      db 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223
      db 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239
      db 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255

    .code

start:
   
; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««

    call main
    inkey
    exit

; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««

main proc

    fn CmpiRT,"WoRd One","wOrD oNe",OFFSET Eng_tbl
    print str$(eax),13,10

    fn CmpiRT,"WoRd One","wOrD tWo",OFFSET Eng_tbl
    print str$(eax),13,10

    ret

main endp

; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««

OPTION PROLOGUE:NONE
OPTION EPILOGUE:NONE

align 16

CmpiRT proc src:DWORD,dst:DWORD,tbl:DWORD

  ; -----------------------------------------
  ; return values are,
  ; EAX = 0 on match
  ; EAX = 1st non match offset in string pair
  ; -----------------------------------------

    push ebx
    push esi
    push edi
    push ebp

    mov esi, [esp+4+16]             ; src
    mov edi, [esp+8+16]             ; dst
    mov ebp, [esp+12+16]            ; tbl
    sub eax, eax                    ; zero eax as index

  align 4
  @@:
  REPEAT 3
    movzx edx, BYTE PTR [esi+eax]
    movzx ebx, BYTE PTR [edi+eax]
    movzx ecx, BYTE PTR [edx+ebp]
    add eax, 1
    cmp cl, [ebx+ebp]
    jne quit                        ; exit on 1st mismatch with
    test ecx, ecx                   ; non zero value in EAX
    jz @F
  ENDM

    movzx edx, BYTE PTR [esi+eax]
    movzx ebx, BYTE PTR [edi+eax]
    movzx ecx, BYTE PTR [edx+ebp]
    add eax, 1
    cmp cl, [ebx+ebp]
    jne quit                        ; exit on 1st mismatch with
    test ecx, ecx                   ; non zero value in EAX
    jnz @B

  @@:
    sub eax, eax                    ; set EAX to ZERO on match

  quit:
    pop ebp
    pop edi
    pop esi
    pop ebx

    ret 12

CmpiRT endp

OPTION PROLOGUE:PrologueDef
OPTION EPILOGUE:EpilogueDef

; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««

end start
Download site for MASM32      New MASM Forum
https://masm32.com          https://masm32.com/board/index.php

jdoe

hutch,

Yes, the algo returns what it should.


; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
    include \masm32\include\masm32rt.inc
; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««

comment * -----------------------------------------------------
                        Build this  template with
                       "CONSOLE ASSEMBLE AND LINK"
        ----------------------------------------------------- *

    CmpiRT PROTO :DWORD,:DWORD,:DWORD

    .data
    align 16
      Frn_tbl \
      db 000h,001h,002h,003h,004h,005h,006h,007h,008h,009h,00Ah,00Bh,00Ch,00Dh,00Eh,00Fh
      db 010h,011h,012h,013h,014h,015h,016h,017h,018h,019h,01Ah,01Bh,01Ch,01Dh,01Eh,01Fh
      db 020h,021h,022h,023h,024h,025h,026h,027h,028h,029h,02Ah,02Bh,02Ch,02Dh,02Eh,02Fh
      db 030h,031h,032h,033h,034h,035h,036h,037h,038h,039h,03Ah,03Bh,03Ch,03Dh,03Eh,03Fh
      db 040h,061h,062h,063h,064h,065h,066h,067h,068h,069h,06Ah,06Bh,06Ch,06Dh,06Eh,06Fh
      db 070h,071h,072h,073h,074h,075h,076h,077h,078h,079h,07Ah,05Bh,05Ch,05Dh,05Eh,05Fh
      db 060h,061h,062h,063h,064h,065h,066h,067h,068h,069h,06Ah,06Bh,06Ch,06Dh,06Eh,06Fh
      db 070h,071h,072h,073h,074h,075h,076h,077h,078h,079h,07Ah,07Bh,07Ch,07Dh,07Eh,07Fh
      db 080h,081h,082h,083h,084h,085h,086h,087h,088h,089h,09Ah,08Bh,09Ch,08Dh,09Eh,08Fh
      db 090h,091h,092h,093h,094h,095h,096h,097h,098h,099h,09Ah,09Bh,09Ch,09Dh,09Eh,09Fh
      db 0A0h,0A1h,0A2h,0A3h,0A4h,0A5h,0A6h,0A7h,0A8h,0A9h,0AAh,0ABh,0ACh,0ADh,0AEh,0AFh
      db 0B0h,0B1h,0B2h,0B3h,0B4h,0B5h,0B6h,0B7h,0B8h,0B9h,0BAh,0BBh,0BCh,0BDh,0BEh,0BFh
      db 0E0h,0E1h,0E2h,0E3h,0E4h,0E5h,0E6h,0E7h,0E8h,0E9h,0EAh,0EBh,0ECh,0EDh,0EEh,0EFh
      db 0D0h,0F1h,0F2h,0F3h,0F4h,0F5h,0F6h,0D7h,0F8h,0F9h,0FAh,0FBh,0FCh,0FDh,0DEh,0DFh
      db 0E0h,0E1h,0E2h,0E3h,0E4h,0E5h,0E6h,0E7h,0E8h,0E9h,0EAh,0EBh,0ECh,0EDh,0EEh,0EFh
      db 0F0h,0F1h,0F2h,0F3h,0F4h,0F5h,0F6h,0F7h,0F8h,0F9h,0FAh,0FBh,0FCh,0FDh,0FEh,0FFh

    .code

start:
   
; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««

    call main
    inkey
    exit

; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««

main proc

    fn CmpiRT,"ÀÄÂÇÉÈËÊÎÏÔÖÒÛÜÆÚŒÁÌÍÓÕÙÚØŠŽÝÅÃÑ","àäâçéèëêîïôöòûüæúœáìíóõùúøšžýåãñ",OFFSET Frn_tbl
    print str$(eax),13,10

    fn CmpiRT,"ÀÄÂÇÉÈËÊÎÏÔÖÒÛÜÆÚŒÁÌÍÓÕÙÚØŠŽÝÅÃÑ","àäâçéèëêîïôöòûüæúœáìíóõùúøšžýåañ",OFFSET Frn_tbl
    print str$(eax),13,10

    fn CmpiRT,"Ça m'a l'air très bien","çA M'A L'AIR TRÈS BIEN",OFFSET Frn_tbl
    print str$(eax),13,10

    ret

main endp



0
31
0
Press any key to continue ...


:thumbu