You are on page 1of 141

Assembler/Session 1

Course Course Title Title ::

ASSEMBLER ASSEMBLER LANGUAGE LANGUAGE


Duration Duration

:: 5 5 Half Half -- DAYS DAYS

ASM

Version 1.0

Assembler/Session 1

Course Title :

ASSEMBLER LANGUAGE
Duration : 5 Half - DAYS

Assembler/Session 1

Objectives Objectives

Familiarise with IBM 370 Assembly Language

Assembler/Session 1

COURSE SCHEDULE
Introduction

SESSION 1 Day 1

SESSION 2 Day 1
SESSION 3 Day 2

Addressing

Machine Instructions

Assembler/Session 1

COURSE SCHEDULE
SESSION 4 Day 3
SESSION 5 Day 3

Program Sectioning

Assembler Directives

SESSION 6 Day 3 SESSION 7 Day 4

Writing a complete program

Assemble and link program

Assembler/Session 1

COURSE SCHEDULE
SESSION 8 Day 4 SESSION 9 Day 5 Macro Language Other Topics

Assembler/Session 1

Assembler Language
SESSION 1

Assembler/Session 1

INTRODUCTION

Objectives

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

STATEMENT FORMAT
1 label e.g.. INIT1 10 operation

Objectives
16 operands

30 comments

LA R5,4

;INITIALISE REGISTER 5

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

STATEMENT FORMAT

Objectives

Operation One of the 200 M/C instruction mnemonics 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

STATEMENT FORMAT

Objectives

Comment Statement * in column 1 Any text in columns 2 - 71


Note : Fields separated by one or more blanks

Assembler/Session 1

TYPES OF INSTRUCTIONS

Objectives

1. Machine Instructions 2. Assembler Instructions (Directives) 3. Macro Instructions

Assembler/Session 1

Objectives
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

REGISTERS

Assembler/Session 1

Objectives
General purpose registers: * 16 registers available * Numbered 0 - 15 * Holds 32 bits (4 bytes) of data

REGISTERS

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

Assembler/Session 1

DATA REPRESENTATION

Objectives

Binary fields - Always fixed in length, either 2 or 4 bytes (Fullword or Halfword) - Negative numbers stored in 2s complement form

Examples: A DC B DC

H295

01 27

H-75

FF 35

Assembler/Session 1

DATA REPRESENTATION

Objectives
Characters - One byte (EBCDIC form) - Character representation of decimal digits is called Zoned Decimal (first nibble is zone and next is digit) Zone digit
0-9 +, - , blank Zone + Blank Code C D F

Assembler/Session 1

DATA REPRESENTATION

Objectives

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

DATA REPRESENTATION

Objectives

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 753C

Assembler/Session 1

Objectives
Addressing Operands Register addressing Base, displacement addressing Base, index and displacement addressing

Assembler/Session 6

INSTRUCTION FORMATS
RR opcode R1 R2

Objectives
B1 D1

SI

opcode

I2

SS

opcode

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 2

Assembler Language
SESSION 2 Addressing

Assembler/Session 2

STORAGE DEFINITIONS

Objectives

Two ways to define fields : 1. Define a field and initialise the data in it using the DC assembler directive 2. Define a field without initialising using the DS assembler directive

Assembler/Session 2

STORAGE DEFINITIONS

Objectives

Format:
label {DS/DC} dtLnvalue

where :
label d t Ln : Label used to name the field (optional) : Duplication factor (optional) : Type of data ( required) : The letter L followed by the length of the field in bytes (optional) value : Represents the value enclosed in apostrophes

Assembler/Session 2

STORAGE DEFINITIONS

Objectives
CABC EF 3CL2 H29 F-10 X03 PL4-72

Examples:
ALPHA FLDS H1 F2 F1 F3 DC DS DC DC DC DC

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

Assembler/Session 2

STORAGE DEFINITIONS

Objectives
Alignment None None None Full word Half word Full word Double word Double word None

DC TYPES
Type C X B F H E D L P Implied Length 4 2 4 8 16 Data Representation Character Hex digits Binary digits Binary Binary Floating point Floating point Floating point Packed decimal

Assembler/Session 2

STORAGE DEFINITIONS

Objectives
COBOL

Data Representation in other languages:


Assembler FORTRAN Language DC Type C Character F, H Integer E Real D X, B P Double Precision Logical N/A PASCAL BASIC

Display COMP COMP-1 COMP-2 N/A COMP-3

String Integer Real Real Boolean N/A

String Integer Single precision Double Precision Hex N/A

Assembler/Session 2

STORAGE DEFINITIONS

Objectives

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 initialised 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 L R4,=F1

Assembler/Session 2

Objectives
Exercise 1 Q 1 and Q2. 2.What will happen in the following cases DC CL5123 DC CL5123456 DC XA1245 DC XL2A1245 DC XL5A1245 DC F19 DC FL1513

Assembler/Session 2

Objectives
EQU (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

ESTABLISHING ADDRESSABILITY

Objectives

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

ESTABLISHING ADDRESSABILITY

Objectives

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

ESTABLISHING ADDRESSABILITY
Establishing Base Register

Objectives

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

ESTABLISHING ADDRESSABILITY

Objectives

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

ESTABLISHING ADDRESSABILITY

Objectives

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

ESTABLISHING 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

Objectives

Assembler/Session 2

RELATIVE ADDRESSING

Objectives

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 CR BCR AR 3,4 4,6 1,14 2,3

ALPHA+2 or BETA-4

BETA

Note : Always avoid using relative addressing

Assembler/Session 3 & 4

Assembler Language
SESSION 3 & 4 Machine Instructions

Assembler/Session 3 & 4

HANDLING CHARACTER DATA

Objectives

Move Character Instruction (MVC) Copy data from one place in memory to another Format : MVC operand1,operand2 S1(L), S2 - implicit - explicit

D1(L,B1),D2(B2) e.g...

MVC

INPUT(5),OUTPUT

Assembler/Session 3 & 4

HANDLING CHARACTER DATA

Objectives

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
e.g.. MVI CTL,CB

- explicit

DBSS TRAINING CENTRE

Assembler/Session 3 & 4

HANDLING CHARACTER DATA

Objectives
PAD+6(4),=CL4 CL10

Advanced Techniques 1. Explicit lengths and relative addressing


MVC PAD DS

2. Overlapping fields and the MVC instruction


MVC FLDS DC FLDB,FLDA CA CL3

FLDB DS

Assembler/Session 3 & 4

HANDLING CHARACTER DATA

Objectives

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 FLDA,CK

CLI - Compare logical immediate e.g. CLI

Assembler/Session 3 & 4

Objectives
Exercise 2 Q1 and Q2 2. What will be the effect of the following instructions : MVI OUTAREA,C

MVC OUTAREA+1(132),OUTAREA
OUTAREA DS 133C

Assembler/Session 3 & 4

BINARY INSTRUCTIONS

Objectives

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

BINARY INSTRUCTIONS

Objectives

Note : Do not mix up the instruction types and field types e.g.
LH L ST RES DS 5,FULL - right half of Reg 5 gets 1st 2 bytes at FULL 6,HALF - Reg 6 gets 4 bytes starting from HALF 3,RES H H15 F8 - 4 bytes of reg 3 are stored starting from RES

HALF DC FULL DC

Assembler/Session 3 & 4

BINARY INSTRUCTIONS

Objectives

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
AR

6,HALF
7,3

Assembler/Session 3 & 4

BINARY INSTRUCTIONS

Objectives

Binary Subtraction (S, SH and SR)

Type R-X
e.g.
S
SH SR

5,FULL
6,HALF 7,3

Assembler/Session 3 & 4

BINARY INSTRUCTIONS

Objectives

Binary comparisons (C, CH and CR) e.g.


C CH CR 5,FULL 6,HALF 7,3

Condition code set as HIGH, LOW or EQUAL

Assembler/Session 3 & 4

Objectives Binary Multiplication (M, MR, MH)


Format :

op1,op2

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


(any register in case of halfword format) op2 : storage area (fullword/halfword/register)

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.)

Assembler/Session 3 & 4

BINARY INSTRUCTIONS

Objectives
op1,op2

Binary Division (D, DR) Format: Type : D

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.

4,FULL

Assembler/Session 3 & 4

Objectives
A branch causes execution to continue at some other instruction in the program Branch conditions : B, BH, BL, BE, BNH, BNL, BNE, BZ, BNZ, BM, BNM, BO, BNO e.g : CLI FLDA,CK BNL GOOD

BRANCHING

Assembler/Session 3 & 4

CONDITION CODE PROCESSING


condition code occupies 2 bits of PSW condition code is set by each of a number of instructions

Objectives

condition code is an extremely important intermediary between arithmetic instructions and conditional branch instructions very important in implementing control structures
Zero < Zero >Zero Overflow

