cts-pac version 2.0 1 assembler/session 1 : course title : assembler language assembler language...

168
CTS-PAC Version 2.0 CTS-PAC Version 2.0 1 Assembler/Session 1 Course Title : : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration Duration : : 5 Half 5 Half - - DAYS DAYS

Upload: joan-boone

Post on 12-Jan-2016

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 11

Assembler/Session 1

Course Title : :

ASSEMBLER ASSEMBLER LANGUAGELANGUAGE DurationDuration : : 5 Half 5 Half - - DAYSDAYS

Course Title : :

ASSEMBLER ASSEMBLER LANGUAGELANGUAGE DurationDuration : : 5 Half 5 Half - - DAYSDAYS

Page 2: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 22

Objectives

ObjectivesObjectivesObjectivesObjectives

• Familiarize with IBM 370 Assembly Language

Assembler/Session 1

Page 3: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 33

SESSION 1SESSION 1Day 1Day 1

Introduction

SESSION 2SESSION 2Day 1Day 1

Addressing

SESSION 3SESSION 3Day 2Day 2 Machine Instructions

Assembler/Session 1 COURSE SCHEDULE COURSE SCHEDULE

Page 4: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 44

Writing a complete program

SESSION 4SESSION 4Day 3Day 3

Program Sectioning

SESSION 5SESSION 5Day 3Day 3

Assembler Directives

SESSION 6SESSION 6Day 3Day 3

Assemble and link program SESSION 7SESSION 7Day 4Day 4

COURSE SCHEDULEAssembler/Session 1

Page 5: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 55

Macro Language SESSION 8SESSION 8Day 4 Day 4

Other Topics SESSION 9SESSION 9Day 5Day 5

Assembler/Session 1

COURSE SCHEDULE

Page 6: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 66

Assembler LanguageAssembler Language

SESSION 1

Assembler/Session 1

Page 7: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 77

ObjectivesINTRODUCTIONINTRODUCTION

• An assembler language is a symbolic form of machine language

• Assembler translates assembler language program to machine language

• An assembler program consists of many statements

• In general, one assembler language statement corresponds to one machine language instruction

Assembler/Session 1

Page 8: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 88

ObjectivesSTATEMENT FORMATSTATEMENT FORMAT

1 10 16 30

label operation operands comments

e.g..

INIT1 LA R5,4 ;INITIALISE REGISTER 5

Rules for choosing labels:Rules for choosing labels:

• maximum 8 characters

• Alphabets, digits, @, #, $

• First character should not be a digit

• label should begin in column 1

Assembler/Session 1

Page 9: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 99

ObjectivesSample programSample program

Col1 Col10 Col.16

L 2,A

A 2,B

ST 2,ANS

…..

…..

A DC F’15’

B DC F’20’

ANS DS F

Assembler/Session 1

Page 10: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 1010

ObjectivesSTATEMENT FORMATSTATEMENT FORMAT

Operation

• One of the 200 M/C instruction mnemonics (eg. MVC)

Operand

• can be a register or memory location

Continuing a statement

• Place any character in column 72 of the line to be continued

• Continue the statement from column 16 of next line

• Maximum 2 continuation lines for a statement

Assembler/Session 1

Page 11: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 1111

ObjectivesSTATEMENT FORMATSTATEMENT FORMAT

Comment Statement

• * in column 1

• Any text in columns 2 - 71

Note : Fields separated by one or more blanks

Assembler/Session 1

Page 12: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 1212

ObjectivesTYPES OF INSTRUCTIONS TYPES OF INSTRUCTIONS

1. Machine Instructions

2. Assembler Instructions (Directives)

3. Macro Instructions

Assembler/Session 1

Page 13: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 1313

ObjectivesREGISTERSREGISTERS

Registers are storage areas inside the processor

Advantages:

- No need to retrieve data from main storage

(saves time)

- Shared resource that allows inter

communication between programs

Assembler/Session 1

Page 14: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 1414

ObjectivesREGISTERSREGISTERS

General purpose registers:

* 16 registers available

* Numbered 0 - 15

* Holds 32 bits (4 bytes) of data (1 Full word)

Floating point registers:

* 4 registers available

* Numbered 0,2,4,6

* Holds 64 bits (8 bytes) of data

Note : The registers 0, 1, 13, 14 and 15 are reserved for special purpose

By IBM convention these registers are used for calling subprograms

Assembler/Session 1

Page 15: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 1515

ObjectivesDATA REPRESENTATIONDATA REPRESENTATION

Binary fields

- Always fixed in length, either 2 or 4 bytes

(Full word or Half word)

- Negative numbers stored in 2’s complement form

Examples:

A DC H’295’ 01 27

B DC H’-75’ FF 35

Assembler/Session 1

Page 16: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 1616

Objectives2’s complement form2’s complement form

Assembler/Session 1

How to identify a negative number?How to identify a negative number?

- - Leading bit contains a 1 (In Hex 8 to F)Leading bit contains a 1 (In Hex 8 to F)

How to convert to a negative numberHow to convert to a negative number??

-First switch the bits (1 to 0 , 0 to 1)First switch the bits (1 to 0 , 0 to 1)

-Finally add 1Finally add 1

Page 17: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 1717

ObjectivesBoundary requirementsBoundary requirements

Assembler/Session 1

Full word – Should begin in a full word boundary

(Achieved by aligning with 0F)

Half word – Should begin in a half word boundary (Achieved by aligning with 0H)

How to find:

The starting address of Full word should end with 0, 4, 8 or C and Half words should end with 0, 2, 4, 6, 8, A, C or E

Page 18: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 1818

ObjectivesDATA REPRESENTATIONDATA REPRESENTATION

Characters

- One byte (EBCDIC form)

- Character representation of decimal digits is called

Zoned Decimal (first nibble is zone and next is digit)

Zone digit Zone Code

0 - 9 + C, A,E,F

- D, B

+, - , blank Blank F

Assembler/Session 1

Page 19: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 1919

ObjectivesDATA REPRESENTATIONDATA REPRESENTATION

Floating Point Numbers - Always fixed in length, 4, 8 or 16 bytes

(Full word, double word, double double word)

- Left most bit represents sign

(0 - positive; 1 - negative)

- Next 7 bits represent exponent

- Remaining bytes represent the fraction

Assembler/Session 1

Page 20: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 2020

ObjectivesDATA REPRESENTATIONDATA REPRESENTATION

Decimal numbers ( Packed Decimal representation)- Each byte but the rightmost has 2 decimal digits (0-9)

- The right most byte contains a digit in the left half and a sign indicator in the right

Sign indicator: C- Positive

D - Negative

Example: 753 - 7 5 3 C

Assembler/Session 1

Page 21: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 2121

ObjectivesAddressing Operands

• Register addressing

• Base, displacement addressing

• Base, index and displacement addressing

Assembler/Session 1

Page 22: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 2222

ObjectivesINSTRUCTION FORMATS

RR opcode R1 R2

SI opcode I2 B1 D1

SS opcode L B1 D1 B2 D2

SS opcode L1 L2 B1 D1 B2 D2

RX opcode R1 X2 B2 D2

RS opcode R1 R3 B2 D2

Assembler/Session 1

Page 23: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 2323

ObjectivesAddressing RX Operands:

Implicit format:

L 3,VAR

Explicit format:

L 3,100(0,12)

Register Displacement Index reg Base reg

Assembler/Session 1

Page 24: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 2424

Assembler LanguageAssembler LanguageAssembler LanguageAssembler Language

SESSION 2SESSION 2

Addressing

Assembler/Session 2

Page 25: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 2525

ObjectivesSTORAGE DEFINITIONSSTORAGE DEFINITIONS

Two ways to define fields :

1. Define a field and initialize the data in it using the DC assembler directive

2. Define a field without initializing using the DS assembler directive

Assembler/Session 2

Page 26: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 2626

ObjectivesSTORAGE DEFINITIONSSTORAGE DEFINITIONS

Format:label {DS/DC} dtLn’value’

where : label : Label used to name the field (optional)

d : Duplication factor (optional)

t : Type of data ( required)

Ln : The letter ‘L’ followed by the length of the field in

bytes (optional)

value : Represents the value enclosed in apostrophes

Assembler/Session 2

Page 27: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 2727

ObjectivesSTORAGE DEFINITIONSSTORAGE DEFINITIONS

Examples:ALPHA DC C’ABC EF’

FLDS DS 3CL2

H1 DC H’29’

F2 DC F’-10’

F1 DC X’03’

F3 DC PL4’-72’

Note : for character constants truncation or padding is to the right and for almost all others it is to the left.

Assembler/Session 2

Page 28: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 2828

ObjectivesSTORAGE DEFINITIONSSTORAGE DEFINITIONS

DC TYPES Type Implied Alignment Data Representation

Length

C - None Character

X - None Hex digits

B - None Binary digits

F 4 Full word Binary

H 2 Half word Binary

E 4 Full word Floating point

D 8 Double word Floating point

L 16 Double word Floating point

P - None Packed decimal

Assembler/Session 2

Page 29: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 2929

ObjectivesSTORAGE DEFINITIONSSTORAGE DEFINITIONS

Data Representation in other languages:

Assembler FORTRAN COBOL PASCAL BASIC

Language

DC Type

C Character Display String String

F, H Integer COMP Integer Integer

E Real COMP-1 Real Single

precision

D Double COMP-2 Real Double

Precision Precision

X, B Logical N/A Boolean Hex

P N/A COMP-3 N/A N/A

Assembler/Session 2

Page 30: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 3030

ObjectivesSTORAGE DEFINITIONS

Literals• A literal is a constant preceded by an equals sign ‘=‘.

• Can be used as a main-storage operand but not as a destination field of an instruction

• Causes assembler to define a field that is initialized with the data specified

• All constants defined by literals are put by the assembler in a literal pool, usually at the very end of the program (Unless changed by LTORG instruction)

L R4,=F’1’

Assembler/Session 2

Page 31: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 3131

ObjectivesExercise 1 Q 1 and Q2.

2.What will happen in the following cases

DC CL5’123’

DC CL5’123456’

DC X’A1245’

DC XL2’A1245’

DC XL5’A1245’

DC F’19’

DC FL1’513’

Assembler/Session 2

Page 32: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 3232

ObjectivesEQU (Assembler directive)

• The EQU statement is used to associate a fixed value with a symbol

R4 EQU 4

DRBACK EQU OUT+25

Assembler/Session 2

Page 33: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 3333

ObjectivesESTABLISHING ADDRESSABILITYESTABLISHING ADDRESSABILITY

• By establishing the addressability of a coding section, you can refer to the symbolic addresses defined in it in the operands of machine instruction

• Assembler will convert the implicit addresses into explicit addresses (base - displacement form)

Assembler/Session 2

Page 34: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 3434

ObjectivesESTABLISHING ADDRESSABILITYESTABLISHING ADDRESSABILITY

To establish the address of a coding section :

• Specify a base address from which the assembler can compute displacements

• Assign a base register to contain this base address

• Write the instruction that loads the base register with the base address

Note: The base address should remain in the base register throughout the execution of the program

Assembler/Session 2

Page 35: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 3535

ObjectivesESTABLISHING ADDRESSABILITYESTABLISHING ADDRESSABILITY

Establishing Base Register

The USING and DROP assembler instructions enable one to use expressions representing implicit addresses as operands of machine instruction statements, leaving the assignment of base registers and the calculation of displacements to the assembler

USING - Use Base Address Register

- allows one to specify a base address and assign one or more base registers

Assembler/Session 2

Page 36: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 3636

ObjectivesESTABLISHING ADDRESSABILITYESTABLISHING ADDRESSABILITY

To use the USING instruction correctly, one should know :

• which locations in a coding section are made addressable by the USING statement

• where in a source module you can use these established addresses as implicit addresses in instruction operands

Format:

symbol USING base address,basereg1| basereg2|,..

e.g. USING BASE,9,10,11

USING *,12

Assembler/Session 2

Page 37: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 3737

ObjectivesESTABLISHING ADDRESSABILITYESTABLISHING ADDRESSABILITY

Range of a USING instruction:• The range of a USING instruction is the 4096

bytes beginning at the base address specified in the USING instruction

Domain of a USING instruction• The domain of a USING instruction begins

where the USING instruction appears in a source module to the end of the source module

Assembler/Session 2

Page 38: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 3838

ObjectivesESTABLISHING ADDRESSABILITYESTABLISHING ADDRESSABILITY

The assembler converts implicit address references into their explicit form:

• if the address reference appears in the domain of a USING instruction

• if the addresses referred to lie within the range of the same USING instruction

Guideline:

• Specify all USING instructions at the beginning of the source module

• Specify a base address in each USING instruction that lies at the beginning of each control section

Assembler/Session 2

Page 39: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 3939

ObjectivesRELATIVE ADDRESSINGRELATIVE ADDRESSING

• Relative addressing is the technique of addressing instructions and data areas by designating their location in relation to the location counter or to some symbolic location

ALPHA LR 3,4

CR 4,6 ALPHA+2 or BETA-4

BCR 1,14

BETA AR 2,3

Note : Always avoid using relative addressing

Assembler/Session 2

Page 40: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 4040

Assembler LanguageAssembler LanguageAssembler LanguageAssembler Language

SESSION 3 & 4

Machine Instructions

Assembler/Session 3 & 4

Page 41: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 4141

ObjectivesHANDLING CHARACTER DATAHANDLING CHARACTER DATA

Move Character Instruction (MVC)

• Copy data from one place in memory to another

Format : MVC operand1,operand2

S1(L), S2 - implicit

D1(L,B1),D2(B2) - explicit

e.g...

MVC INPUT(5),OUTPUT

Assembler/Session 3 & 4

Page 42: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 4242

ObjectivesHANDLING CHARACTER DATAHANDLING CHARACTER DATA

Move Immediate Instruction (MVI)

• Can move only one byte of constant data to a field

Format : MVI operand1,operand2

S1,I2 - implicit

D1(B1),I2 - explicit

e.g..

MVI CTL,C’B’

Assembler/Session 3 & 4

Page 43: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 4343

ObjectivesHANDLING CHARACTER DATAHANDLING CHARACTER DATA

Advanced Techniques

1. Explicit lengths and relative addressing

MVC PAD+6(4),=CL4’ ‘

PAD DS CL10

2. Overlapping fields and the MVC instruction

MVC FLDB,FLDA

FLDA DC C’A’

FLDB DS CL3

Limitation of MVC : Can only move 256 bytes

Assembler/Session 3 & 4

Page 44: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 4444

ObjectivesHANDLING CHARACTER DATAHANDLING CHARACTER DATA

Moving more than 256 characters: MVCL instruction

Uses 2 pairs of even-odd pair of registers

Format : MVCL R1,R2 (Both are even registers)

Reg R1 – Address of destination R1+1 – Length

Reg R2 - Source R2+1 – Padding character (1st 8 bits) and Length

Eg: LA 2,Q

LA 3,2000

LA 4,P

LA 5,1500

MVCL 2,4

Assembler/Session 3 & 4

Page 45: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 4545

ObjectivesHANDLING CHARACTER DATAHANDLING CHARACTER DATA

Comparison Instructions

• Compares 2 values - the values are found in fields, in registers or in immediate data

CLC - Compare logical character

e.g. CLC FLDA,FLDB

CLI - Compare logical immediate

e.g. CLI FLDA,C’K’

Assembler/Session 3 & 4

Page 46: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 4646

ObjectivesExercise 2 Q1 and Q2

2. What will be the effect of the following instructions :

MVI OUTAREA,C’ ‘

MVCOUTAREA+1(132),OUTAREA

OUTAREA DS 133C

Assembler/Session 3 & 4

Page 47: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 4747

ObjectivesBINARY INSTRUCTIONSBINARY INSTRUCTIONS

Three types of binary instructions

•Full word

•Half word

•Register

The Binary Move Instructions

L, LH, LR ,ST, STH

Type : R,X Register and indexed storage

e.g... L 5,FULL LR 5,7

STH 7,HALF

Assembler/Session 3 & 4

Page 48: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 4848

ObjectivesBINARY INSTRUCTIONSBINARY INSTRUCTIONS

Note : Do not mix up the instruction types and field types

e.g.

LH 5,FULL - right half of Reg 5 gets 1st 2 bytes at FULL

L 6,HALF - Reg 6 gets 4 bytes starting from HALF

ST 3,RES - 4 bytes of reg 3 are stored starting from RES

RES DS H

HALF DC H’15’

FULL DC F’8’

Assembler/Session 3 & 4

Page 49: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 4949

ObjectivesBINARY INSTRUCTIONSBINARY INSTRUCTIONS

Binary Addition (A, AH and AR)

• Fixed-point overflow occurs when the sum will not fit in the receiving register

• Type R-X

e.g.

A 5,FULL

AH 6,HALF

AR 7,3

Assembler/Session 3 & 4

Page 50: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 5050

ObjectivesBINARY INSTRUCTIONSBINARY INSTRUCTIONS

Binary Subtraction (S, SH and SR)

• Type R-X

e.g.

S 5,FULL

SH 6,HALF

SR 7,3

Assembler/Session 3 & 4

Page 51: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 5151

ObjectivesBINARY INSTRUCTIONSBINARY INSTRUCTIONS

Binary comparisons (C, CH and CR)

e.g.

C 5,FULL

CH 6,HALF

CR 7,3

Condition code set as HIGH, LOW or EQUAL

Assembler/Session 3 & 4

Page 52: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 5252

ObjectivesBinary Multiplication (M, MR, MH)

Format : M op1,op2

op1 : An even numbered register; refers to an even-odd pair of registers

(any register in case of half word format)

op2 : storage area (full word/half word/register)

Assembler/Session 3 & 4

Page 53: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 5353

Binary Multiplication (M, MR, MH) ...

Function : The value in OP2 is multiplied by the value in the odd register of the even-odd pair and the result placed in even-odd registers

(For half word format : The half word specified in OP2 is multiplied by the value in OP1 and result stored in OP1.)

Page 54: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 5454

ObjectivesBINARY INSTRUCTIONSBINARY INSTRUCTIONS

Binary Division (D, DR)

Format: D op1,op2

Type : R-X / R-R

Op1 : An even numbered register. It refers to an even-odd pair of registers. The pair holds the double word to be divided. The even register receives the remainder; the odd register receives the quotient.

e.g. D 4,FULL

Assembler/Session 3 & 4

Page 55: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 5555

ObjectivesBC and BCR Instructions

• instructions that do or do not branch depending on the value of the condition code

Format : BC M1,S2

BCR M1,R2

e.g. BC B’1001’,BRPTA

will cause a branch to the instruction named BRPTA, if at the time the instruction is executed, the condition code is 0 or 3.

Assembler/Session 3 & 4

Page 56: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 5656

ObjectivesBRANCHINGBRANCHING

A branch causes execution to continue at some other instruction in the program

• Branch conditions : Arithmatic B, BZ,BP,BM, BNZ,BNP,BNM,BO,BNO

• Comparison BH, BL, BE, BNH, BNL,BNE

e.g : CLI FLDA,C’K’

BNL GOOD

Assembler/Session 3 & 4

Page 57: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 5757

ObjectivesCONDITION CODE PROCESSINGCONDITION CODE PROCESSING

• condition code occupies 2 bits of PSW• condition code is set by each of a number of instructions• condition code is an extremely important intermediary

between arithmetic instructions and conditional branch instructions

• very important in implementing control structures CC Arithmetic Comparison

0 Zero First operand = Second operand

1 < Zero First operand < Second operand

2 >Zero First operand > second operand

3 Overflow Not set

Assembler/Session 3 & 4

Page 58: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 5858

ObjectivesLPR, LNR and LCR Instructions

Format: LPR,LNR or LCR R1,R2

LPR - Load positive register (Loads into R1 the absolute value of R2)

LNR Load Negative register (Loads into R1 the negative of absolute value of R2)

LCR Load complement register (Loads opposite sign of the value in R2)

Note: R1 and R2 can be the same

Assembler/Session 3 & 4

Page 59: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 5959

ObjectivesBIT MANIPULATIONSBIT MANIPULATIONS

Operation S-I S-S R-R R-X

OR OI OC OR O

AND NI NC NR N

Exclusive OR XI XC XR X

e.g... OI FLDA,X’0F’

NR 5,7

X 9,FULL

Assembler/Session 3 & 4

Page 60: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 6060

ObjectivesBIT MANIPULATIONSBIT MANIPULATIONS

OR Second 0 1 AND Second 0 1

First 0 0 1 First 0 0 0

1 1 1 1 0 1

Exclusive OR

Second 0 1

First 0 0 1

1 1 0

Assembler/Session 3 & 4

Page 61: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 6161

ObjectivesBIT MANIPULATIONSBIT MANIPULATIONS

Testing individual bits - Test under mask (TM)

TM S1,I2

Function : The bits of S1 ( a single byte) are tested under the control of the mask in I2 and condition code is set as ‘all zeroes’, all ones’ or ‘mixed’

e.g. TM EMP,B’00000101’

BNM NEXT

Assembler/Session 3 & 4

Page 62: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 6262

ObjectivesBIT MANIPULATIONSBIT MANIPULATIONS

Bit Shifting Instructions

SLL, SLDL Left logical

SRL, SRDL Right logical

(No condition code set)

SLA, SLDA Left arithmetic

SRA, SRDA Right arithmetic

(Sign bit not affected and condition code set)

e.g. SLL 5,1

SRDA 4,5

Assembler/Session 3 & 4

Page 63: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 6363

ObjectivesBIT MANIPULATIONSBIT MANIPULATIONS

Bit Shifting Instructions

Condition code setting for arithmetic shift instructions

0- Result is zero

1- Result is negative

2- Result is positive

3- Overflow generated

Overflow is generated when a bit other than the sign bit is shifted out

Assembler/Session 3 & 4

Page 64: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 6464

ObjectivesBIT MANIPULATIONS

Translations

• To translate from one bit combination to another

Format : TR S1(L),S2 or S1,S2

S1 : The field whose data is to be translated

S2 : A 256-byte translation table

Function : The value of the original byte is used as a displacement into the translation table. The byte found there replaces the original byte.

e.g. TR WORK,XTABLE

If the source byte is x’40’ (Space), then the displacement into the table is 64. The value in the table at displacement 64 will be replacing the source.

Assembler/Session 3 & 4

Page 65: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 6565

ObjectivesBIT MANIPULATIONS

Assembler/Session 3 & 4

Translations

1 byte - 256 possible combinations

x’00’,x’01’, x’02’, x’03’,…………..x’0F’

x’10’,x’11’,x’12’,…………………..x’1F’

…………………………………………..

x’F1’,x’F2’,x’F3’,…………………x’FF’

The table should start with replacement byte for x’00’ and end with replacement for x’FF’

Page 66: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 6666

ObjectivesBIT MANIPULATIONS (TRT)

Assembler/Session 3 & 4

Translations - TRT (Translate and test register)-Similar to TR but the source is not changed

-Table is searched similar to TR taking the displacement into the table

-Usually employed for editing purposes

-The characters we need to search will have non zeros (x’00’) but other characters will be x’00’.

-Source is searched one character at a time from left to right

-The first nonzero match in the table halts the instruction

-Condition code is set to 1 if match found before last byte, 2 if found at the last and 0 if not found

-Loads address of source operand if found in last 24 bits of register 1, value from the table into last bit of register 2. No bits are changed in both the registers

Page 67: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 6767

ObjectivesBIT MANIPULATIONS (TRT continued)

Assembler/Session 3 & 4

Translations - TRT (Translate and test register)

This example searches for a period X’4B’

The period 4B is decimal 75. So the X’4B’ is placed at the 76th position in the table. (Any non zero character may be placed in the table

Table should be declared as follows:

TABLE DC 75X’00’

DC X’4B’

DC 180X’00’

Page 68: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 6868

ObjectivesNumeric ConversionsNumeric Conversions

1. Conversion to binary (CVB)

Format: CVB operand1,operand2

operand1 : Register

operand2 : a double word (containing

valid packed decimal number)

e.g. CVB 5,DOUBLE

Use : Character data -(PACK)->Packed decimal-(CVB)-> binary

Assembler/Session 3 & 4

Page 69: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 6969

ObjectivesNumeric ConversionsNumeric Conversions

2. Conversion from binary (CVD)

Format: CVD operand1,operand2

operand1 : Register

operand2 : a double word

e.g. CVD 5,DOUBLE

Use : Binary-(CVD)->Packed decimal-(UNPK)-> Character data

Assembler/Session 3 & 4

Page 70: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 7070

ObjectivesNumeric ConversionsNumeric Conversions

3. Conversion from Zoned decimal to packed (PACK) (SS instruction)

Format: PACK operand1,operand2

operand1 : Packed decimal

operand2 : Zoned Decimal

e.g. PACK PACKED(3),ZONED(5)

Assembler/Session 3 & 4

Page 71: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 7171

ObjectivesNumeric Conversions Numeric Conversions

4 Packed decimal to Zoned decimal (UNPACK)

Format: UNPACK operand1,operand2

operand1 : Zoned decimal

operand2 : Packed decimal

e.g. UNPACK ZD(5),PACKED(2)

Assembler/Session 3 & 4

Page 72: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 7272

ObjectivesRelation between CVD,CVB,PACK and UNPACKRelation between CVD,CVB,PACK and UNPACK

Assembler/Session 3 & 4

Binary in Binary in RegisterRegister

PackedPackedDecimalDecimal

Zoned Zoned DecimalDecimal

CVBCVBPACKPACK InputInput

CVDCVD UNPKUNPK OutputOutput

Page 73: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 7373

ObjectivesExample code for Different conversionsExample code for Different conversions

Assembler/Session 3 & 4

PACK PNUM(8),START(3)PACK PNUM(8),START(3)

CVB 7,PNUMCVB 7,PNUM

A 7,=F’1’A 7,=F’1’

CVD 7,PNUMCVD 7,PNUM

UNPK ANS(3),PNUM(8)UNPK ANS(3),PNUM(8)

……

……

START DC C’125’START DC C’125’

ANS DS CL3ANS DS CL3

PNUM DS DPNUM DS D

Page 74: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 7474

ObjectivesPacked decimal operationsPacked decimal operations

Assembler/Session 3 & 4

SS format - OPCODE D1(L1,B1),D2(L2,B2)

AP - Add packed

SP - Subtract packed

ZAP - Zero and add packed

MP - Multiply packed

DP - Divide packed

CP - Compare packed

Note: All these operations ignore the decimal places. You have to track the decimal places and edit it with ED and EDMK instructions

Page 75: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 7575

ObjectivesPacked decimal operationsPacked decimal operations

Assembler/Session 3 & 4

Advanced instructions:SRP - Shift and Round packed OPCODE D1(L,B1),D2(B2),I3

First operand - Memory location including length

Second operand - Direction and number of places to shift

Third operand - Whether to round or not

-------------------------------------------------------------------------

Second operand, <= 32, left shift is done and 33 to 64 right shift is done.

Number for right shift = ( 64 - number of digits to be shifted)

(No rounding is involved in left shift

Page 76: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 7676

ObjectivesPacked decimal operationsPacked decimal operations

Assembler/Session 3 & 4

Advanced instructions: (SRP continued)NUM is a 5 byte packed decimal number and contains 001234567C.

What is the value in number after each of these instructions?

1. SRP NUM(5),2,0

2. SRP NUM(5),62,0

3. SRP NUM(5),62,5

4. SRP NUM(5),60,5

Page 77: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 7777

ObjectivesPacked decimal operationsPacked decimal operations

Assembler/Session 3 & 4

Advanced instructions:MVZ - Move Zone (Moves the first half of each byte)

MVN - Move numeric (Moves the second half of each byte)

MVO - Move with offset

EG: Multiply A by 100 where value of A is 123

MVC TEMP(3),A

MVN TEMP+2(1),=X’00’

MVZ TEMP+3(1),=X’00’

MVN TEMP+3(1),A+2

A DC PL3’123’

TEMP DS PL4

Page 78: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 7878

ObjectivesEditing the output for printingEditing the output for printing

ED and EDMK instructions ( D1(L,B1), D2(B2)) (Pattern and PD number)

Patterns:

x’20’ - Digit selector

x’21’ - Significance selector

x’22’ - Field separator x’60’ - Sign indicator

Pattern and the packed decimal number processed from left 1 byte at a time

X 0 1 2 3 4 5 6 C (Instruction: ED P(12),X)

Fill Character

P 40 20 20 6B 20 21 20 4B 20 20 60 40 (Before execution)

P 40 40 F1 6B F2 F3 F4 4B F5 F6 40 40 (After execution)

1 , 2 3 4 . 5 6 (Last 2 bytes spaces since number is positive)

Assembler/Session 3 & 4

……

……

Page 79: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 7979

ObjectivesEditing the output for printingEditing the output for printing

Assembler/Session 3 & 4

Values beingexamined

Action taken

Patternbyte

PD digit New pattern New state ofSI

Digitselector

0

1-9

Fill characterdigit inEBCIDIC

Off

OnSignificance starter

01-9

Fill character

digit inEBCIDIC

On

OnFieldseperator

None Fill character Off

When thesignificantindicator is off

Any otherbyte

None Fill character Off

Digitselector

0-9 digit inEBCIDIC

On

Significance starter

0-9 digit inEBCIDIC

On

Fieldseperator

None Fill character Off

When thesignificantindicator is on

Any otherbyte

None Pattern bytenot changed

On

Page 80: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 8080

ObjectivesEditing the output for printingEditing the output for printing

Assembler/Session 3 & 4

-ED and EDMK can detect the difference between significant and non significant digits ie between leading and non leading zeros

- Significance starter forces all subsequent digits to be considered significant

-When significance indicator is off and detection of a significant digit turns it on, the address of that significant digit placed in 8-31 of register 1 by EDMK

-EDMK allows a floating currency and/or algebraic sign but ED does not allow

Page 81: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 8181

ObjectivesTABLE PROCESSINGTABLE PROCESSING

A table is a named storage structure consisting of subunits or entries

e.g. RATE DS 6F

L 4,RATE+8

Accessing table elements with indexed storage operands:

e.g. LH 9,=F8’

L 5,RATE(9) (9 - index register)

Assembler/Session 3 & 4

Page 82: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 8282

ObjectivesMulti-purpose branching instructions

Convenient when counted repetition structure (table processing) is needed

• Branch on count (BCT and BCTR)

Format: BCT op1,op2 (R-X)

Function: First the op1 value is decremented by 1. Second the branch is taken to the address specified in op2 only if the value in op1 is not 0.

e.g. LH 9,=H’12’

REPEAT EQU *

..

BCT 9,REPEAT

Assembler/Session 3 & 4

Page 83: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 8383

Objectives• Branch on index high and branch on index low or equal (BXH

and BXLE)

Format: BXLE op1,op2,op3

BXH

op1 : A register known as the index register

op2 : A even-odd pair of registers

Even register - increment register

Odd register - Limit register

op3 : A storage operand. This is the branch address.

Assembler/Session 3 & 4

Page 84: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 8484

ObjectivesFunction : First, the value in the increment register is added to the indexed register. Second, the branch is taken only when the value in the index register is ‘lower than or equal to’ / ‘higher than’ the value in the limit register

Useful when the same register is to be used as the count and index register

Assembler/Session 3 & 4

Page 85: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 8585

ObjectivesBXLE - ‘DO UNTIL’ repetitions

BXH- ‘DO WHILE’ repetitions

e.g... LH 7,=H’0’ index

LH 2,=H’2’ increment amount

LH 3,=H’18 the limit

---

REPEAT ...

LH 6,TABLE(7)

...

BXLE 7,2,REPEAT

Assembler/Session 3 & 4

Page 86: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 8686

ObjectivesLoad instructions with additional features

• Load and Test (LTR)

e.g... LTR 15,15

BNZ ERROR

• Load Address (LA)

LA R1,D2(X2,B2)

Assembler/Session 3 & 4

Page 87: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 8787

ObjectivesUSING EQUATESUSING EQUATES

• To associate a fixed value with a symbol

• Useful for length and relative address calculation

e.g. TABLE DS 0H

DC C’01

DC C’02’

...

TBLEND EQU *

TBLSIZE EQU TBLEND-TABLE

Assembler/Session 3 & 4

Page 88: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 8888

ObjectivesUSING EQUATESUSING EQUATES

Can be used for the following purposes:

1. To assign single absolute values to symbols.

2. To assign the values of previously defined symbols or expressions to new symbols, thus allowing you to use different mnemonics for different purposes.

3. To compute expressions whose values are unknown at coding time or difficult to calculate. The value of the expressions is then assigned to a symbol.

Assembler/Session 3 & 4

Page 89: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 8989

Assembler LanguageAssembler LanguageAssembler LanguageAssembler Language

SESSION 5

Program Sectioning

Assembler/Session 5

Page 90: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 9090

ObjectivesBeginning and End of Source ModulesBeginning and End of Source Modules

• Code a CSECT segment before any statement that affects the location counter

• END statement is required as the last statement in the assembly

Assembler/Session 5

Page 91: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 9191

ObjectivesCONTROL SECTIONSCONTROL SECTIONS

•A source module can be divided into one or more control sections

•A control section is the smallest subdivision of a program that can be relocated as a unit

Assembler/Session 5

Page 92: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 9292

• At coding time, establish the addressability of each control section within the source module, and provide any symbolic linkages between control sections that lie in different source modules.

• Initiated by using the START or CSECT instruction

CONTROL SECTIONSCONTROL SECTIONS

Page 93: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 9393

ObjectivesCONTROL SECTIONSCONTROL SECTIONS

• Any instruction that affects the location counter, or uses its current value, establishes the beginning of the first control section.

Assembler/Session 5

Page 94: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 9494

Format of CSECT:

Name Operation Operand

Any symbol CSECT Not required

or blank

Note: The end of a control section or portion of a control section is marked by (a) any instruction that defines a new or continued control section, or (b) the END instruction.

CONTROL SECTIONSCONTROL SECTIONS

Page 95: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 9595

ObjectivesDUMMY SECTIONSDUMMY SECTIONS

• A dummy control section is a reference control section that allows you to describe the layout of data in a storage area without actually reserving any virtual storage.

Assembler/Session 5

Page 96: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 9696

• Use the DSECT instruction to initiate a dummy control section or to indicate its continuation.

Format of DSECT:

Name Operation Operand

Any symbol DSECT Not required

or blank

DUMMY SECTIONSDUMMY SECTIONS

Page 97: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 9797

ObjectivesDUMMY SECTIONSDUMMY SECTIONS

To use a dummy section :

• Reserve a storage area for the unformatted data

• Ensure that this data is loaded into the area at execution time

Analogy: Cobol copybook

Assembler/Session 5

Page 98: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 9898

• Ensure that the locations of the symbols in the dummy section actually correspond to the locations of the data being described

• Establish the addressability of the dummy section in combination with the storage area

You can then refer to the unformatted data symbolically by using the symbols defined in the dummy section.

DUMMY SECTIONSDUMMY SECTIONS

Page 99: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 9999

ObjectivesASMBLY2 CSECT

BEGIN BALR 2,0

USING *,2

... Reg 3 points to data area

LA 3,INPUT

USING INAREA,3

CLI INCODE,C'A'

BE ATYPE

...

ATYPE MVC WORKA,INPUTA

MVC WORKB,INPUTB

. .

Assembler/Session 5

Page 100: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 100100

WORKA DS CL20

WORKB DS CL18

INPUT DS CL39

...

INAREA DSECT

INCODE DS CL1

INPUTA DS CL20

INPUTB DS CL18

...

END

Page 101: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 101101

ObjectivesAssembler DirectivesAssembler Directives

TITLE : To provide headings for each page of the assembly listing of the source modules.

EJECT : To stop the printing of the assembler listing on the current page, and continue the printing on the next page.

ORG : To reset the location counter

Assembler/Session 5

Page 102: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 102102

LTORG : A literal pool is created immediately after a LTORG instruction or, if no LTORG instruction is specified, at the end of the first control section.

PRINT : To control the amount of detail to be printed in the listing of programs.

PRINT NOGEN / GEN

Assembler DirectivesAssembler Directives

Page 103: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 103103

Assembler LanguageAssembler LanguageAssembler LanguageAssembler Language

SESSION 6

Writing a complete program

Assembler/Session 6

Page 104: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 104104

ObjectivesProgram Entry and Exit LogicProgram Entry and Exit Logic

Program entry - Preserve register contents

Program Exit - Restore register contents

Register save area

Always calling program provides a save area of 18 Full words long used for storage of registers

Save area address passed through register 13 by IBM convention

Assembler/Session 6

Page 105: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 105105

ObjectivesA register save area (18 consecutive full words)

Word Address Contents

1 SAV

2 SAV+4 Address of calling program’s save area

3 SAV+8 Address of called program’s save area

4 SAV+12 Contents of Register 14

5 SAV+16 Contents of Register 15

6 SAV+20 Contents of Register 0

...

18 SAV+68 Contents of Register 12

Assembler/Session 6

Page 106: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 106106

ObjectivesResponsibilities of called program

Program entry conventions

1.Save contents of registers 0-12,14 & 15 in calling program’s save area

2.Establish base register

3.Store calling program’s save area in the 2nd word of its own save area

Assembler/Session 6

Page 107: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 107107

ObjectivesProgram entry conventions (contd..)

4. Store the address of its register save area in the third word of the calling program’s register save area

(The addresses in the 3d word of save area establish a chain of register save areas. This will be useful in reading the dump when program crashes).

Assembler/Session 6

Page 108: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 108108

ObjectivesResponsibilities of called program (contd..)

Program Entry

STM R14,R12,12(R13)

BALR R12,0

USING *,R12

ST R13,SAVOWN+4 store calling programs save area

LR R14,R13

LA R13,SAVOWN Reg 13 contains current prog’s SA ...

ST R13,8(R14)

Assembler/Session 6

Page 109: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 109109

ObjectivesResponsibilities of called program (contd..)

Program Exit conventions

1. Restore registers 0-12 and 14

2. Place the address of the save area provided by the calling program in Reg 13

3. Place a return code in the low order byte of register 15 if one is required. Otherwise restore register 15.

Assembler/Session 6

Page 110: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 110110

ObjectivesResponsibilities of called program (contd..)

Program Exit

L R13,4(R13)

LM R14,R12,12(R13)

BR R14

Assembler/Session 6

Page 111: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 111111

ObjectivesResponsibilities of calling program

1. Register 13 must contain the address of a register save area.

2. Register 15 should be set to the beginning address of the subroutine

L R15,=V(SUBENTRY)

where SUBENTRY is the entry address (usually the CSECT name) of the subroutine

Assembler/Session 6

Page 112: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 112112

ObjectivesResponsibilities of calling program (contd...)

3. Register 14 should have the return address

4. Register 1 should have the address of the parameter list

A BALR instruction stores the address of the next instruction in the calling program into register 14 and transfers control to the called subroutine

BALR R14,R15

Assembler/Session 6

Page 113: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 113113

ObjectivesPassing parameters to a subroutine

• The standard interface requires that addresses of parameters be placed in a block of storage, and the address of the block be loaded into register 1 as the subroutine is called

• Both input and output parameters are treated the same way

e.g... ADDS DC A(T)

DC A(U)

DC A(V)

LA R1,ADDS

Assembler/Session 6

Page 114: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 114114

ObjectivesR1 Main storage

Addr of parmlist Parmlist parm3

Addr of parm1

Addr of parm2 parm1

Addr of parm3 parm2

Assembler/Session 6

Page 115: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 115115

ObjectivesCalled subroutine B may get the second parameter by

L R3,4(,R1)

L R8,0(,R3)

Assembler/Session 6

Page 116: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 116116

ObjectivesRegisters with special use

R0 : Contains single word output of a subroutine

R1 : contains the address of an area of main storage that contains addresses of parameters

Assembler/Session 6

Page 117: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 117117

ObjectivesRegisters with special use (contd...)

R14 : Contains the return address, the address in the calling routine to which a subroutine should return control when finished

R15 : contains the address of the entry point in the subroutine

R13 : contains the address of an area in which register contents can be stored by a subroutine

Assembler/Session 6

Page 118: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 118118

ObjectivesThe subroutine RANDOM

RANDOM STM R14,R12,12(R13)

BALR R12,0

USING *,R12

L R7,RN

M R6,=F’65541’

ST R7,RN

LR R0,R7

LM R1,R12,24(R13)

BR R14

RN DC F’8193’

Assembler/Session 6

Page 119: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 119119

ObjectivesSubroutine RDIGIT

RDIGIT STM R14,R12,12(R13)

BALR R12,0

USING *,R12

ST R13,SAV+4

LA R13,SAV

...

L R15,RANDAD

BALR R14,R15

...

L R13,SAV+4

LM R14,R15,12(R13)

LM R1,R12,24(R13)

BR R14

SAV DS 18F

RANDAD DC A(RANDOM)

Assembler/Session 6

Page 120: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 120120

ObjectivesLinkage ConventionsLinkage Conventions

•Program divided into 2 or more source modules

•Source module divided into 2 or more control sections

•For link-editing, a complete object module or any individual control section of the object module can be specified

Assembler/Session 6

Page 121: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 121121

ObjectivesCommunicating between program parts

• To communicate between 2 or more source modules, symbolically link them together

• To communicate between 2 or more control sections within a source module, establish proper addressability

Assembler/Session 6

Page 122: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 122122

ObjectivesEstablishing symbolic linkage

• Identify external symbols in the EXTRN or WXTRN instruction or the V-type address constant

• provide A-type or V-type address constants to reserve storage for addresses represented by external symbols

• In the external source modules, identify these symbols with the ENTRY instruction

(name entry of a START or CSECT instruction is automatically identified as an entry symbol)

External symbol dictionary

Assembler/Session 6

Page 123: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 123123

ObjectivesEstablishing symbolic linkage (contd...)

e.g. program A

EXTRN TABLEB

WXTRN TABLEB

TABADR DS V(TABLEB)

program B

ENTRY TABLEB

TABLEB DS ...

Assembler/Session 6

Page 124: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 124124

ObjectivesAddress Constants (A and V)

• An address constant is a main storage address contained in a constant

• A V-type constant is the value of an external symbol - a relocatable symbol that is external to the current control section.

Used for branching to locations in other control sections

e.g L 5,ADCON

ADCON DC A(SOMWHERE)GSUBADDC V(READATA)

Assembler/Session 6

Page 125: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 125125

Assembler LanguageAssembler LanguageAssembler LanguageAssembler Language

SESSION 7

Assemble and Link Program

Assembler/Session 7

Page 126: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 126126

ObjectivesProcessing of Instructions

Time/ M/C Assembler ENTRY Macro

Activity instructions. EXTRN Instr.

Code source m/c DC,DS

instruc.

Preassembly Refer to macro

instruc.

Assembly object code

LKED

Prog fetch

Execution data area form data

area in load mod

Processing of Instructions

Time/ M/C Assembler ENTRY Macro

Activity instructions. EXTRN Instr.

Code source m/c DC,DS

instruc.

Preassembly Refer to macro

instruc.

Assembly object code

LKED

Prog fetch

Execution data area form data

area in load mod

Assembler/Session 7

Page 127: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 127127

ObjectivesJCL ‘ parm’ processing

EXEC PGM=pgmname,PARM=

When program gets control :

•Register 1 contains the address of a full word on a full word boundary in program’s address space

•the high order bit of this full word is set to 1

(this convention is to indicate the last word in a variable length parameter list)

Assembler/Session 7

Page 128: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 128128

JCL ‘ parm’ processing ...

• Bits 1-31 of the full word contain the address of a 2-byte length field on a half word boundary

• The length field contains a binary count of the no. of bytes in the PARM field which immediately follows the length field

Page 129: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 129129

ObjectivesCOBOL to Assembler

CALL asmpgm USING COMM-AREA

PL/I to Assembler

DCL ASMSUB ENTRY OPTIONS(ASSEMBLER)

CHARSTRING CHAR(25);

CALL ASMSUB(CHARSTRING);

Ref : PL/I Programming Guide, COBOL programming Guide

Assembler/Session 7

Page 130: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 130130

Assembler LanguageAssembler LanguageAssembler LanguageAssembler Language

SESSION 8

Macro Language

Assembler/Session 8

Page 131: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 131131

ObjectivesMacros

• Short source routines written and stored in libraries

•Assembler inserts the source statements in the program where the macro appears

Assembler/Session 8

Page 132: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 132132

Macro Definition

Format :

•A header statement

•A prototype

•Model statements

•A trailer statement

Page 133: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 133133

ObjectivesHeader statement:

MACRO

Prototype:

&name MOVE &TO,&FROM,&LENGTH

Model statements:

A set of machine and assembler instructions

Trailer statement:

&name MEND

Assembler/Session 8

Page 134: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 134134

ObjectivesMacro Instruction:

• A statement containing the name of a macro

• when expanded, the symbolic parameters in the model statements are replaced by corresponding parameters from the macro instructions

• symbolic parameters may be positional or keyword

Assembler/Session 8

Page 135: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 135135

Macro Instruction ...MACRO

&LABEL HALFSWAP &REG,&SV

&LABEL ST &REG,&SV

SLL &REG,8

IC &REG,&SV

SLL &REG,8

IC &REG,&SV+1

MEND

Page 136: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 136136

ObjectivesSET Symbols (global or local)

3 types :

• arithmetic (SETA)

• binary (SETB)

• character (SETC)

• SET symbols are declared using,

LCLA LCLB LCLC

GCLA GCLB GCLC

Assembler/Session 8

Page 137: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 137137

ObjectivesFormat:

Label operation operands

symbol-name SETA An expression

SETB

SETC

e.g.

LCLA &A1

GCLA &A2

&A1 SETA 1

&A2 SETA &A1+3

Assembler/Session 8

Page 138: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 138138

ObjectivesAttributes

There are 6 attributes of a symbol or symbolic parameter :

type, length, scaling, integer, count and number

System variable symbols

&SYSINDX, &SYSDATE, &SYSTIME, &SYSECT, &SYSPARM, &SYSLOC

Assembler/Session 8

Page 139: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 139139

ObjectivesConditional Assembly

The assembler can be made to branch and loop among assembler language statements using sequence symbols and the assembler instructions AIF and AGO

Sequence symbol : Period followed by 1 to 7 alphabets or digits of which the first is a letter

e.g. .Z23Ab

Assembler/Session 8

Page 140: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 140140

ObjectivesFormat:

Label Operation Operand

seq symbol AGO seq. symbol or blank

-do- AIF A logical expression

enclosed in parenthesis,

followed by seq symbol

Assembler/Session 8

Page 141: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 141141

A logical expression is composed of one or more relations or values of SETB symbols connected by logical connects AND, OR, AND NOT, OR NOT

A relation consists of 2 arithmetic expressions or 2 character expressions connected by a relational operator EQ, NE, LT, LE, GT, GE

Page 142: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 142142

Objectives e.g.

MACRO

PSRCH &PARAMS,&STRING

GBLB &FOUND

LCLA &I

&FOUND SETB 0

.LP AIF ((&I GE N’&PARAMS) OR &FOUND) .E

&I SETA &I+1

&FOUND SETB (‘&PARAMS(&I)’ EQ ‘&STRING’)

AGO .LP

.E MEND

Assembler/Session 8

Page 143: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 143143

Objectives Accessing QSAM files:

Keywords in DCB parameter: DSORG PS Physical sequential

RECFM F,FA,FB,FBA,V,VBA BLKSIZE Block length

LRECL Record Length

DDNAME Dataset name in JCL

MACRF Macro GM - Get Move GL - Get Locate

PM - Put Move PL - Put locate

Move parameter directly puts the record in the storage area specified while Locate mode Loads the address of the record in Register 1

Assembler/Session 8

Page 144: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 144144

Objectives Accessing VSAM files: ACB macro

AM - VSAM (For documentation)

BUFND - No. of I/O buffers for data control intervals

BUFNI - No. of I/O buffers for index control intervals

BUFSP - Size of an area for data and Index I/O buffers

DDNAME - Filename used in the DD statement. If omitted refers to the ACB macro name

EXLST - Address to the EXLST macro. Generates a list of addresses for user routines

MACRF - Types of processing the file will do

Assembler/Session 8

Page 145: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 145145

Objectives Accessing VSAM files: ACB macro (Continued)

EXLST options:

AM - VSAM

EODAD = (Address, A/N, L) (Load module)

EXCPAD = (Address, A/N, L) (Load module)

JRNAD = (Address, A/N, L) (Load module)

LERAD = (Address, A/N, L) (Load module)

SYNAD = (Address, A/N, L) (Load module)

Active/No, Stored in load module

Assembler/Session 8

Page 146: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 146146

Objectives Accessing VSAM files: RPL macro (Request parameter list)

ACB - Address of the ACB macro

AREA - Address of the work area to be used

AREALEN - Length of the work area (Should be large enough to hold largest record in Move mode and at least 4 bytes in the Locate mode)

RECLEN -Length of the records in the file (For VB you have to put the length before writing using MODCB)

ARG - Label containing the key for the search (Key for KSDS, RRN for RRDS and RBA for ESDS)

OPTCD - 5 sets of groups of parameters

Assembler/Session 8

Page 147: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 147147

Objectives Accessing VSAM files: RPL macro (Continued)

Options for OPTCD:

KEY/CNV/ADR - Access by key,Control interval or Relative byte address

SEQ/DIR/SKP - Sequential processing,Direct, Skip sequential

FWD/BWD - Forward sequential processing,Backward

ARD/LRD -Start seq.processing with ARG specified/ Backward processing from the last record

NUP/NSP/UPD - No updating(Next rec not ready),No updating Next rec ready(DA only), Record updating)

MVE/LOC - Move mode/ Locate mode

Assembler/Session 8

Page 148: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 148148

Objectives Accessing VSAM files:

OPEN - Open the file

CLOSE - Close the file

GET - Read a record

PUT - Store a record

ERASE - Delete a record

POINT - Position for access

Advanced macros: SHOWCB, TESTCB, MODCB

Assembler/Session 8

Page 149: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 149149

Assembler LanguageAssembler LanguageAssembler LanguageAssembler Language

SESSION 9

Other Topics

Assembler/Session 9

Page 150: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 150150

ObjectivesCharacteristics of good assembler program

• has simple, easy to understand logic

• uses mostly simple instructions

• has no relative addressing

• uses subroutines

Assembler/Session 8

Page 151: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 151151

Characteristics of good assembler program ...

• uses DSECTs

• has efficient code (LA R10, 4(0,R10 - A R10,=F’4)

• does not abnormally terminate due to user error

• requests and check feedback from macro instructions

• provides meaningful error messages

Page 152: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 152152

ObjectivesCharacteristics of good assembler program (contd..)

• lets the assembler determine lengths

• has opcodes, operand and comments aligned

• contains meaningful comments

• uses meaningful labels

Assembler/Session 8

Page 153: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 153153

ObjectivesStructured Programming

• To improve design and understandability of a program

• made up of building blocks of subroutines

Conventions for general purpose registers

• Base registers

• Link registers

Assembler/Session 8

Page 154: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 154154

ObjectivesThe EXecute Instruction

• the EX instruction is a R-X type instruction that directs the execution of an instruction called the subject instruction, which is addressed by the second operand

• the subject instruction is in effect a one-instruction subroutine

Assembler/Session 9

Page 155: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 155155

•The subject instruction is modified before execution (though not altered at its main storage location) : bits 8-15 of the instruction ORed with bits 24-31 of register R1 to form the second byte of the instruction actually executed

e.g. Let reg 9 have the length of string to be moved

EX R9,VARMVC

VARMVC MVC A(0),B

The EXecute Instruction (contd...)

Page 156: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 156156

ObjectivesDEBUGGINGDEBUGGING

Exceptions and Interrupts

Interrupts that result directly from attempts at invalid program execution are called program-check interrupts; identified by a code

Interruption code 1 : Operation

Interruption code 2 : Privileged operation

Interruption code 4 : Protection

Interruption code 5 :Addressing

Interruption code 6 :Specification

Assembler/Session 9

Page 157: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 157157

ObjectivesDEBUGGING

Exceptions and Interrupts (contd..)

Interruption code 7 : Data

Interruption code 8 : Fixed-Point Overflow

Interruption code 9 : Fixed-Point Divide

Other Interruption codes ( 3, 10, 11, 12, 13, 14, 15)

Assembler/Session 9

Page 158: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 158158

ObjectivesDEBUGGINGDEBUGGING

Reading dumps

• whenever a program abends an indicative dump is generated

• The completion code is a code furnished by the O/S to designate the reason for the termination of the job step

• In case of program check interruption, the first 2 digits of the completion code is 0C

Assembler/Session 9

Page 159: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 159159

• Locate the entry point of your program

Reading dumps ...

DEBUGGINGDEBUGGING

Page 160: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 160160

ObjectivesDEBUGGINGDEBUGGING

Reading dumps (contd...)

• The register contents are the contents at the point of interruption (the instruction that caused the interrupt is usually the one just before the interrupt address given)

• use address at interrupt and entry address to locate the instruction that caused the program-check interruption

Assembler/Session 9

Page 161: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 161161

ObjectivesDEBUGGINGDEBUGGING

Full and Partial dumps

• //SYSUDUMP DD SYSOUT=A

• SNAP macro

Assembler/Session 9

Page 162: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 162162

Reading the dump

• SAVE AREA trace

• P/P Storage

• Examine register contents, PSW and listed entry point to find the portion of program being executed

• Look at main storage dump to determine the data being used

DEBUGGINGDEBUGGING

Page 163: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 163163

ObjectivesSYSTEM MACROSSYSTEM MACROS

Data Management Macros

DCB - Construct a data control block

OPEN - Logically connect a dataset

CLOSE - Logically disconnect a dataset

GET - Obtain next logical record (queued access)

PUT - Write next logical record (queued access)

READ - Read a block (basic access)

WRITE - Write a block (basic access)

Assembler/Session 9

Page 164: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 164164

ObjectivesSYSTEM MACROSSYSTEM MACROS

Supervisor Services Macros

ABEND - Abnormally terminate a task

CALL - Pass control to a control section

GETMAIN - Allocate virtual storage

FREEMAIN - Free virtual storage

LOAD - Bring a load module into virtual storage

RETURN - return control to the calling program

SAVE - Save register contents

Assembler/Session 9

Page 165: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 165165

ObjectivesSYSTEM MACROSSYSTEM MACROS

Supervisor Services Macros (contd)

SNAP - Dump virtual storage and continue

LINK - Pass control to a Program in Another load module

WTO - Write to operator

Assembler/Session 9

Page 166: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 166166

ObjectivesSYSTEM MACROSSYSTEM MACROS

e.g. File I/O

OPEN (INFILE,INPUT)

GET INFILE,RECAREA

PUT OUTFILE,RECAREA

CLOSE (INFILE)

INFILE DCBDSORG=PS,MACRF=GM,DDNAME=IFILE

OUTFILE DCBDSORG=PS,MACRF=PM,DDNAME=OFILE

(RECFM=,LRECL=,BLKSIZE=,)

Assembler/Session 9

Page 167: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 167167

ObjectivesSYSTEM MACROSSYSTEM MACROS

Three forms :

Standard form : Results in instructions that store into an inline parameter list and pass control to the required program

List form : Provides as out-of-line parameter list

Execute form : Provides the executable instructions required to modify the out-of-line parameter list and pass control to the required program

Assembler/Session 9

Page 168: CTS-PAC Version 2.0 1 Assembler/Session 1 : Course Title : ASSEMBLER LANGUAGE ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Duration : 5 Half - DAYS : Course

CTS-PAC Version 2.0 CTS-PAC Version 2.0 168168

Thank youThank you