I am trying to run a simple assembler program that do basic arithmetic function (ADD, MULTIPLY, DELETE) using 64 bit register. I don't see any error in my program (I compiled and ran successfully) but I am not getting result I expected when looking at storage dump. By expected result, I mean to say when I Defined Double Word of value "2", in memory I am seeing 412 as its hex representation. May be this is how it should display I don't know. Please help me understand if I am doing something run in coding or reading.
Program
***************************************************************
DS 0H DEFINE HALWORD FOR CSECT
STMH R14,R12,128(R13) Save upper register halves
STM R14,R12,12(R13) Saving Registers
BALR R12,0 ESTABLISHING BASE REGISTER
USING *,R12 ESTABLISHING ADDREASIBILITY
LA R2,SAVELOW LOAD MEMORY ADD TO REG
ST R13,4(,R2) STORE CALLER REG IN 2ND WORD
ST R2,8(,R13) STORING CALLEE REG IN 3rd WORD
LA R3,SAVEHIGH
ST R3,128(,R13) 64 BIT STORE
LR R13,R2
ADD EQU *
LG R2,VALUE1 LOAD Double Word to R2
AG R2,VALUE2 ADD AND STORE RESULT TO R2
STG R2,ADDR
WTO 'ADD'
MULTI EQU *
LG R3,VALUE3 LOAD DOUBLE WORD TO R3
MSGR R2,R3 MULTIPLY AND STORE RESULT TO R2
STG R2,MULTIR
WTO 'MULTIPLY'
DIVIDE EQU *
LG R4,VALUE4 LOAD DOUBLE WORD
DSGR R2,R4 DIVIDE AND STORE RESULT TO R2
STG R2,DIVIDER
WTO 'DIVIDE'
DC H'0'
RETURN EQU *
L R13,SAVELOW+4
* LM R14,R12,12(13) RE
LMD R14,R12,SAVEHIGH,12(R13)
BR R14
********************* DATA AREAS *******
SAVEHIGH DC 18F'0'
SAVELOW DC 18F'0'
LOOHERE DC CL8'STARTING'
VALUE1 DC X'000000007FFFFFFF'
VALUE2 DC 1D'2'
VALUE3 DC 1D'-1'
VALUE4 DC 1D'255'
ADDR DS 1D
MULTIR DS 1D
DIVIDER DS 1D
DS 0H DEFINE HALWORD FOR CSECT
STMH R14,R12,128(R13) Save upper register halves
STM R14,R12,12(R13) Saving Registers
BALR R12,0 ESTABLISHING BASE REGISTER
USING *,R12 ESTABLISHING ADDREASIBILITY
LA R2,SAVELOW LOAD MEMORY ADD TO REG
ST R13,4(,R2) STORE CALLER REG IN 2ND WORD
ST R2,8(,R13) STORING CALLEE REG IN 3rd WORD
LA R3,SAVEHIGH
ST R3,128(,R13) 64 BIT STORE
LR R13,R2
ADD EQU *
LG R2,VALUE1 LOAD Double Word to R2
AG R2,VALUE2 ADD AND STORE RESULT TO R2
STG R2,ADDR
WTO 'ADD'
MULTI EQU *
LG R3,VALUE3 LOAD DOUBLE WORD TO R3
MSGR R2,R3 MULTIPLY AND STORE RESULT TO R2
STG R2,MULTIR
WTO 'MULTIPLY'
DIVIDE EQU *
LG R4,VALUE4 LOAD DOUBLE WORD
DSGR R2,R4 DIVIDE AND STORE RESULT TO R2
STG R2,DIVIDER
WTO 'DIVIDE'
DC H'0'
RETURN EQU *
L R13,SAVELOW+4
* LM R14,R12,12(13) RE
LMD R14,R12,SAVEHIGH,12(R13)
BR R14
********************* DATA AREAS *******
SAVEHIGH DC 18F'0'
SAVELOW DC 18F'0'
LOOHERE DC CL8'STARTING'
VALUE1 DC X'000000007FFFFFFF'
VALUE2 DC 1D'2'
VALUE3 DC 1D'-1'
VALUE4 DC 1D'255'
ADDR DS 1D
MULTIR DS 1D
DIVIDER DS 1D
Storage Dump
00007FB8 +001A0 00000000 00000000 E2E3C1D9 E3C9D5C7 ........STARTING
00007FC8 +001B0 00000000 7FFFFFFF 41200000 00000000 ...."...........
00007FD8 +001C0 C1100000 00000000 42FF0000 00000000 A...............
00007FE8 +001D0 41200000 7FFFFFFF 3EF00000 00000000 ...."....0......
00007FF8 +001E0 C1100000 00000000 A.......
00007FC8 +001B0 00000000 7FFFFFFF 41200000 00000000 ...."...........
00007FD8 +001C0 C1100000 00000000 42FF0000 00000000 A...............
00007FE8 +001D0 41200000 7FFFFFFF 3EF00000 00000000 ...."....0......
00007FF8 +001E0 C1100000 00000000 A.......