0 1 2 3

Assembler/Session 3 & 4

BC and BCR Instructions

Objectives instructions that do or do not branch depending on


the value of the condition code

Format

BC

M1,S2

BCR M1,R2 B1001,BRPTA

e.g.

BC

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

BIT MANIPULATIONS

Objectives
S-S OC NC XC R-R OR NR XR O N X

Operation OR AND

S-I OI NI

R-X

Exclusive OR XI e.g... OI NR

FLDA,X0F 5,7

9,FULL

Assembler/Session 3 & 4

BIT MANIPULATIONS

Objectives

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,B00000101

BNM NEXT

Assembler/Session 3 & 4

BIT MANIPULATIONS

Objectives

Bit Shifting Instructions SLL, SLDL Left logical

SRL, SRDL Right logical SLA, SLDA Left arithmetic (sign bit not affected) SRA, SRDA Right arithmetic (& condition code set) e.g. SLL 5,1

SRDA

4,5

Assembler/Session 3 & 4

BIT MANIPULATIONS Translations

Objectives
S1(L),S2 or S1,S2

To translate from one bit combination to another TR

Format :

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

Assembler/Session 3 & 4

BINARY CONVERSIONS

Objectives

1. Conversion to binary (CVB)

Format: CVB operand1,operand2


operand1 : Register operand2 : a double word (containing valid packed decimal number) e.g.
binary

CVB

5,DOUBLE

Use : character data -(PACK)->packed decimal-(CVB)->

Assembler/Session 3 & 4

BINARY CONVERSIONS

Objectives

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

TABLE PROCESSING

Objectives
DS L 6F

A table is a named storage structure consisting of subunits or entries e.g. RATE

4,RATE+8

Accessing table elements with indexed storage operands:


e.g. LH L 9,=H2 5,RATE(9) (9 - index register)

Assembler/Session 3 & 4

Multi-purpose branching instructions


Convenient when counted repetition structure (table processing) is needed

Objectives

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.
REPEAT

LH EQU

9,=H12 *

..
BCT 9,REPEAT

Assembler/Session 3 & 4

Branch on index high and branch on index low or equal (BXH and BXLE)

Objectives
op1,op2,op3

Format:

BXLE 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 addres.

Assembler/Session 3 & 4

Function : First, the value in the increment Objectives 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

BXLE
BXH e.g...

DO UNTIL repetitions

DO WHILE repetitions
LH LH LH 7,=H0 2,=H2 3,=H18 index increment amount the limit

Objectives

--REPEAT ... LH 6,TABLE(7)

...
BXLE 7,2,REPEAT

Assembler/Session 3 & 4

Objectives Load 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

USING EQUATES

Objectives

To associate a fixed value with a symbol Useful for length and relative address calculation e.g.
TABLE DS DC DC ... TBLEND TBLSIZE EQU * EQU TBLEND-TABLE 0H C01 C02

Assembler/Session 3 & 4

USING EQUATES

Can be

Objectives 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 5

Assembler Language
SESSION 5 Program Sectioning

Assembler/Session 5

Beginning and End of Source Modules

Objectives

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

CONTROL SECTIONS

Objectives

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

CONTROL SECTIONS

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

Assembler/Session 5

CONTROL SECTIONS

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

Objectives

CONTROL SECTIONS

Format of CSECT:

Name
Any symbol

Operation
CSECT

Operand
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.

Assembler/Session 5

DUMMY SECTIONS

Objectives

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.

DUMMY SECTIONS

Use the DSECT instruction to initiate a dummy control section or to indicate its continuation. Format of DSECT: Name
Any symbol or blank

Operation
DSECT

Operand
Not required

Assembler/Session 5

DUMMY SECTIONS

To use a dummy section :

Objectives

Reserve a storage area for the unformatted data Ensure that this data is loaded into the area
at execution time

DUMMY SECTIONS

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.

Assembler/Session 5

ASMBLY2
BEGIN

CSECT
BALR USING

Objectives 2,0
*,2

...
USING CLI BE ... INAREA,3 INCODE,C'A' ATYPE

Reg 3 points to dataarea

ATYPE

MVC
MVC ..

WORKA,INPUTA
WORKB,INPUTB

WORKA WORKB

DS DS ...

CL20 CL18

INAREA

DSECT

INCODE
INPUTA INPUTB

DS
DS DS

CL1
CL20 CL18

... END

Assembler/Session 5

Assembler Directives

Objectives
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 Directives

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/Session 6

Assembler Language
SESSION 6 Writing a complete program

Assembler/Session 6

Program Entry and Exit Logic

Objectives

Program entry - Preserve register contents

Program Exit - Restore register contents


Register save area

Always calling program provides a savearea of 18 words long used for storage of registers
Savearea address passed through register 13

Assembler/Session 6

A register save area


Word 1 SAV

Objectives Address Contents


Address of calling programs save area
Address of called programs save area

2
3

SAV+4
SAV+8

4
5 6

SAV+12
SAV+16 SAV+20 ...

Contents of Register 14
Contents of Register 15 Contents of Register 0

18

SAV+68

Contents of Register 12

Assembler/Session 6

Responsibilities of called program


Program entry conventions

Objectives

1.Save contents of registers 0-12,14 & 15 in calling programs save area 2.Establish base register

3.Store calling programs save area in the 2nd word of its own save area

Assembler/Session 6

Program entry conventions (contd..)


4. Store the address of its register savearea in the third word of the calling programs register save area

Objectives

(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

Responsibilities of called program (contd..) Program Entry


STM

Objectives

R14,R12,12(R13)

BALR R12,0
USING *,R12 ST LR LA ... ST R13,SAVOWN+4 store calling programs save area R14,R13 R13,SAVOWN R13,8(R14) Reg 13 contains current progs SA

Assembler/Session 6

Responsibilities of called program (contd..)

Objectives

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

Responsibilities of called program (contd..)

Objectives

Program Exit

R13,4(R13)

LM R14,R12,12(R13)

BR R4

Assembler/Session 6

Responsibilities of calling program

Objectives 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

Responsibilities of calling program (contd...)

Objectives 3. Register 14 should have the return address


4. Register 1 sould 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

Passing parameters to a subroutine

Objectives 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 DC A(T) A(U)

DC
LA

A(V)
R1,ADDS

Assembler/Session 6

R1

Objectives
Parmlist

Main storage

Addr of parmlist

parm3

Addr of parm1
Addr of parm2 parm1

Addr of parm3

parm2

Assembler/Session 6

Called subroutine B may get the second parameter Objectives by

L
L

R3,4(,R1)
R8,0(,R3)

Assembler/Session 6

Registers with special use

Objectives

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

Registers with special use (contd...)


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

Objectives

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 The subroutine RANDOM

Objectives
RANDOM STM RR14,R12,12(R13) BALR R12,0 USING *,R12 L M R7,RN R6,=F65541

ST
LR LM

R7,RN
R0,R7 R1,R12,24(R13)

BR
RN DC

R14
F8193

Assembler/Session 6
Subroutine RDIGIT
RDIGIT STM R14,R12,12(R13)
BALR USING ST R12,0 *,R12 R13,SAV+4

Objectives
R13,SAV

LA
... L BALR

R15,RANDAD R14,R15

...
L LM LM R13,SAV+4 R14,R15,12(R13) R1,R12,24(R13)

BR
SAV RANDAD DC DS

R14
18F

A(RANDOM)

Assembler/Session 6

Linkage Conventions

Objectives

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

Communicating 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

Objectives

Assembler/Session 6

Establishing symbolic linkage

Objectives 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

Establishing symbolic linkage (contd...)

e.g.

Objectives program A
EXTRN TABLEB

WXTRN
TABADR DS

TABLEB
V(TABLEB)

program B
ENTRY TABLEB

TABLEB

DS

...

Assembler/Session 6

Address Constants (A and V)

Objectives

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 ADCON
GSUBAD

L DC
DC

5,ADCON A(SOMWHERE)
V(READATA)

Assembler/Session 7

Assembler Language
SESSION 7 Assemble and Link Program

Assembler/Session 7

Processing of Instructions
Time/ Activity Code M/C instruc. source m/c instruc. Preassembly Refer to macro instruc. DC,DS

Objectives Assembler ENTRY


EXTRN

Macro Instr.

Assembly
LKED Prog fetch

object code

Execution

data area

form data
area in load mod

Assembler/Session 7

JCL parm processing

Objectives

EXEC PGM=pgmname,PARM=
When program gets control :
Register 1 contains the address of a fullword on a fullword boundary in programs address space the high order bit of this fullword is set to 1

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

Bits 1-31 of the fullword contain the address of a 2-byte length field on a halfword boundary The length field contains a binary count of the no. of bytes in the PARM field which immediately follows the length field

JCL parm processing ...

Assembler/Session 7

COBOL to Assembler

Objectives 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 8

Assembler Language
SESSION 8 Macro Language

Assembler/Session 8

Macros

Objectives

Short source routines written and stored in libraries

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

Macro Definition Format :

A header statement
A prototype Model statements A trailer statement

Assembler/Session 8

Header statement:

Objectives MACRO
&TO,&FROM,&LENGTH

Prototype:

&name

MOVE

Model statements:

A set of machine and assembler instructions

Trailer statement: &name MEND

Assembler/Session 8

Macro 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

Objectives

symbolic prarameters may be positional or keyword

Macro Instruction ...


MACRO &LABEL &LABEL HALFSWAP &REG,&SV ST SLL &REG,&SV &REG,8

IC
SLL IC

&REG,&SV
&REG,8 &REG,&SV+1

MEND

Assembler/Session 8

SET Symbols (global or local)


3 types : arithmetic (SETS)

Objectives

binary (SETB)
character (SETC)

SET symbols are declared using,


LCLA GCLA LCLB GCLB LCLC GCLC

Assembler/Session 8

Format:

Label
symbol-name

Objectives operation operands


SETA An expression

SETB
SETC e.g. LCLA GCLA &A1 SETA &A2 SETA &A1 &A2 1 &A1+3

Assembler/Session 8

Attributes

Objectives

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

Conditional Assembly

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

Objectives

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

Assembler/Session 8

Format:
Label

Operation Operand seq. symbol A logical expression

Objectives

seq symbo AGO or blank -doAIF

enclosed in parenthesis,
followed by seq symbol

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

Assembler/Session 8

e.g.
MACRO PSRCH

Objectives
&PARAMS,&STRING

GBLB &FOUND
LCLA &I &FOUND SETB 0

.LP
&I &FOUND

AIF

((&I GE N&PARAMS) OR &FOUND) .E

SETA &I+1 SETB (&PARAMS(&I) EQ &STRING) AGO .LP

.E

MEND

Assembler/Session 9

Assembler Language
SESSION 9 Other Topics

Assembler/Session 8

Objectives Characteristics of good assembler program


has simple, easy to understand logic uses mostly simple instructions has no relative addressing uses subroutines

Characteristics of good assembler program ...

uses DSECTs
has efficient code (LA R10, 4(0,R10 - A R10,=F4)

does not abnormally terminate due to user error provides meaningful error messages

requests and check feedback from macro instructions

Assembler/Session 8

Characteristics of good assembler program Objectives (contd..)


lets the assembler determine lengths has opcodes, operand and comments aligned

contains meaningful comments


uses meaningful labels

Assembler/Session 8

Structured Programming

To improve design and understandability of a program

Objectives

made up of building blocks of subroutines

Conventions for general purpose registers


Base registers Link registers

Assembler/Session 9

The 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

Objectives

The EXecute Instruction (contd...) 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

Assembler/Session 9

Objectives
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

DEBUGGING

Assembler/Session 9

Objectives
Exceptions and Interrupts (contd..)

DEBUGGING

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

Objectives
Reading dumps

DEBUGGING

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

DEBUGGING

Reading dumps ...

Locate the entry point of your program

Assembler/Session 9

Objectives
Reading dumps (contd...)

DEBUGGING

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 programcheck interruption

Assembler/Session 9

Objectives
Full and Partial dumps

DEBUGGING

//SYSUDUMP DD SYSOUT=A
SNAP macro

DEBUGGING

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

Assembler/Session 9

SYSTEM MACROS

Objectives

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 access) Write next logical record (queued

READ - Read a block (basic access) WRITE - Write a block (basic access)

Assembler/Session 9

SYSTEM MACROS

Objectives

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

SYSTEM MACROS

Objectives

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

SYSTEM MACROS e.g. File I/O

Objectives

OPEN (INFILE,INPUT) GET INFILE,RECAREA PUT OUTFILE,RECAREA

CLOSE

(INFILE)

INFILE DCB DSORG=PS,MACRF=GM,DDNAME=IFILE

OUTFILE DCB DSORG=PS,MACRF=PM,DDNAME=OFILE


(RECFM=,LRECL=,BLKSIZE=,)

Assembler/Session 9

SYSTEM MACROS
Three forms :

Objectives

Standard form : Results in instructions that store into an inline parameter list and pass control to the required program List form : Provides asn 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

You might also like