Article ID: 40784
Article Last Modified on 10/23/2003
APPLIES TO
- Microsoft CodeView 4.1
- Microsoft CodeView 3.0
- Microsoft CodeView 3.0
- Microsoft CodeView 3.0
- Microsoft CodeView 4.0
- Microsoft CodeView 4.01
- Microsoft CodeView 4.01
- Microsoft CodeView 4.1
- Microsoft CodeView 3.0
- Microsoft CodeView 3.0
- Microsoft CodeView 4.1
- Microsoft CodeView 4.1
- Microsoft CodeView 4.1
This article was previously published under Q40784
Using the Microsoft Macro Assembler (MASM), it is possible to associate various segments into a group; DGROUP is an example of this technique. Grouped data or stack segments do not affect CodeView but CodeView does not recognize grouped code segments. The program will run correctly under CodeView but none of the CodeView functions will be available on the second and subsequent segments in the code group.
The sample code below illustrates this behavior. Once the program executes into the _TEXTB segment, all CodeView functionality is lost. You cannot set any breakpoints or single step through the _TEXTB code. Any attempt to single trace into _TEXTB will result in CodeView running all the code in _TEXTB as if you had specified a go or a step
Sample Code
; Assembler options needed: /Zi DOSSEG _TEXT GROUP _TEXTA, _TEXTB ; Code group _TEXT _DATA SEGMENT WORD PUBLIC 'DATA' msg DB "Hello, world.", 13, 10, "$" _DATA ENDS _TEXTA SEGMENT WORD PUBLIC 'CODE' ; First code segment - this ASSUME cs:_TEXT,ds:_DATA ; code may be traced as start: mov ax, _DATA ; expected. mov ds, ax call FAR PTR SayHi mov ax, 4C00h int 21h _TEXTA ENDS _TEXTB SEGMENT WORD PUBLIC 'CODE' ; You cannot trace through SayHi PROC ; this code. mov ah, 9h mov dx, OFFSET msg int 21h ret SayHi ENDP _TEXTB ENDS END start
Additional query words: kbinf 2.20 3.00 3.50 4.10
Keywords: kb16bitonly KB40784