Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Processor Fundamentals Assembly Language Learning Objectives Show understanding of the relationship between assembly language and machine code, including symbolic and absolute addressing, directives and macros. Describe the different stages of the assembly process for a ‘two-pass’ assembler for a given simple assembly language program Trace a given simple assembly language program Low Level Programming Languages / Paradigm (method of programming) Instructions are either in machine code or they are one to one with machine code e.g. assembly language See next two slides. Are “close to the hardware” as they provide little or no abstraction from a computer's instruction set architecture (see Fetch-Decode-Execute-Reset Cycle). Meaning that each low level language instruction is one operation the processor executes which can only be one of 3 types: Arithmetic / Jump / Control. Low-level language programs written for 1 computer will not necessarily work on another using a different processor, chip or architecture. Assembly Languages Use of mnemonics. Absolute Addressing Refers directly to a memory location e.g. 2011. Advantage: Simple. Disadvantages: Difficult to see the meaning of the data in location 2011. The data may not be able to be located at 2011 because another program is already using that location. Absolute addressing produces non-relocatable code. Symbolic Addressing e.g. Define a symbol for the data item or location instead of referring to an absolute location, Labels / Variables: . Label various locations in the program with symbols. For example, one can declare the label loop to refer to the beginning of a certain code segment. Other commands in the program can then jump to loop, either conditionally or unconditionally. Assign symbolic variable names to memory addresses. Predefined Symbols: See slide 4. // Computes sum=1+...+100 00 LDM 0 01 STO Index 02 STO Sum Forward Loop: References 03 LDD Index 04 CMP 101 05 JPE End 06 INC ACC 07 STO Index 08 LDD Sum 09 ADD Index 10 STO Sum 11 JMP Loop End: 12 End ….. 1024 Index: 1025 Sum: Directivese.g. Provide information to the assembler but do not generate any code. // Computes sum=1+...+100 00 LDM 0 01 STO Index 02 STO Sum Loop: 03 LDD Index 04 CMP 101 05 JPE End 06 INC ACC 07 STO Index 08 LDD Sum 09 ADD Index 10 STO Sum 11 JMP Loop End: 12 End ….. 1024 Index: 1025 Sum: Macros Many programs contain sequence of instructions which are repeated in identical form. A macro facility permits us to attach a name to this sequence and to use this name in its place. e.g. Start of definition Macro name Sequence to be abbreviated END of a Macro definition MACRO CNTR (for example) MEND Two-Pass Assembler First pass: Second pass: The assembler builds a symbol table and generates no code. e.g. // Computes sum=1+...+100 00 LDM 0 01 STO Index 02 STO Sum Loop: 03 LDD Index 04 CMP 101 05 JPE End 06 INC ACC 07 STO Index 08 LDD Sum 09 ADD Index 10 STO Sum 11 JMP Loop End: 12 End ….. Forward 1024 Index: References 1025 Sum: Symbol Table Index 1024 Sum 1025 Loop 3 End 12 The assembler replaces each symbol with its corresponding meaning (numeric address) and generates the final binary code. 00 01 02 03 04 05 06 07 08 09 10 11 12 ….. 1024 1025 LDM 0 STO 1024 STO 1025 LDD 1024 CMP 101 JPE 12 INC ACC STO 1024 LDD 1025 ADD 1024 STO 1025 JMP 3 End Machine Code: Assembly Languages Use of mnemonics and names/labels (instead of addresses) for locations in memory. Each assembly instruction represents a single machine instruction which means that it is fairly easy to translate a program written in assembly language to machine code. Writing programs in assembly language, although easier than using machine code, is still tedious and takes a long time. Plenary Explain the relationship between assembly languages and machine code. Assembly Languages Use of mnemonics and names/labels (instead of addresses) for locations in memory. Each assembly instruction represents a single machine instruction which means that it is fairly easy to translate a program written in assembly language to machine code. Writing programs in assembly language, although easier than using machine code, is still tedious and takes a long time. Plenary Describe how an assembler produces machine code from assembly language. Two-Pass Assembler First pass: Second pass: The assembler builds a symbol table and generates no code. e.g. // Computes sum=1+...+100 00 LDM 0 01 STO Index 02 STO Sum Loop: 03 LDD Index 04 CMP 101 05 JPE End 06 INC ACC 07 STO Index 08 LDD Sum 09 ADD Index 10 STO Sum 11 JMP Loop End: 12 End ….. Forward 1024 Index: References 1025 Sum: Symbol Table Index 1024 Sum 1025 Loop 3 End 12 The assembler replaces each symbol with its corresponding meaning (numeric address) and generates the final binary code. 00 01 02 03 04 05 06 07 08 09 10 11 12 ….. 1024 1025 LDM 0 STO 1024 STO 1025 LDD 1024 CMP 101 JPE 12 INC ACC STO 1024 LDD 1025 ADD 1024 STO 1025 JMP 3 End Machine Code: