Macro Definition Problem in mixed.inc, pushReg

ID Number: Q40292

5.00

MS-DOS

buglist5.00

Summary:

The include file, mixed.inc, in Microsoft Macro Assembler Version 5.00

provides the definitions of the high-level-language interface macros.

The macro "pushReg" is defined in the same file and used internally by

other macros such as "hProc" to save registers during the

initialization of a procedure. "pushReg" is defined to push the

maximum of six registers. When "hProc" is called in an assembly

program with the number of registers to be saved is more than six, the

assembled code only saves the first six registers.

More Information:

The following is an example:

INCLUDE mixed.inc

.model small

.data

.code

hProc _proc1, <USES ax bx cx dx si di bp ds es>

; only ax, bx, cx, dx, si, di are pushed onto stack.

......

hRet ; only pop six registers.

hEndp

end

To save more than six registers when initializing a procedure, the

include file mixed.inc should be modified as follows.

The following is the original version:

.....

pushReg macro use,b,c,d,e,f,g

regPushed equ <>

irp reg, <b,c,d,e,f,g>

.....

The following is the modified version:

.....

pushReg macro use,b,c,d,e,f,g,h,i,j,k,l,m

regPushed equ <>

irp reg, <b,c,d,e,f,g,h,i,j,k,l,m>

......

The modified macro "pushReg" can push the maximum of 11 registers. All

the pushed registers will be popped upon exit from the procedure.

More Information:

The include file mixed.inc is in the directory "mixed" in disk 1 of

the Microsoft Macro Assembler Version 5.00. The file mixed.doc in the

same directory contains specific information for using the

High-Level-Language Interface Macros.

There are considerable changes on those macros from MASM Version 5.00

to 5.10. Please refer to the file mixed.doc contained within the MASM

Version 5.10 package for more specific information.