Author Topic: Next update for macros64.inc 10-11-2022  (Read 214 times)

hutch--

  • Administrator
  • Member
  • ******
  • Posts: 9988
  • Mnemonic Driven API Grinder
    • The MASM32 SDK
Next update for macros64.inc 10-11-2022
« on: November 10, 2022, 09:34:06 AM »
A number of things have been updated as well as added to the macros file.

1. The .switch macro has been updated to a more efficient form.
2. The .switch$ macro from MASM32 has been ported to MASM64.
3. The .switchi$ macro from MASM32 has been ported to MASM64.

The new help format based on RTF files has had the "switch" page updated to include the two new string versions.
  03_SwitchBlock.rtf

macros64.inc is a replacement for the earlier version.

The file 03_SwitchBlock.rtf should replace the earlier one in the "RtfHelp" directory.

The two ported macros for string comparison.

  ; ======================
  ; case sensitive version
  ; ======================

    .switch$ arg                ; arg is the address of a zero terminated string

      .case$ "alpha"
        conout "alpha selected",lf

      .case$ "beta"
        conout "beta selected",lf

      .case$ "gamma"
        conout "gamma selected",lf

      .case$ "delta"
        conout "delta selected",lf

      .case$ "epsilon"
        conout "epsilon selected",lf

      .else$
        conout "No matching string",lf

    .endsw$

  ; ||||||||||||||||||||||

  ; ========================
  ; case insensitive version
  ; ========================

    .switchi$ arg               ; arg is the address of a zero terminated string

      .casei$ "JeSt"
        conout "jest selected",lf

      .casei$ "tEsT"
        conout "test selected",lf

      .casei$ "BeSt"
        conout "best selected",lf

      .casei$ "wEsT"
        conout "west selected",lf

      .elsei$
        conout "No matching string",lf

    .endswi$

  ; ||||||||||||||||||||||||
hutch at movsd dot com
http://www.masm32.com    :biggrin:  :skrewy:

hutch--

  • Administrator
  • Member
  • ******
  • Posts: 9988
  • Mnemonic Driven API Grinder
    • The MASM32 SDK
Re: Next update for macros64.inc 10-11-2022
« Reply #1 on: November 11, 2022, 09:06:06 PM »
A simple demo of the case sensitive ".switch$" macro in use.
hutch at movsd dot com
http://www.masm32.com    :biggrin:  :skrewy:

hutch--

  • Administrator
  • Member
  • ******
  • Posts: 9988
  • Mnemonic Driven API Grinder
    • The MASM32 SDK
Re: Next update for macros64.inc 10-11-2022
« Reply #2 on: November 16, 2022, 12:01:08 PM »
 A console example of the case insensitive .switchi$ macros. Zip file attached.

; «»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»

    include \masm64\include64\masm64rt.inc

    .data
      alpha db "alpha",0
      beta db "beta",0
      gamma db "gamma",0
      delta db "delta",0
      epsilon db "epsilon",0
      zeta db "zeta",0
      eta db "eta",0
      theta db "theta",0
      iota db "iota",0
      kappa db "kappa",0

    .code

; «»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»

 entry_point proc

    LOCAL iwrd :QWORD

    conout "-------------------------------------",lf
    conout "    64 bit MASM .switchi$ example",lf
    conout "  Format = Input word - output word",lf
    conout "-------------------------------------",lf,lf

    rcall switchitst,OFFSET alpha
    rcall switchitst,OFFSET beta
    rcall switchitst,OFFSET gamma
    rcall switchitst,OFFSET delta
    rcall switchitst,OFFSET epsilon
    rcall switchitst,OFFSET zeta
    rcall switchitst,OFFSET eta
    rcall switchitst,OFFSET theta
    rcall switchitst,OFFSET iota
    rcall switchitst,OFFSET kappa

    conout lf
    waitkey

    .exit

 entry_point endp

; «»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»

switchitst proc iwrd:QWORD

    .switchi$ iwrd
      .casei$ "ALPHA"
        conout iwrd," ","ALPHA",lf

      .casei$ "BETA"
        conout iwrd," ","BETA",lf

      .casei$ "GAMMA"
        conout iwrd," ","GAMMA",lf

      .casei$ "DELTA"
        conout iwrd," ","DELTA",lf

      .casei$ "EPSILON"
        conout iwrd," ","GAMMA",lf

      .casei$ "ZETA"
        conout iwrd," ","EPSILON",lf

      .casei$ "ETA"
        conout iwrd," ","ETA",lf

      .casei$ "THETA"
        conout iwrd," ","THETA",lf

      .casei$ "IOTA"
        conout iwrd," ","IOTA",lf

      .casei$ "KAPPA"
        conout iwrd," ","KAPPA",lf

      .elsei$
        conout "No word here",lf

    .endswi$

    ret

switchitst endp

; «»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»

    end


hutch at movsd dot com
http://www.masm32.com    :biggrin:  :skrewy: