Assembly Language Tutorial - Tutorialspoint

3y ago
152 Views
37 Downloads
2.03 MB
81 Pages
Last View : 2m ago
Last Download : 3m ago
Upload by : Brady Himes
Transcription

Assembly Language Tutorial

ASSEMBLY LANGUAGE TUTORIALSimply Easy Learning by tutorialspoint.comtutorialspoint.comi

ABOUT THE TUTORIALAssembly Programming TutorialAssembly language is a low-level programming language for a computer, or otherprogrammable device specific to a particular computer architecture in contrast to most highlevel programming languages, which are generally portable across multiple systems.Assembly language is converted into executable machine code by a utility program referred toas an assembler like NASM, MASM etc.AudienceThis tutorial has been designed for software programmers with a need to understand theAssembly programming language starting from scratch. This tutorial will give you enoughunderstanding on Assembly programming language from where you can take yourself athigher level of expertise.PrerequisitesBefore proceeding with this tutorial you should have a basic understanding of ComputerProgramming terminologies. A basic understanding of any of the programming languages willhelp you in understanding the Assembly programming concepts and move fast on the learningtrack.TUTORIALS POINTSimply Easy Learning

Copyright & Disclaimer Notice Allthe content and graphics on this tutorial are the property of tutorialspoint.com. Any content fromtutorialspoint.com or this tutorial may not be redistributed or reproduced in any way, shape, or formwithout the written permission of tutorialspoint.com. Failure to do so is a violation of copyright laws.This tutorial may contain inaccuracies or errors and tutorialspoint provides no guarantee regarding theaccuracy of the site or its contents including this tutorial. If you discover that the tutorialspoint.com siteor this tutorial content contains some errors, please contact us at webmaster@tutorialspoint.comTUTORIALS POINTSimply Easy Learning

Table of ContentAssembly Programming Tutorial . 2Audience . 2Prerequisites . 2Copyright & Disclaimer Notice. 3Assembly Introduction . 8What is Assembly Language? . 8Advantages of Assembly Language . 8Basic Features of PC Hardware . 9The Binary Number System . 9The Hexadecimal Number System . 9Binary Arithmetic . 10Addressing Data in Memory . 11Assembly Environment Setup . 13Installing NASM. 13Assembly Basic Syntax . 15The data Section . 15The bss Section . 15The text section . 15Comments . 15Assembly Language Statements . 16Syntax of Assembly Language Statements . 16The Hello World Program in Assembly. 16Compiling and Linking an Assembly Program in NASM . 17Assembly Memory Segments. 18Memory Segments . 18Assembly Registers . 20Processor Registers . 20Data Registers . 20Pointer Registers . 21Index Registers . 21Control Registers . 22Segment Registers . 22Example: . 23Assembly System Calls. 24Linux System Calls . 24Example . 25Addressing Modes . 27TUTORIALS POINTSimply Easy Learning

Register Addressing . 27Immediate Addressing. 27Direct Memory Addressing . 28Direct-Offset Addressing . 28Indirect Memory Addressing. 28The MOV Instruction . 28SYNTAX: . 28EXAMPLE: . 29Assembly Variables . 31Allocating Storage Space for Initialized Data . 31Allocating Storage Space for Uninitialized Data . 32Multiple Definitions . 32Multiple Initializations . 33Assembly Constants . 34The EQU Directive . 34Example: . 34The %assign Directive. 35The %define Directive . 35Arithmetic Instructions . 37SYNTAX: . 37EXAMPLE: . 37The DEC Instruction . 37SYNTAX: . 37EXAMPLE: . 37The ADD and SUB Instructions . 38SYNTAX: . 38EXAMPLE: . 38The MUL/IMUL Instruction . 40SYNTAX: . 40EXAMPLE: . 41EXAMPLE: . 41The DIV/IDIV Instructions . 42SYNTAX: . 42EXAMPLE: . 43Logical Instructions . 45The AND Instruction . 45Example: . 46The OR Instruction . 46Example: . 47TUTORIALS POINTSimply Easy Learning

The XOR Instruction . 47The TEST Instruction . 48The NOT Instruction . 48Assembly Conditions. 49The CMP Instruction. 49SYNTAX . 49EXAMPLE: . 49Unconditional Jump . 50SYNTAX: . 50EXAMPLE: . 50Conditional Jump . 50Example: . 51Assembly Loops. 53Example: . 53Assembly Numbers . 55ASCII Representation. 56BCD Representation . 57Example: . 57Assembly Strings . 59String Instructions . 59MOVS. 60LODS . 61CMPS . 62SCAS . 63Repetition Prefixes . 64Assembly Arrays . 65Example: . 66Assembly Procedures . 67Syntax: . 67Example: . 67Stacks Data Structure: . 68EXAMPLE: . 69Assembly Recursion . 70Assembly Macros. 72Example: . 73Assembly File Management . 74File Descriptor . 74File Pointer . 74File Handling System Calls . 74TUTORIALS POINTSimply Easy Learning

Creating and Opening a File . 75Opening an Existing File . 75Reading from a File . 75Writing to a File . 76Closing a File . 76Updating a File . 76Example: . 77Memory Management . 79Example: . 79TUTORIALS POINTSimply Easy Learning

1CHAPTERAssembly IntroductionWhat is Assembly Language?Each personal computer has a microprocessor that manages the computer's arithmetical, logical andcontrol activities.Each family of processors has its own set of instructions for handling various operations like getting input fromkeyboard, displaying information on screen and performing various other jobs. These set of instructions are called'machine language instruction'.Processor understands only machine language instructions which are strings of 1s and 0s. However machinelanguage is too obscure and complex for using in software development. So the low level assembly language isdesigned for a specific family of processors that represents various instructions in symbolic code and a moreunderstandable form.Advantages of Assembly LanguageAn understanding of assembly language provides knowledge of: Interface of programs with OS, processor and BIOS; Representation of data in memory and other external devices; How processor accesses and executes instruction; How instructions accesses and process data; How a program access external devices.Other advantages of using assembly language are: It requires less memory and execution time; It allows hardware-specific complex jobs in an easier way; It is suitable for time-critical jobs;TUTORIALS POINTSimply Easy Learning

It is most suitable for writing interrupt service routines and other memory resident programs.Basic Features of PC HardwareThe main internal hardware of a PC consists of the processor, memory and the registers. The registers areprocessor components that hold data and address. To execute a program the system copies it from the externaldevice into the internal memory. The processor executes the program instructions.The fundamental unit of computer storage is a bit; it could be on (1) or off (0). A group of nine related bits makes abyte. Eight bits are used for data and the last one is used for parity. According to the rule of parity, number of bitsthat are on (1) in each byte should always be odd.So the parity bit is used to make the number of bits in a byte odd. If the parity is even, the system assumes thatthere had been a parity error (though rare) which might have caused due to hardware fault or electricaldisturbance.The processor supports the following data sizes: Word: a 2-byte data item Doubleword: a 4-byte (32 bit) data item Quadword: an 8-byte (64 bit) data item Paragraph: a 16-byte (128 bit) area Kilobyte: 1024 bytes Megabyte: 1,048,576 bytesThe Binary Number SystemEvery number system uses positional notation i.e., each position in which a digit is written has a differentpositional value. Each position is power of the base, which is 2 for binary number system, and these powers beginat 0 and increase by 1.The following table shows the positional values for an 8-bit binary number, where all bits are set on.Bit value11111111Position value as apower of base 21286432168421Bit number76543210The value of a binary number is based on the presence of 1 bits and their positional value. So the value of the8given binary number is: 1 2 4 8 16 32 64 128 255, which is same as 2 - 1.The Hexadecimal Number SystemHexadecimal number system uses base 16. The digits range from 0 to 15. By convention, the letters A through Fis used to represent the hexadecimal digits corresponding to decimal values 10 through 15.TUTORIALS POINTSimply Easy Learning

Main use of hexadecimal numbers in computing is for abbreviating lengthy binary representations. Basicallyhexadecimal number system represents a binary data by dividing each byte in half and expressing the value ofeach half-byte. The following table provides the decimal, binary and hexadecimal equivalents:Decimal numberBinary representationHexadecimal 1FTo convert a binary number to its hexadecimal equivalent, break it into groups of 4 consecutive groups each,starting from the right, and write those groups over the corresponding digits of the hexadecimal number.Example: Binary number 1000 1100 1101 0001 is equivalent to hexadecimal - 8CD1To convert a hexadecimal number to binary just write each hexadecimal digit into its 4-digit binary equivalent.Example: Hexadecimal number FAD8 is equivalent to binary - 1111 1010 1101 1000Binary ArithmeticThe following table illustrates four simple rules for binary addition:(i)(ii)(iii)(iv)10111 0 0 1 1 0 1 10 11Rules (iii) and (iv) shows a carry of a 1-bit into the next left position.Example:TUTORIALS POINTSimply Easy Learning

DecimalBinary6000111100 420010101010201100110A negative binary value is expressed in two's complement notation. According to this rule, to convert a binarynumber to its negative value is to reverse its bit values and add 1.Example:Number 5300110101Reverse the bits11001010Add 11Number -5311001011To subtract one value from another, convert the number being subtracted to two's complement format and addthe numbers.Example: Subtract 42 from 53Number 5300110101Number 4200101010Reverse the bits of 4211010101Add 11Number -421101011053 - 42 1100001011Overflow of the last 1 bit is lost.Addressing Data in MemoryThe process through which the processor controls the execution of instructions is referred as the fetch-decodeexecute cycle, or the execution cycle. It consists of three continuous steps: Fetching the instruction from memory Decoding or identifying the instruction Executing the instructionThe processor may access one

Assembly programming language starting from scratch. This tutorial will give you enough understanding on Assembly programming language from where you can take yourself at higher level of expertise. Prerequisites Before proceeding with this tutorial you should have a basic understanding of Computer Programming terminologies.

Related Documents:

tutorialspoint.com or this tutorial may not be redistributed or reproduced in any way, shape, or form without the written permission of tutorialspoint.com. Failure to do so is a violation of copyright laws. This tutorial may contain inaccuracies or errors and tutorialspoint provides no guarantee regarding the

tutorialspoint.com or this tutorial may not be redistributed or reproduced in any way, shape, or form without the written permission of tutorialspoint.com. Failure to do so is a violation of copyright laws. This tutorial may contain inaccuracies or errors and tutorialspoint provides no guarantee regarding the

tutorialspoint.com or this tutorial may not be redistributed or reproduced in any way, shape, or form without the written permission of tutorialspoint.com. Failure to do so is a violation of copyright laws. This tutorial may contain inaccuracies or errors and tutorialspoint provides no guarantee regarding the

tutorialspoint.com or this tutorial may not be redistributed or reproduced in any way, shape, or form without the written permission of tutorialspoint.com. Failure to do so is a violation of copyright laws. This tutorial may contain inaccuracies or errors and tutorialspoint provides no guarantee regarding the

tutorialspoint.com or this tutorial may not be redistributed or reproduced in any way, shape, or form without the written permission of tutorialspoint.com. Failure to do so is a violation of copyright laws. This tutorial may contain inaccuracies or errors and tutorialspoint provides no guarantee regarding the

All the content and graphics on this tutorial are the property of tutorialspoint.com. Any content from tutorialspoint.com or this tutorial may not be redistributed or reproduced in any way, shape, or form without the written permission of tutorialspoint.com. Failure to do so is a violation of copyright laws.

All the content and graphics on this tutorial are the property of tutorialspoint.com. Any content from tutorialspoint.com or this tutorial may not be redistributed or reproduced in any way, shape, or form without the written permission of tutorialspoint.com. Failure to do so is a violation of copyright laws.

Remember, first aid is a practical skill so the more you physically practice these skills and techniques the better. Completing a first aid course is highly recommended to ensure you can have supervision from an expert in first aid who can check your skills. As you go through the programme ensure you are gathering evidence to upload into eDofE. For example, you could upload photos of you .