The START Assembler instruction is rarely used any more. It was useful in an environment where you knew in advance where the operating system would load your program. For example, the PCP (Primary Control Program option in OS/360 would always load your program at the same address - always some 2K multiple + X'20'. This was convenient for debugging. This sort of constant load address was rarely true with the MVT option, and that's still the case with z/OS.
The NOP and NOPR extended branch mnemonic instructions are discussed, poorly (in my opinion) in the Branching with extended mnemonic codes chapter in the High Level Assembler for z/OS & z/VM & z/VSE Language Reference manual. Both NOP and NOPR expect an operand, though 0 is perfectly acceptable. NOP and NOPR create a BC or BCR instruction with a condition mask of binary 0s so they never branch.
Something like XYZ DS 0A is very dangerous. Yes, it creates the symbol, but it also forces boundary alignment, which means the Assembler can insert nothing (literally) into your program text so the symbol is placed on a word boundary when the system actually loads your program. If you must do this use XYZ DS 0H. This also forces boundary alignment, but ordinary instructions also force boundary alignment. When I do this, by the way, I use XYZ DC 0H'0'. This also forces boundary alignment, but it also tells the Assembler to insert a byte of binary 0s into the program text rather than nothing. The effect is usually the same, but, frankly, I prefer binary 0s.
I have to go now.
L not working as expected
-
- Global moderator
- Posts: 2105
- Joined: Thu Jun 03, 2010 6:21 pm
- Skillset: Assembler, JCL, utilities
- Referer: zos.efglobe.com
-
- Posts: 474
- Joined: Thu Mar 10, 2016 5:03 pm
- Skillset: assembler rexx zOS ispf racf smf
- Referer: saw it in the experts foprum thought I could help here
Re: L not working as expected
I did say ' in this case 'ds 0a' works'', because the preceeding instruction is an unconditional branch. I agree that in general 'ds 0h' is probably safer, however nothing is safe in assembler unless you know what you are doing. In my own code I never use neither 'ds 0a' nor 'ds 0h' in the middle of a instruction sequence, I prefer to label the instructions or use a labelled 'CNOP 0.4'.
-
- Similar Topics
- Replies
- Views
- Last post
-
- 4
- 1358
-
by Jeff R
View the latest post
Fri Dec 30, 2022 8:51 pm
-
- 1
- 1425
-
by enrico-sorichetti
View the latest post
Wed Jun 16, 2021 10:26 pm
-
-
I can't get the LINK macro working properly
by chong_zhou » Fri Aug 21, 2020 10:53 pm » in Assembler - 13
- 7244
-
by steve-myers
View the latest post
Thu Aug 27, 2020 1:06 am
-
-
-
Compiler option INVDATA is not working on COBOL6.3
by Misha786 » Fri Apr 22, 2022 5:35 pm » in IBM Cobol - 4
- 3386
-
by Misha786
View the latest post
Mon Apr 25, 2022 4:35 pm
-
-
-
Micro mainframe transmission stopped working
by nightrider43 » Wed Apr 03, 2024 6:25 pm » in All Other Tools - 0
- 2934
-
by nightrider43
View the latest post
Wed Apr 03, 2024 6:25 pm
-