‫برمجة النظم‬ (٦) ‫محاضرة‬ ‫دكتور/ أحمد الحربي‬ ‫رابعة حاسب‬

Representative 360/370 instructions
The following instructions of IBM 360 may be used in the system programming course; see Appendix A for complete set of instructions.

1

2

Assembly Language
When the user wishes to communicate with the computer, he find himself may use a spectrum of languages: English C/C++ Java Best for programmer

Assembly language Mnemonic machine language Machine language

Best for machine

3

Now, we are going to study the structure of assembly language, which is the most machine-dependent language used by programmers today. There are four main advantages to using assembly language rather than machine language.

It is mnemonic; e.g., we write ST instead of the bit configuration 01010000 for the store instruction. Addresses are symbolic, not absolute. Reading is easier. Introduction of data to program is easier.

A disadvantage of assembly language is that it requires the use of an assembler to translate a source program into object code. Many of the features of 360 or 370 assembly language exist in assembly languages for other machines. These examples may be easily translated into the machine he is using.

4

An Assembly Language Program
Let us study the assembly program written in Fig. 2.14. We, as programmers, cannot presume to know into what location our program will be loaded in core. So, we assume that program's starting address was absolute core location 48. Thus there must be a way for us to load the base register with the address of the program in core just prior to execution time. The BALR instruction is one mechanism for loading the base register. If the assembler is to automatically compute the displacement field of instructions, it must know what register can be used as a base register and what that register will contain. The USING instruction tells both of these things to the assembler and thus makes it possible for it to produce correct code. The USING instruction is a pseudo-op. It tells the assembler that register 15 is base register and its content is address of next instruction. The Define Constant (DC) and Define Storage (DS) instructions are pseudo-ops that instruct the assembler to place a 10, a 4, and a 49 in 3 consecutive fullwords ("F") in memory and leave 10 more for data. A
5

number before the F would cause multiple allocations, e.g. DS 100F causes the assembler to set aside a 100 full word area.

Program TEST BEGIN START BA LR USING 15,0

Comments Identifies name of program Set register 15 to the address of the next instruction BEGIN+2,15 Pseudo-op indicating to assembler register 15 is base register and its content is address of next instruction

SR L LOOP L A ST A BCT BR TEN FOUR FORTY9 DATA DC DC DC DC END

4,4 3,TEN 2,DATA(4) 2,FORTY9 2,DA TA(4) 4,FOUR J,LOOP 14 F'10' F’4’ F'49' F'1,3,3,3,3, 4,5,8,9,0'

Clear register 4 (set index=0) Load the number 10 into register 3 Load data (index) into register 2 Add 49 Store updated value of data (index) Add 4 to register 4 (set index = index+4) Decrement register 3 by 1, if result nonzero, branch back to loop Branch back to caller Constant 10 Constant 4 Constant 49 Words to be processed.

FIGURE 2.14 An assembly language program
6

1. USING is a pseudo-op that indicates to the assembler which general register to use as a base and what its contents will be. This is necessary because no special registers are set aside for addressing, thus the programmer must inform the assembler which register(s) to use and how to use them. Since addresses are relative, he can indicate to the assembler the address contained in the base register. The assembler is thus able to produce the machine code with the correct base register and offset. 2. BALR is an instruction to the computer to load a register with the next address and branch to the address in the second field. When the second operand is register 0, as it is here, execution proceeds with the next instruction. It is important to see the distinction between the BALR, which loads the base register, and the USING, which informs the assembler what is in the base register. The distinction will be clearer after we study the assembler, but for now, note that a USING 'only provides information to the assembler but does not load the register. Therefore, if the register does not contain the
7

address that the USING says it should contain, a program error may result. 3. START is a pseudo-op that tells the assembler where the beginning of the program is and allows the user to give a name to the program. In this case the name is TEST. 4. END is a pseudo-op that tells the assembler that the last card of the program has been reached. 5. BR 14, the last machine-op instruction, is a branch to the location whose address is in general register 14. By convention, calling programs leave their return address in register 14.

Example using literals
Here we will repeat the same example using literals, which are mechanisms whereby the assembler creates data areas for the programmer, containing constants he requests. In the program of Figure 2.15, the arguments =F'10', =F'49', =F'4' are literals which containing 10, 49, 4 and replacement of the literal operand with the address of the data it describes.
8

The assembler translates the instruction L 3, = F'10' so that its address portion points to a full word that contains a 10. Normally, the assembler will construct a "literal table" at the end of the program. However, the pseudo-op LTORG can tell the assembler to place the encountered literals at an earlier location. This pseudo-op is used in the case where we have a very long program. For example, if our DC instruction contained 10,000 pieces of data, it would have been impossible for the offset of the load instruction to reach the literals at the end of our program. In this case, we would want to force the literals into the program before the DC instruction. In the BCT instruction, we have used as an address *-16. The star is a mnemonic that means "here." The expression *-16 refers to the address of the present instruct ion minus 16 locations, which is LOOP. The statement BASE EQU 15 assigns this value 15 to the symbol BASE; BASE will be everywhere evaluated as 15. The EQU pseudo-op allows the programmer to define variables.

9

Observe that some pseudo-ops (e.g., START and USING) do not generate machine code. Note also that the BR 14 instruction has been translated to BUR 15, 14. In Figure 2.16, the assembled version of the assembly program (written in Figure 2.14) is shown.

10

‫‪Macro Language and Macro Processor‬‬
‫ ‪ Macro‬ھو عبارة عن مجموعة من الجمل وتكون في لغة البرنامج المصدري‬‫)‪ (Source Program‬ويبدأ بكلمة ‪ MACRO‬في السطر األول وفي السطر‬ ‫الثاني اسم الماكرو ثم تعليمات الماكرو )مجموعة من السطور( وتنتھي بكلمة‬ ‫‪ .MEND‬وللعلم يستخدم الماكرو عندما توجد مجموعة من التعليمات ونفسھا‬ ‫تتكرر في البرنامج، ھنا تحدد مجموعة التعليمات بماكرو كما بالمثال التالي.‬

‫11‬

‫:‪Example‬‬

‫تحدث مرتين، لذا سوف يتم تسمية ھذه ‪ sequence‬كماكرو.‬ ‫‪) Macro Processor‬معالج الماكرو(‬ ‫ ھو يضع كل تعليمة ماكرو مع مجموعة جمل اللغة المصدرية المقابلة لھا وھذا ما‬‫يسمى توسيع الماكرو )‪.(Macro Expansion‬‬ ‫ يجب أن يصمم معالج الماكرو بحيث ال يتأثر بشكل جمل لغة البرمجة المستخدمة‬‫وال يعتمد مباشرة على تركيبة الكمبيوتر الذي ينفذ البرنامج.‬ ‫ بعد إنتھاء معالج الماكرو من المعالجة ينتج ملف كما تم توضيحه بأعلى وھو يكون‬‫‪ INPUT‬للـ ‪.Assembler‬‬

‫21‬

‫‪Source‬‬ ‫‪Program‬‬ ‫البرنامج‬ ‫المصدري‬

‫‪Assembler‬‬

‫‪Object‬‬ ‫‪Program‬‬ ‫البرنامج‬ ‫الھدفي‬

‫ مثال: لبرنامج يستخدم تعليمات ماكرو وبه عدد "٢" ماكرو لتوضيح عملية توسعة‬‫الماكرو. مثال آخر: كما يلي:-‬

‫31‬

Sign up to vote on this title
UsefulNot useful