IBM 370 Assembly Language - PowerPoint PPT Presentation

About This Presentation
Title:

IBM 370 Assembly Language

Description:

Course Title : ASSEMBLER LANGUAGE Duration : 5 Half - DAYS Objectives Familiarize with IBM 370 Assembly Language Objectives An assembler language is a symbolic ... – PowerPoint PPT presentation

Number of Views:1577
Avg rating:3.0/5.0
Slides: 169
Provided by: ShanthiNa
Category:

less

Transcript and Presenter's Notes

Title: IBM 370 Assembly Language


1
Assembler/Session 1
Course Title ASSEMBLER LANGUAGE
Duration 5 Half - DAYS
2
Objectives
Assembler/Session 1
Objectives
  • Familiarize with IBM 370 Assembly Language

3
Assembler/Session 1
COURSE SCHEDULE
SESSION 1 Day 1
Introduction
SESSION 2 Day 1
Addressing
SESSION 3 Day 2
Machine Instructions
4
Assembler/Session 1
COURSE SCHEDULE
SESSION 4 Day 3
Program Sectioning
Assembler Directives
SESSION 5 Day 3
Writing a complete program
SESSION 6 Day 3
SESSION 7 Day 4
Assemble and link program
5
Assembler/Session 1
COURSE SCHEDULE
SESSION 8 Day 4
Macro Language
Other Topics
SESSION 9 Day 5


6
Assembler/Session 1
Assembler Language
SESSION 1
7
Objectives
Assembler/Session 1
INTRODUCTION
  • 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

8
Assembler/Session 1
STATEMENT FORMAT
Objectives
  • 1 10 16 30
  • label operation operands comments
  • e.g..
  • INIT1 LA R5,4 INITIALISE REGISTER 5
  • Rules for choosing labels
  • maximum 8 characters
  • Alphabets, digits, _at_, ,
  • First character should not be a digit
  • label should begin in column 1

9
Objectives
Assembler/Session 1
Sample program
  • Col1 Col10 Col.16
  • L 2,A
  • A 2,B
  • ST 2,ANS
  • ..
  • ..
  • A DC F15
  • B DC F20
  • ANS DS F

10
Assembler/Session 1
STATEMENT FORMAT
Objectives
  • 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

11
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

12
Assembler/Session 1
TYPES OF INSTRUCTIONS
Objectives
1. Machine Instructions 2. Assembler
Instructions (Directives) 3. Macro Instructions
13
Assembler/Session 1
REGISTERS
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
14
Assembler/Session 1
REGISTERS
Objectives
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
15
Assembler/Session 1
DATA REPRESENTATION
Objectives
Binary fields - Always fixed in length, either 2
or 4 bytes (Full word or Half word) -
Negative numbers stored in 2s complement
form Examples A DC H295 01 27
B DC H-75 FF 35
16
Assembler/Session 1
2s complement form
Objectives
  • How to identify a negative number?
  • - Leading bit contains a 1 (In Hex 8 to F)
  • How to convert to a negative number?
  • First switch the bits (1 to 0 , 0 to 1)
  • Finally add 1

17
Assembler/Session 1
Boundary requirements
Objectives
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
18
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 Zone Code 0 - 9 C,
A,E,F - D, B , - , blank Blank F

19
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
20
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
- 7 5 3 C
21
Assembler/Session 1
Objectives
  • Addressing Operands
  • Register addressing
  • Base, displacement addressing
  • Base, index and displacement addressing

22
Assembler/Session 1
INSTRUCTION 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
Objectives
23
Assembler/Session 1
Addressing RX Operands Implicit format L
3,VAR Explicit format L 3,100(0,12)
Register Displacement Index reg Base reg
Objectives
24
Assembler/Session 2
Assembler Language
SESSION 2 Addressing
25
Assembler/Session 2
Objectives
STORAGE 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
26
Assembler/Session 2
STORAGE DEFINITIONS
Objectives
Format label DS/DC dtLnvalue 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
27
Assembler/Session 2
STORAGE DEFINITIONS
Objectives
Examples ALPHA DC CABC EF FLDS DS 3CL2 H1 DC
H29 F2 DC F-10 F1 DC X03 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.
28
Assembler/Session 2
STORAGE DEFINITIONS
Objectives
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
29
Assembler/Session 2
STORAGE DEFINITIONS
Objectives
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
30
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
    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,F1

31
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 XL5A
1245 DC F19 DC FL1513
32
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 OUT25

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

34
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

35
Assembler/Session 2
ESTABLISHING ADDRESSABILITY
Objectives
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
36
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

37
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

38
Assembler/Session 2
ESTABLISHING ADDRESSABILITY
Objectives
  • 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


39
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 3,4
  • CR 4,6 ALPHA2 or BETA-4
  • BCR 1,14
  • BETA AR 2,3
  • Note Always avoid using relative addressing

40
Assembler/Session 3 4
Assembler Language
SESSION 3 4 Machine Instructions
41
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
  • D1(L,B1),D2(B2)
    - explicit
  • e.g...
  • MVC INPUT(5),OUTPUT


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


43
Assembler/Session 3 4
HANDLING CHARACTER DATA
Objectives

Advanced Techniques 1. Explicit lengths and
relative addressing MVC PAD6(4),CL4
PAD DS CL10 2. Overlapping fields and the MVC
instruction MVC FLDB,FLDA FLDA
DC CA FLDB DS CL3 Limitation of MVC Can
only move 256 bytes
44
Assembler/Session 3 4
HANDLING CHARACTER DATA
Objectives

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 R11
Length Reg R2 - Source R21 Padding
character (1st 8 bits) and Length Eg LA
2,Q LA 3,2000 LA 4,P
LA 5,1500 MVCL 2,4
45
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
  • CLI - Compare logical immediate
  • e.g. CLI FLDA,CK

46
Assembler/Session 3 4
Objectives

Exercise 2 Q1 and Q2 2. What will be the effect
of the following instructions MVI OUTAREA,C
MVC OUTAREA1(132),OUTAREA OUTAREA DS 133C
47
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

48
Assembler/Session 3 4
BINARY INSTRUCTIONS
Objectives

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 H15 FULL DC F8
49
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 6,HALF
  • AR 7,3

50
Assembler/Session 3 4
BINARY INSTRUCTIONS
Objectives
  • Binary Subtraction (S, SH and SR)
  • Type R-X
  • e.g.
  • S 5,FULL
  • SH 6,HALF
  • SR 7,3

51
Assembler/Session 3 4
BINARY INSTRUCTIONS
Objectives

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
52
Assembler/Session 3 4

Objectives
Binary 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)
53
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.)
54
Assembler/Session 3 4
BINARY INSTRUCTIONS
Objectives

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
55
Assembler/Session 3 4
  • BC 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 B1001,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.

Objectives
56
Assembler/Session 3 4
BRANCHING
Objectives
  • 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,CK
  • BNL GOOD


57
Assembler/Session 3 4
CONDITION CODE PROCESSING
Objectives
  • 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 lt Zero First operand lt
    Second operand
  • 2 gtZero First operand gt
    second operand
  • 3 Overflow Not set

58
Assembler/Session 3 4

LPR, 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
Objectives
59
Assembler/Session 3 4
BIT MANIPULATIONS
Objectives

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,X0F NR 5,7 X 9,FULL
60
Assembler/Session 3 4
BIT MANIPULATIONS
Objectives

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
61
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,B000001
01 BNM NEXT
62
Assembler/Session 3 4
BIT MANIPULATIONS
Objectives

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
63
Assembler/Session 3 4
BIT MANIPULATIONS
Objectives

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
64
Assembler/Session 3 4
BIT MANIPULATIONS
Objectives
  • 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 x40 (Space), then
    the displacement into the table is 64. The value
    in the table at displacement 64 will be replacing
    the source.

65
Assembler/Session 3 4
BIT MANIPULATIONS
Objectives

Translations 1 byte - 256 possible
combinations x00,x01, x02,
x03,..x0F x10,x11,x12,..x1F
.. xF1,xF2,xF3,xFF
The table should start with replacement byte for
x00 and end with replacement for xFF
66
Assembler/Session 3 4
BIT MANIPULATIONS (TRT)
Objectives

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 (x00) but other
characters will be x00. -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
67
Assembler/Session 3 4
BIT MANIPULATIONS (TRT continued)
Objectives

Translations - TRT (Translate and test
register) This example searches for a period
X4B The period 4B is decimal 75. So the X4B
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 75X00 DC X4B
DC 180X00
68
Assembler/Session 3 4
Numeric Conversions
Objectives

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)-gtPacked
decimal-(CVB)-gt binary
69
Assembler/Session 3 4
Numeric 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)-gtPacked
decimal-(UNPK)-gt Character data
70
Assembler/Session 3 4
Numeric Conversions
Objectives

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)
71
Assembler/Session 3 4
Numeric Conversions
Objectives

4 Packed decimal to Zoned decimal
(UNPACK) Format UNPACK operand1,operand2 ope
rand1 Zoned decimal operand2 Packed
decimal e.g. UNPACK ZD(5),PACKED(2)
72
Assembler/Session 3 4
Relation between CVD,CVB,PACK and UNPACK
Objectives


PACK
Input
Binary in Register
Packed Decimal
CVB
Zoned Decimal
UNPK
Output
CVD
73
Assembler/Session 3 4
Example code for Different conversions
Objectives


PACK PNUM(8),START(3) CVB 7,PNUM
A 7,F1 CVD 7,PNUM UNPK
ANS(3),PNUM(8) START DC C125 ANS
DS CL3 PNUM DS D
74
Assembler/Session 3 4
Packed decimal operations
Objectives


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
75
Assembler/Session 3 4
Packed decimal operations
Objectives


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, lt
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
76
Assembler/Session 3 4
Packed decimal operations
Objectives


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
77
Assembler/Session 3 4
Packed decimal operations
Objectives


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 TEMP2(1),X00
MVZ TEMP3(1),X00
MVN TEMP3(1),A2 A DC
PL3123 TEMP DS PL4
78
Assembler/Session 3 4
Editing the output for printing
Objectives

ED and EDMK instructions ( D1(L,B1), D2(B2))
(Pattern and PD number) Patterns x20 - Digit
selector x21 - Significance
selector x22 - Field separator
x60 - 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)


79
Assembler/Session 3 4
Editing the output for printing
Objectives

80
Assembler/Session 3 4
Editing the output for printing
Objectives

-ED and EDMK can detect the difference between
significant and non signi ficant 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
81
Assembler/Session 3 4
TABLE PROCESSING
Objectives

A table is a named storage structure consisting
of subunits or entries e.g. RATE DS 6F L 4,RAT
E8 Accessing table elements with indexed storage
operands e.g. LH 9,F8 L 5,RATE(9) (9 - index
register)
82
Assembler/Session 3 4
  • Multi-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,H12
  • REPEAT EQU
  • ..
  • BCT 9,REPEAT

Objectives

83
Assembler/Session 3 4

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.

84
Assembler/Session 3 4
Objectives
Function 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

85
Assembler/Session 3 4

BXLE - DO UNTIL repetitions BXH - DO WHILE
repetitions e.g... LH 7,H0 index LH 2,H2
increment amount LH 3,H18 the
limit --- REPEAT ... LH 6,TABLE(7) ... BXL
E 7,2,REPEAT
Objectives
86
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)

87
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 0H
  • DC C01
  • DC C02
  • ...
  • TBLEND EQU
  • TBLSIZE EQU TBLEND-TABLE

88
Assembler/Session 3 4
USING EQUATES
Objectives

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.
89
Assembler/Session 5
Assembler Language
SESSION 5 Program Sectioning
90
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

91
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

92
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

93
Assembler/Session 5
CONTROL SECTIONS
Objectives
  • Any instruction that affects the location
    counter, or uses its current value, establishes
    the beginning of the first control section.

94
CONTROL SECTIONS
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.
95
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.

96
DUMMY SECTIONS
  • 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

97
Assembler/Session 5
DUMMY SECTIONS
Objectives
  • 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

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

99
Assembler/Session 5

Objectives
ASMBLY2 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 . .
100
WORKA DS CL20 WORKB DS
CL18 INPUT DS
CL39 ... INAREA
DSECT INCODE DS CL1 INPUTA
DS CL20 INPUTB DS
CL18 ...
END
101
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
102
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
103
Assembler/Session 6
Assembler Language
SESSION 6 Writing a complete program
104
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 save area of 18 Full words
long used for storage of registers Save area
address passed through register 13 by IBM
convention
105
Assembler/Session 6

A register save area (18 consecutive full words)
Word Address Contents 1 SAV 2 SAV4 Address of
calling programs save area 3 SAV8 Address of
called programs save area 4 SAV12 Contents of
Register 14 5 SAV16 Contents of Register
15 6 SAV20 Contents of Register
0 ... 18 SAV68 Contents of Register 12
Objectives
106
Assembler/Session 6
Responsibilities of called program Program entry
conventions 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
Objectives

107
Assembler/Session 6

Program entry conventions (contd..) 4. Store the
address of its register save area in the third
word of the calling programs 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).
Objectives
108
Assembler/Session 6

Responsibilities of called program
(contd..) Program Entry STM R14,R12,12(R13) BAL
R R12,0 USING ,R12 ST R13,SAVOWN4 store
calling programs save area LR R14,R13 LA
R13,SAVOWN Reg 13 contains current progs SA
... ST R13,8(R14)
Objectives
109
Assembler/Session 6

Responsibilities 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.
Objectives
110
Assembler/Session 6

Responsibilities of called program
(contd..) Program Exit L R13,4(R13) LM R14,R12,1
2(R13) BR R14
Objectives
111
Assembler/Session 6

Responsibilities 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(SUBE
NTRY) where SUBENTRY is the entry address
(usually the CSECT name) of the subroutine
Objectives
112
Assembler/Session 6

Responsibilities 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
Objectives
113
Assembler/Session 6
  • Passing 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

Objectives
114
Assembler/Session 6

R1 Main storage Addr of parmlist Parmlist pa
rm3 Addr of parm1 Addr of
parm2 parm1 Addr of parm3 parm2
Objectives
115
Assembler/Session 6

Called subroutine B may get the second parameter
by L R3,4(,R1) L R8,0(,R3)
Objectives
116
Assembler/Session 6

Objectives
Registers 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
117
Assembler/Session 6

Objectives
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 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
118
Assembler/Session 6

The subroutine RANDOM RANDOM STM R14,R12,12(R13)
BALR R12,0 USING ,R12 L R7,RN M R6,F655
41 ST R7,RN LR R0,R7 LM R1,R12,24(R13) B
R R14 RN DC F8193
Objectives
119
Assembler/Session 6

Subroutine RDIGIT RDIGIT STM R14,R12,12(R13) BAL
R R12,0 USING ,R12 ST R13,SAV4 LA R13,SAV
... L R15,RANDAD BALR R14,R15 ... L R13,
SAV4 LM R14,R15,12(R13) LM R1,R12,24(R13) B
R R14 SAV DS 18F RANDAD DC A(RANDOM)
Objectives
120
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

121
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
122
Assembler/Session 6
  • Establishing 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

Objectives
123
Assembler/Session 6

Establishing symbolic linkage (contd...) e.g. pro
gram A EXTRN TABLEB WXTRN TABLEB TABADR DS V(
TABLEB) program B ENTRY TABLEB TABLEB DS ...

Objectives
124
Assembler/Session 6
Objectives
  • Address 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)
  • GSUBAD DC V(READATA)

125
Assembler/Session 7
Assembler Language
SESSION 7 Assemble and Link Program
126
Assembler/Session 7
Processing of Instructions Time/ M/C
Assembler ENTRY Macro Activity instructions. E
XTRN 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
Objectives
127
Assembler/Session 7
  • JCL parm processing
  • EXEC PGMpgmname,PARM
  • When program gets control
  • Register 1 contains the address of a full word
    on a full word boundary in programs 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)

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

129
Assembler/Session 7

COBOL 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
Objectives
130
Assembler/Session 8
Assembler Language
SESSION 8 Macro Language
131
Assembler/Session 8

Objectives
  • Macros
  • Short source routines written and stored in
    libraries
  • Assembler inserts the source statements in the
    program where the macro appears

132
  • Macro Definition
  • Format
  • A header statement
  • A prototype
  • Model statements
  • A trailer statement

133
Assembler/Session 8

Header statement MACRO Prototype
name MOVE TO,FROM,LENGTH Model statements A
set of machine and assembler instructions Trailer
statement name MEND
Objectives
134
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
  • symbolic parameters may be positional or keyword

Objectives
135
Macro Instruction ...
MACRO LABEL HALFSWAP REG,SV LABEL ST REG,S
V SLL REG,8 IC REG,SV SLL REG,8 IC RE
G,SV1 MEND
136
Assembler/Session 8
  • SET Symbols (global or local)
  • 3 types
  • arithmetic (SETA)
  • binary (SETB)
  • character (SETC)
  • SET symbols are declared using,
  • LCLA LCLB LCLC
  • GCLA GCLB GCLC

Objectives
137
Assembler/Session 8

Format Label operation operands symbol-name SET
A An expression SETB SETC e.g. LCLA A1
GCLA A2 A1 SETA 1 A2 SETA A13
Objectives
138
Assembler/Session 8

Attributes 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
Objectives
139
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 Sequence
symbol Period followed by 1 to 7 alphabets or
digits of which the first is a letter e.g.
.Z23Ab
Objectives
140
Assembler/Session 8

Format Label Operation Operand seq symbol
AGO seq. symbol or
blank -do- AIF A logical expression
enclosed in
parenthesis,
followed by seq symbol
Objectives
141
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
142
Assembler/Session 8

e.g. MACRO PSRCH PARAMS,STRING GBLB FO
UND LCLA I FOUND SETB 0 .LP AIF ((I GE
NPARAMS) OR FOUND) .E I SETA I1 FOUND SETB
(PARAMS(I) EQ STRING) AGO .LP .E MEND
Objectives
143
Assembler/Session 8

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
Objectives
144
Assembler/Session 8

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
Objectives
145
Assembler/Session 8

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
Objectives
146
Assembler/Session 8

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
Objectives
147
Assembler/Session 8

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
Objectives
148
Assembler/Session 8

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
Objectives
149
Assembler/Session 9
Assembler Language
SESSION 9 Other Topics
150
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

151
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
  • requests and check feedback from macro
    instructions
  • provides meaningful error messages

152
Assembler/Session 8
  • Characteristics of good assembler program
    (contd..)
  • lets the assembler determine lengths
  • has opcodes, operand and comments aligned
  • contains meaningful comments
  • uses meaningful labels

Objectives
153
Assembler/Session 8
  • Structured 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

Objectives
154
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
155
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

156
Assembler/Session 9
DEBUGGING
Objectives

Exceptions and Interrupts Interrupts that result
directly f
Write a Comment
User Comments (0)
About PowerShow.com