Representing Data

Download Report

Transcript Representing Data

Programs & Defining Data
Ch.5 – pp. 95-109
Data in Computer Memory
G
4
480
8
0
E
4
8
1
O
4
8
2
481
R
4
8
3
G
E
3
4
3
4
4
8
8
4
5
Byte locations
in memory One character per byte location
9
9
8
2
4
9
0
482
483
See page 69
Data in Memory
480
G
E
O
R
G
E
3
4
=
=
=
=
=
=
=
=
C7
C5
D6
D9
C7
C5
F3
F4
=
=
=
=
=
=
=
=
1100
1100
1101
1101
1100
1100
1111
1111
0111
0101
0110
1001
0111
0101
0011
0100
The characters shown in memory are really made up of binary digits
(bits) as depicted to the right. In a mainframe computer, the bits are
configured as EBCDIC whereas in a PC, the bit configurations are
different, in ASCII. Are you comfortable with ASCII and EBCDIC? Are
you comfortable with binary/hexadecimal data configurations? If not,
check out your textbook on pages: 68-76 in Ch.4
Hexadecimal conversion chart
– the same as shown in your
text on page 70.
Representing Data
1 Character =
1 Byte =
2 Hex Digits
Decimal
Binary
Hex
0
0000
0
1
0001
1
2
0010
2
3
0011
3
4
0100
4
5
0101
5
6
0110
6
7
0111
7
8
1000
8
9
1001
9
10
1010
A
11
1011
B
12
1100
C
13
1101
D
14
1110
E
15
1111
F
16
1 0000
10
Representing Character Data
Left justified
- padded with blanks (40)
- truncated to the right
Example:
GEORGE
=
C7 C5 D6 D9 C7 C5
Define Storage / Constant
[label]
DS
CLnn
[label]
DC
CLnn’character data’
Defining Storage
•
•
•
•
Reserve Storage with no initialization
See Data Definitions topic beginning p.103
Used to allow a symbolic name for an area of memory
symbolicname
DS
definition
1-8 alphanumeric characters
1st must be alphabetic
1. Duplication factor
2. Type code
3. Length
Defining Storage Example
p. 103
OWKAREA DS
OWKITNBR DS
OWKITDES DS
DS
OWKPRICE DS
OWKORDPT DS
OWKONHND DS
OWKONORD DS
0CL50
CL5
CL20
CL5
CL5
CL5
CL5
CL5
• Output buffer area that will be printed – allows each sub-field to be
identified and accessed symbolically and the entire area can also be
accessed as OWKAREA. Example:
• MOVE
MOVE
PUT
OWKPRICE,INVCOST
OWKONHND,INVHAND
OUTFILE,OWKAREA
*MOVE COST TO PRICE
*MOVE ONHAND TO ONHAND
*PRINT ENTIRE O/P RECORD
OWKAREA
OWKPRICE
OWKORDPT
OWKONHND
OWKONORD
OWKITNBR
OWKITDES
5
20
5
5
5
5
5
The numbers within the orange boxes represent the field lengths in
bytes. The labels represent the subfield name (statement label). The
entire field (made up of 7 subfields) constitutes the output buffer.
Each subfield can be manipulated, then accessed together and in the
same order as parts of OWKAREA
And the Memory Reserved?
UNPK OWKPRICE(5),PPRICE
Print from OWKAREA
Another Example?
[label]
DS
CLnn
[label]
DC
CLnn
TEN
HRLY_PAY
DATE
MONTH
DEPTNO
DC
DC
DC
DC
DC
CL2’10’
CL5’17.65’
CL6’020807’
C’FEBRUARY’
CL3’CIS’
(MMDDYY)
LENGTH IMPLIED = 8 BYTES
Initializing Storage Areas
Define Constants – DC, rather than DS
ABC
DSIGN
NO3
NAME
TAXRT
DC
DC
DC
DC
DC
C’ABC’
C’$’
C’3’
C’JOE’
C’28’
C1 C2 C3
5B
F3
D1 D6 C5
F2 F8
[label]
EMPL-IN
EMPL-NO
[label]
EMPL-NM
EMPL-HRS
EMPL-CD
EMPL-DT
DS
DS
DS
DS
DS
DS
DS
DS
DS
DS
DS
DS
0CL80
CL6
CL1 DC
CL20
CL1
CL4
CL1
CL2
CL1
CL6
CL38
CLnn
EMPLOYEE INPUT BUFFER
EMPL. SERIAL NUMBER
CLnn
EMPL. NAME (LAST, FIRST, MI)
HOURS WORKED (NN.N)
PAY CODE TO DETERMINE PAY RT
DATE (MMDDYY)
Example (w/instructions)
CALC
PACK
PACK
MP
UNPK
RATE(4),TAXRT
TAXAMT(6),TOTINC
TAXAMT(6),RATE
INCTAX(8),TAXAMT(6)
…..
RATE
TAXRT
TAXAMT
TOTINC
INCTAX
DS
DC
DS
DC
DS
F
CL2’20’
PL6
CL’40000’
CL8
*F2 F0
*F4 F0 F0 F0 F0
Other Data Types
[label]
DS/DC
C
X
P
B
F
H
D
character
hex
packed dec.
binary
fullword (bin)
halfword (bin)
doubleword
Representing Zoned Decimal
Numbers are left justified, also padded to the right with blanks
(same as character data)
1234 =
F1 F2 F3 F4
F1 F2 F3 C4
DATE
DC
CL8'020807'
Feb. 8, 2007
Representing Packed Decimal
Right justified, padded with leading zeroes
+1234 =
-1234 =
0001234C
0001234D
The top value is positive and the sign character is the right-most
part of the value in memory. The lower value is negative. Notice
the difference in the sign character.
PAYRATE
DC
PL5'1785'
Representing Binary Data
•
•
•
•
1 byte = 8 binary digits (bits)
1011 0110 (B6)
Halfword = 2 bytes
Fullword = 4 bytes
BIN22
DC
BL2'00010110'
BIN22
DC
F’22'
The top value, defined as binary digits with length of 2 bytes in
memory appears just as the value appears in the DC operand (but with
8 bits of leading 0’s as padding). On the other hand, when defined as
a fullword (also binary), in memory, the 1-bits are no different, but there
would be 4 bytes instead of 2 bytes –
‘0000 0000 0000 0000 0000 0000 0001 0110’
Convert Binary to Decimal
0
0
2048 1024
1
1
0
0
1
0
1
0
0
1
512
256
128
64
32
16
8
4
2
1
Assign positional values to each binary digit beginning on the right –
right-most bit is 2º, next bit to the left is 21, then 22, and so forth. Then
simply add up the equivalent decimal values where there are 1-bits in the
binary field above.
1 + 8 + 32 + 256 + 512 = 809
Use the Scientific Calculator
Calculators are
found under the
Accessories menu
when you ‘click’ on
the START button in
the lower left corner
of your screen.
For the Scientific
Calculator, click on
the VIEW menu in
the Calculator
Window and choose
‘Scientific’ …
Enter your DEC
number, then ‘Click’
the BIN button to
convert Dec  Bin
Convert Decimal to Binary
• Use the table on the top of page 75 that shows converting hex
to decimal, but use it in reverse.
• Example: convert 1517810 to hex
• Using entire table, find smallest number less than the
number you are attempting to convert which is 12,228
which is hex 3000 (in Byte 3 in left-hand column). Record
the Hex value on your piece of paper…3000.
• Subtract 12,228 from the original number – which is 2890
• Find next smallest number again in the next column to
the right (2816). Record the Hex value … B00
• And so on until you are at the far right column (64 and
10). Record the Hex values … 40 and A
• 3B4A in hex is 0011 1011 0100 1010 in binary answer.
• Or use the Scientific Calculator
See the process on the next slide 
Hex
Dec
Hex
Dec
Hex
Dec
Hex
Dec
Hex
Dec
0
0
0
0
0
0
0
0
0
0
1
65,536
1
4,096
1
256
1
16
1
1
2
131,072
2
8,192
2
512
2
32
2
2
3
196,608
3
12,228
3
768
3
48
3
3
4
262,144
4
16,384
4
1,024
4
64
4
4
5
327,880
5
20,480
5
1,280
5
80
5
5
6
393,216
6
24,576
6
1,536
6
96
6
6
7
458,752
7
28,672
7
1,792
7
112
7
7
8
524,288
8
32,768
8
2,048
8
128
8
8
9
589,824
9
36,864
9
2,304
9
144
9
9
A
655,360
A
40,960
A
2,560
A
160
A
10
B
720,896
B
45,056
B
2,816
B
176
B
11
C
786,432
C
49,152
C
3,072
C
192
C
12
D
851,968
D
53,248
D
3,328
D
208
D
13
E
917,504
E
57,344
E
3,584
E
224
E
14
F
983,040
F
61,440
F
3,840
F
240
F
15
1
15178
- 12288
2890
2
-
2890
2816
74
3
74
- 64
10
15,178
=
3 B 4 A
4
10 = A
Or - Convert Doing the Arithmetic
15178 / 16 = 948.625
Remainder .625 is integer .625 X 16 = 10 (A)
948 / 16 = 59.25
Remainder .25 is integer .25 X 16 = 4 (4)
59 / 16 = 3.6875
Remainder .6875 is integer .6875 X 16 = 11 (B)
3/16 = 0.1875
Remainder .1875 is integer .1875 X 16 = 3 (3)
Using result in reverse order = 3B4A
Converting Zoned to Packed Decimal
• Use the PACK instruction (p.84 & 85)
• Read a number from an input file. It is now in memory in zoneddecimal format – you cannot do arithmetic on it, so PACK it first
(PACK removes the zones)
• PACK removes all the zones except the right-most, then reverses
the right-most byte
See examples on the next slide 
p. 84/85
Book Examples
Receiving
Sending
Before:
99 99 99
F1 F2 F3 F4 F5
After:
12 34 5F
F1 F2 F3 F4 F5
Before:
00 00 00 00
F2 F6 F4 F8
After:
00 02 64 8F
F2 F6 F4 F8
Before:
00 00
F6 F3 F2 F0 F4
After:
20 4F
F6 F3 F2 F0 F4
PACK RECEIVING,SENDING
Converting Packed to Zoned Decimal
• Use the UNPK instruction (p. 85)
• You have completed performing arithmetic on a value and you
wish to print it – packed decimal data is not printable
• UNPK puts zones back in the numbers and reverses the two
right-most characters.
See examples on the next slide 
p. 85
Book Examples
Receiving
Sending
Before:
00 00 00 00 00
56 43 7F
After:
F5 F6 F4 F3 F7
56 43 7F
Before:
00 00 00 00 00
03 4C
After:
F0 F0 F0 F3 C4
03 4C
Before:
00 00
13 91 2D
After:
F1 D2
13 91 2D
UNPK RECEIVING,SENDING
p. 76
Quick Review of Data
ZD
PD
Hex
Bin
=
=
=
=
F2 F0 F5 F5 F9 F7 F4 F7 F4
20 55 97 47 4F
0C 41 2B 22
0000 1100 0100 0001
0010 1011 0010 0010
Instruction Formats
Page 76 - bottom
Instruction Lengths
op code
op code
op code
R1
R1
R2
M2
M2
M1
2 addresses – sending and receiving fields
M2
Sending and Receiving Fields
(A Reminder)
Receiving
Sending
Before:
F0 F4 F3 F9 F9
F0 F0 F7 F0 F1
After:
F0 F0 F7 F0 F1
F0 F0 F7 F0 F1
See page 77 at the top
A Typical 6-byte Instruction
Instruction Format:
Op. Code
0
Length
8
Address 1
16
Address 2
32
Example: Move Characters
D2
0-255
B1
MVC
D1(L,B1),D2(B2)
MVC
OUTAREA(10),INAREA
D1
B2
D2
Sample 4-byte Instruction
Instruction Format:
Op. Code
0
X2
R1
8
B2
(Index)
12
D2
16
31
Example:
5C
R1
M
R1,D2(X2,B2)
M
INC,TAXTABLE(RIX)
X2
B2
D2
And A 2-byte Instruction
Instruction Format:
Op. Code
0
R1
8
R2
12
15
Example:
1A
AR
R1,R2
AR
REG2,REG1
R1
R2
Decimal Arithmetic
• Add Decimal
• AP
M1(L1),M2(L2)
6-byte format
M1(L1)
M2(L2)
Before:
10 00 0F
01 0F
After:
10 01 0C
01 0F
Before:
87 11 0F
40 00 0F
After:
27 11 0C
40 00 0F
In the 2nd Add: high-order digit overflowed and lost
Decimal Arithmetic
• Subtract Decimal
• SP
M1(L1),M2(L2)
6-byte format
M1(L1)
M2(L2)
Before:
10 00 0F
75 0F
After:
09 25 0C
75 0F
Decimal Arithmetic
• Multiply Decimal
• MP M1(L1),M2(L2)
– L1 has a max length of 16 bytes
– L2 has a max length of 8 bytes
M1(L1)
M2(L2)
Before:
00 00 8C
50 0F
After:
04 00 0C
50 0F
Decimal Arithmetic
• Divide Decimal
• DP
M1(L1),M2(L2)
6-byte format
M1(L1)
M2(L2)
Before:
00 00 00 05 3C
00 7C
After:
00 00 7C 00 4C
00 7C
Quotient
Before the instruction is executed,
M2 is the divisor, M1 is the dividend.
L1 and L2 are the lengths of each
Remainder –
length of divisor
Decimal Arithmetic
• Zero-And-Add Packed
• ZAP M1(L1),M2(L2)
6-byte format
• More like a Move instruction than an Add Instruction
M1(L1)
M2(L2)
Before:
12 45 9C
1C
After:
00 00 1C
1C