September 2017 Update
This commit is contained in:
parent
bba7bfd280
commit
ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions
|
|
@ -1,19 +1,27 @@
|
|||
* Do-While
|
||||
DOWHILE CSECT
|
||||
USING DOWHILE,12 set base register
|
||||
LR 12,15 load base register
|
||||
SR 6,6 v=0
|
||||
LOOP LA 6,1(6) repeat; v=v+1
|
||||
STC 6,WTOTXT v
|
||||
OI WTOTXT,X'F0' make printable
|
||||
WTO MF=(E,WTOMSG) display v
|
||||
LR 4,6 v
|
||||
SRDA 4,32 shift to reg 5
|
||||
D 4,=F'6' v/6 so r4=remain & r5=quotient
|
||||
LTR 4,4 until v mod 6=0
|
||||
BNZ LOOP loop
|
||||
ENDLOOP BR 14 return to caller
|
||||
WTOMSG DS 0F full word alignment for wto
|
||||
WTOLEN DC AL2(5),H'0' length of wto buffer (4+1)
|
||||
WTOTXT DC C' ' wto text
|
||||
DOWHILE CSECT , This program's control section
|
||||
BAKR 14,0 Caller's registers to linkage stack
|
||||
LR 12,15 load entry point address into Reg 12
|
||||
USING DOWHILE,12 tell assembler we use Reg 12 as base
|
||||
XR 9,9 clear Reg 9 - divident value
|
||||
LA 6,6 load divisor value 6 in Reg 6
|
||||
LA 8,WTOLEN address of WTO area in Reg 8
|
||||
LOOP DS 0H
|
||||
LA 9,1(,9) add 1 to divident Reg 9
|
||||
ST 9,FW2 store it
|
||||
LM 4,5,FDOUBLE load into even/odd register pair
|
||||
STH 9,WTOTXT store divident in text area
|
||||
MVI WTOTXT,X'F0' first of two bytes zero
|
||||
OI WTOTXT+1,X'F0' make second byte printable
|
||||
WTO TEXT=(8) print it (Write To Operator macro)
|
||||
DR 4,6 divide Reg pair 4,5 by Reg 6
|
||||
LTR 5,5 test quotient (remainder in Reg 4)
|
||||
BNZ RETURN if one: 6 iterations, exit loop.
|
||||
B LOOP if zero: loop again.
|
||||
RETURN PR , return to caller.
|
||||
FDOUBLE DC 0FD
|
||||
DC F'0'
|
||||
FW2 DC F'0'
|
||||
WTOLEN DC H'2' fixed WTO length of two
|
||||
WTOTXT DC CL2' '
|
||||
END DOWHILE
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue