Sampl_instruction_descriptions
THIS IS A LIST OF SOME OF THE INSTRUCTIONS FROM THE SAMPLSEL PROGRAM.
SET COMMANDS ARE DOS COMMANDS. THEY EQUATE SOME LABEL TO A VALUE.
THAT VALUE CAN BE USED AS A FILE INDICATOR.
OR THAT VALUE CAN BE WHATEVER YOU'D LIKE.
BAT COMMANDS ARE ALSO DOS COMMANDS.
BAT COMMANDS INVOKE ACTIONS, LIKE ASSEMBLE, OR EXECUTE A PROGRAM.
SET PA="LA"
SET G=C:\USERS\LIN\DOCUMENTS\Z390CODE\SAMPLSEL
SET IN=%G%.PRN
BAT\ASMLG %G%.MLC TIME(1) PARM(%PA%)
WHEN YOU'RE ASSEMBLING A PROGRAM, THERE ARE EXECUTABLE INSTRUCTIONS.
THERE ARE MACRO INSTRUCTIONS, THAT GENERATE SEVERAL EXECUTALBE INSTS
AND THERE ARE INSTRUCTIONS TO THE ASSEMBLER. EG
AGO .START AGO TELLS THE ASSEMBLER TO FIND THE LABEL
.START ANOP AND GO THERE. ANOP CAN HOST A LABEL
* COMMA IS A COMMENT
INSTRUCTIONS TO THE ASSEMBLER.
SAMPLSEL START 0 START INDICATES THE BEGINNING OF A PGM
END SAMPLSEL AND END INDICATES THE EMD
USING *,13 USING TELLS THE ASSEMBLER WHAT REGISTER TO USE
USING IHADCB,2
LTORG =C'ABC' IS A LITERAL. THEY'LL BE PUT AT THE
END OF THE PROGRAM, OR WHEREVER THERE'S A LTORG
@@PAD#2 EQU ??? ASSIGNS A VALUE TO A LABEL
ORG LABEL TELL THE ASSEMBLER WHERE TO PUT THE NEXT INST
PUSH PRINT PUSH AND POP MEANS CHANGE SOMETHING
PRINT NOGEN IN THIS CASE, DON'T PRINT GENERATED CODE
POP PRINT RESTORE PRINTING TO WHAT IT WAS BEFORE
MACROS
YREGS , GENERATES THE R0, R1, .. R14, R15 LABELS
THAT YOU CAN USE TO MEAN REGISTERS.
OPEN ((2),OUTPUT) OPEN A FILE FOR INPUT OR OUTPUT
OPEN (SYSPRINT,OUTPUT)
CLOSE (IN,,OUT,,SYSPRINT) CLOSE ONE OR MORE FILES
READ GET IN READ A RECORD
PUT SYSPRINT,LINE WRITE A RECORD
AP #WRITE,=P'1' ADD A PACKED DECIMAL #
B READ BRANCH TO A LABEL
BAL R9,OPENOUT BRANCH AND LINK. GO TO A LABEL,
AND PUT THE RETURN ADDRESS IN R9
BCT R3,ZLOOP BRANCH ON COUNT NOT 0. PUT THE #
OF TIMES YOU WANT TO DO A LOOP.
BCTR R3,R2 BCT SUBTRACTS 1 AND BRANCHES IF
THAT REGISTER IS NOT 0
BE WRITE AFTER A COMPARE, BRANCH ON EQUAL
BL LOOP " BRANCH LOW
BM NOPARM " BRANCH MINUS (SAME AS LOW)
BNE TRYNEXT " BRANCH NOT EQUAL
BR 14 BRANCH REGISTER - GO TO THE ADDR
IN THE REGISTER.
CLCPARM CLC PARM(0),0(R3) COMPARE LOGICAL CHARACTER
COMPARE 2 CHARACTER FIELDS.
CR R3,R4 COMPARE THE CONTENTS OF 2 REGISTERS
CVD R0,DW CONVERT TO DECIMAL CONVERT THE BINARY
NUMBER IN A REGISTER TO PACKED DECIMAL
DC C'PARM= ' DC DEFINE A CONSTANT. (C)CHARACTER,
ED9 DC X'40202020' (X) HEX F(FULL WORD BINARY)
H(HALF WORD BINARY)
D(DOUBLE WORD, 8 BYTES)
DS 17F DS RESERVES MEMORY BUT DOESN'T
INITIALIZE IT.
ED LINE(L'ED9),0(R4) ED (EDIT A PACKED DECIMAL #)
IN THIS DISCUSSION, OR TURNS BITS ON,
AND TURNS BITS OFF, XO EXCLUSIVE OR CAN REVERSE BITS
O 4,FIELD TURNS BITS IN REG-4 ON IF THEY'RE ON
IN 'FIELD'
N 3,FIELD TURNS BITS IN REG-3 OFF IF THEY ARE OFF
IN 'FIELD'
X 2,FIELD FOR EACH POSITION, IF BOTH BITS ARE OFF
OR BOTH BITS ARE ON, THE BIT IN REG-2
IS TURNED OFF. IF ONE, BUT NOT THE OTHER,
IS ON, THEN THE BIT IN REG-2 IS TURNED ON.
OR NR XR DO THE SAME FOR 2 REGISTERS
OC NC XC DO THE SAME FOR FIELDS IN MEMORY
OI NI XI MSG,C'@' MOVE @ TO MSG
EX R6,MVCPARM EXEDUTE THE INSTRUCTION AT LOCATION
MVCPARM, "ORING" THE LOW BYTE IN
REG-6 WITH THE 2ND BYTE IN THE
INSTRUCTION AT LABEL MVCPARM.
IT'S NOT A REPLACE, IT'S AN OR.
IC 15,RC INSERT 1 BYTE INTO REG-15
L 13,4(13) LOAD 4 BYTES INTO REG-13
LH R0,DCBLRECL LOAD HALFWORD (2 BYTES) INTO REG-0
LM 14,12,20(13) LOAD MULTIPLE REGISTERS
LR 13,15 LOAD WHAT'S IN REG-15 INTO REG-13
LA R2,IN LOAD ADDRESS LOADS A NUMBER, WHICH CAN BE
LA R3,12 AN ADDRESS, BUT DOESN'T HAVE TO BE.
LOAD ADDRESS DOES NOT GET ANYTHING FROM MEM.
MVC LINE(L'MSG),MSG MVC - MOVE CHARACTER
FROM B TO A, FROM MSG TO LINE
MVC LINE(5),PARM MOVE 5 BYTES FROM PARM TO LINE
MVI MSG+30,C',' MVI - MOVE IMMEDIATE , TO MSG+30
S R8,FULLONE SUBTRACE WHAT'S AT FULLONE FROM R8
SH R6,=H'1' SUBTRACT A HALFWORD FROM R6
SR R4,R6 SUBTRACT R6 FROM R4
ST 13,4(15) STORE REG-13
STM 14,12,12(13) STORE LOTS OF REGISTERS
UNPK OPENMSG+48(5),DW+5(3) UNPACK A DECIMAL FIELD TO
A CHARACTER FIELD.
TR OPENMSG+28(2),HEX TRANSLATE 2 BYTES, USING THE 256 BYTE
TABLE AT LABEL HEX.