Disassembling object code

Using the DISASM command (see DISASM), you can disassemble object code at a given address. The DISASM command can be invoked either by entering DISASM on any interactive report command line, or by assigning DISASM to a PF key. When invoked, you are shown a popup panel similar to the following:
Figure 1. Sample Storage Disassemble display
  File  View  Services  Help
┌ ──────────────────────────── Storage Disassemble ────────────────────────────┐
│                                                                             │
│ WARNING Before using this function you must be aware of and respect the     │
│ intellectual property rights of others. You are not authorized to use this  │
│ function to disassemble, copy or create assembly listings or disassembled   │
│ Assembler Language source code in violation of any contractual or other     │
│ legal obligation. You are authorized to use this function only for object   │
│ code for which you have verified you have the right to perform              │
│ disassembly.                                                                │
│                                                                             │
│ Start Address  . . . . . . . . .                                            │
│ Origin Address (optional)  . . .                                            │
│                                                                             │
│                                                                             │
│  F1=Help     F3=Exit    F12=Cancel                                          │
└─────────────────────────────────────────────────────────────────────────────┘

{Z Abend Investigator maximum storage allocated: 1.71 megabytes.}

*** Bottom of data.

 F1=Help      F3=Exit      F5=RptFind   F6=Actions   F7=Up        F8=Down
F10=Left     F11=Right

The DISASM command attempts to disassemble code from a given start address. Optionally, an origin address can be provided in which case the offset of each disassembled instruction is calculated relative to the origin address, rather than the start address. If an origin address is not provided, then it defaults to the same as the start address.

As an example of the DISASM command, the Storage Disassemble display might be specified as follows:
  File  View  Services  Help
┌ ──────────────────────────── Storage Disassemble ────────────────────────────┐
│                                                                             │
│ WARNING Before using this function you must be aware of and respect the     │
│ intellectual property rights of others. You are not authorized to use this  │
│ function to disassemble, copy or create assembly listings or disassembled   │
│ Assembler Language source code in violation of any contractual or other     │
│ legal obligation. You are authorized to use this function only for object   │
│ code for which you have verified you have the right to perform              │
│ disassembly.                                                                │
│                                                                             │
│ Start Address  . . . . . . . . . 18D00326                                   │
│ Origin Address (optional)  . . . 18D00300                                   │
│                                                                             │
│                                                                             │
│  F1=Help     F3=Exit    F12=Cancel                                          │
└─────────────────────────────────────────────────────────────────────────────┘

{Z Abend Investigator maximum storage allocated: 1.71 megabytes.}

*** Bottom of data.

 F1=Help      F3=Exit      F5=RptFind   F6=Actions   F7=Up        F8=Down
F10=Left     F11=Right
Pressing Enter, the following display is presented:
  File  View  Services  Help
───────────────────────────────────────────────────────────────────────────────
Disassemble command                                            Line 1 Col 1 80
Command ===> ________________________________________________ Scroll ===> CSR 
JOBNAME: JA84Q13A SYSTEM ABEND: 0C7 SYS01 2019/12/01 13:59:00 Address Offset Hex Instruction 18D00326 +26 05EF BALR R14,R15 18D00328 +28 50B0 D0C8 ST R11,200(,R13) 18D0032C +2C 41A0 D0D4 LA R10,212(,R13) 18D00330 +30 D20F 4010 306C MVC 16(16,R4),108(R3) 18D00336 +36 D216 4020 3557 MVC 32(23,R4),1367(R3) 18D0033C +3C 58E0 303C L R14,60(,R3) 18D00340 +40 50E0 4038 ST R14,56(,R4) 18D00344 +44 5890 4038 L R9,56(,R4) 18D00348 +48 4090 403E STH R9,62(,R4) 18D0034C +4C 4190 4020 LA R9,32(,R4) 18D00350 +50 5090 4010 ST R9,16(,R4) 18D00354 +54 4170 D128 LA R7,296(,R13) 18D00358 +58 5070 4018 ST R7,24(,R4) 18D0035C +5C 4190 403E LA R9,62(,R4) F1=Help F3=Exit F4=Dsect F5=RptFind F6=Actions F7=Up F8=Down F10=Left F11=Right F12=retrieve

Once the panel showing the disassembled instructions has been displayed (see example above), then PF7 and PF8 can be used to scroll backwards and forwards.

To exit from the DISASM command, enter EXIT (PF3).