SlideShare a Scribd company logo
1 of 4
Download to read offline
http://www.tutorialspoint.com/assembly_prog ramming /assembly_reg isters.htm Copyright © tutorialspoint.com
ASSEMBLY - REGISTERS
Processor operations mostly involve processing data. This data canbe stored inmemory and accessed from
thereon. However, reading data fromand storing data into memory slows downthe processor, as it involves
complicated processes of sending the data request across the controlbus and into the memory storage unit and
getting the data throughthe same channel.
To speed up the processor operations, the processor includes some internalmemory storage locations, called
registers.
The registers store data elements for processing without having to access the memory. A limited number of
registers are built into the processor chip.
Processor Registers
There are ten32-bit and six 16-bit processor registers inIA-32 architecture. The registers are grouped into
three categories:
Generalregisters
Controlregisters
Segment registers
The generalregisters are further divided into the following groups:
Data registers
Pointer registers
Index registers
Data Registers
Four 32-bit data registers are used for arithmetic, logicaland other operations. These 32-bit registers canbe
used inthree ways:
1. As complete 32-bit data registers: EAX, EBX, ECX, EDX.
2. Lower halves of the 32-bit registers canbe used as four 16-bit data registers: AX, BX, CX and DX.
3. Lower and higher halves of the above-mentioned four 16-bit registers canbe used as eight 8-bit data
registers: AH, AL, BH, BL, CH, CL, DH, and DL.
Some of these data registers have specific use inarithmeticaloperations.
AX is the primary accumulator; it is used ininput/output and most arithmetic instructions. For example, in
multiplicationoperation, one operand is stored inEAX or AX or AL register according to the size of the operand.
BX is known as the base register as it could be used inindexed addressing.
CX is known as the count register as the ECX, CX registers store the loop count initerative operations.
DX is known as the data register. It is also used ininput/output operations. It is also used withAX register
along withDX for multiply and divide operations involving large values.
Pointer Registers
The pointer registers are 32-bit EIP, ESP and EBP registers and corresponding 16-bit right portions IP, SP
and BP. There are three categories of pointer registers:
Instruction Pointer (IP) - the 16-bit IP register stores the offset address of the next instructionto be
executed. IP inassociationwiththe CS register (as CS:IP) gives the complete address of the current
instructioninthe code segment.
Stack Pointer (SP) - the 16-bit SP register provides the offset value withinthe programstack. SP in
associationwiththe SS register (SS:SP) refers to be current positionof data or address withinthe
programstack.
Base Pointer (BP) - the 16-bit BP register mainly helps inreferencing the parameter variables passed
to a subroutine. The address inSS register is combined withthe offset inBP to get the locationof the
parameter. BP canalso be combined withDI and SI as base register for specialaddressing.
Index Registers
The 32-bit index registers ESI and EDI and their 16-bit rightmost portions SI and DI are used for indexed
addressing and sometimes used inadditionand subtraction. There are two sets of index pointers:
Source Index (SI) - it is used as source index for string operations
Destination Index (DI) - it is used as destinationindex for string operations.
Control Registers
The 32-bit instructionpointer register and 32-bit flags register combined are considered as the control
registers.
Many instructions involve comparisons and mathematicalcalculations and change the status of the flags and some
other conditionalinstructions test the value of these status flags to take the controlflow to other location.
The commonflag bits are:
Overflow Flag (OF): indicates the overflow of a high-order bit (leftmost bit) of data after a signed
arithmetic operation.
Direction Flag (DF): determines left or right directionfor moving or comparing string data. Whenthe
DF value is 0, the string operationtakes left-to-right directionand whenthe value is set to 1, the string
operationtakes right-to-left direction.
Interrupt Flag (IF): determines whether the externalinterrupts like keyboard entry, etc., are to be
ignored or processed. It disables the externalinterrupt whenthe value is 0 and enables interrupts when
set to 1.
Trap Flag (TF): allows setting the operationof the processor insingle-step mode. The DEBUG
programwe used sets the trap flag, so we could step throughthe executionone instructionat a time.
Sign Flag (SF): shows the signof the result of anarithmetic operation. This flag is set according to the
signof a data itemfollowing the arithmetic operation. The signis indicated by the high-order of leftmost
bit. A positive result clears the value of SF to 0 and negative result sets it to 1.
Zero Flag (ZF): indicates the result of anarithmetic or comparisonoperation. A nonzero result clears
the zero flag to 0, and a zero result sets it to 1.
Auxiliary Carry Flag (AF): contains the carry frombit 3 to bit 4 following anarithmetic operation;
used for specialized arithmetic. The AF is set whena 1-byte arithmetic operationcauses a carry frombit 3
into bit 4.
Parity Flag (PF): indicates the totalnumber of 1-bits inthe result obtained fromanarithmetic operation.
Anevennumber of 1-bits clears the parity flag to 0 and anodd number of 1-bits sets the parity flag to 1.
Carry Flag (CF): contains the carry of 0 or 1 froma high-order bit (leftmost) after anarithmetic
operation. It also stores the contents of last bit of a shift or rotate operation.
The following table indicates the positionof flag bits inthe 16-bit Flags register:
Flag: O D I T S Z A P C
Bit no: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Segment Registers
Segments are specific areas defined ina programfor containing data, code and stack. There are three main
segments:
Code Segment: it contains allthe instructions to be executed. A 16-bit Code Segment register or CS
register stores the starting address of the code segment.
Data Segment: it contains data, constants and work areas. A 16-bit Data Segment register or DS
register stores the starting address of the data segment.
Stack Segment: it contains data and returnaddresses of procedures or subroutines. It is implemented
as a 'stack' data structure. The Stack Segment register or SS register stores the starting address of the
stack.
Apart fromthe DS, CS and SS registers, there are other extra segment registers - ES (extra segment), FS and
GS, whichprovide additionalsegments for storing data.
Inassembly programming, a programneeds to access the memory locations. Allmemory locations withina
segment are relative to the starting address of the segment. A segment begins inanaddress evenly divisible by
16 or hexadecimal10. So, the rightmost hex digit inallsuchmemory addresses is 0, whichis not generally stored
inthe segment registers.
The segment registers stores the starting addresses of a segment. To get the exact locationof data or
instructionwithina segment, anoffset value (or displacement) is required. To reference any memory locationina
segment, the processor combines the segment address inthe segment register withthe offset value of the
location.
Example:
Look at the following simple programto understand the use of registers inassembly programming. This
programdisplays 9 stars onthe screenalong witha simple message:
section .text
global _start ;must be declared for linker (gcc)
_start: ;tell linker entry point
mov edx,len ;message length
mov ecx,msg ;message to write
mov ebx,1 ;file descriptor (stdout)
mov eax,4 ;system call number (sys_write)
int 0x80 ;call kernel
mov edx,9 ;message length
mov ecx,s2 ;message to write
mov ebx,1 ;file descriptor (stdout)
mov eax,4 ;system call number (sys_write)
int 0x80 ;call kernel
mov eax,1 ;system call number (sys_exit)
int 0x80 ;call kernel
section .data
msg db 'Displaying 9 stars',0xa ;a message
len equ $ - msg ;length of message
s2 times 9 db '*'
Whenthe above code is compiled and executed, it produces the following result:
Displaying 9 stars
*********

More Related Content

What's hot (19)

Computer registers
Computer registersComputer registers
Computer registers
 
Addressing modes (detailed data path)
Addressing modes (detailed data path)Addressing modes (detailed data path)
Addressing modes (detailed data path)
 
Computer organisation
Computer organisationComputer organisation
Computer organisation
 
What is CPU Register? Type of CPU Register.
What is CPU Register? Type of CPU Register.What is CPU Register? Type of CPU Register.
What is CPU Register? Type of CPU Register.
 
Ch3
Ch3Ch3
Ch3
 
Advanced microprocessor
Advanced microprocessorAdvanced microprocessor
Advanced microprocessor
 
Module 4 advanced microprocessors
Module 4 advanced microprocessorsModule 4 advanced microprocessors
Module 4 advanced microprocessors
 
Processor Basics
Processor BasicsProcessor Basics
Processor Basics
 
Assembly Language
Assembly LanguageAssembly Language
Assembly Language
 
Registers and-common-bus
Registers and-common-busRegisters and-common-bus
Registers and-common-bus
 
Computers6 Ch4 1
Computers6 Ch4 1Computers6 Ch4 1
Computers6 Ch4 1
 
Bindura university of science education
Bindura university of science educationBindura university of science education
Bindura university of science education
 
8086 Introduction
8086 Introduction8086 Introduction
8086 Introduction
 
8085 archi
8085 archi8085 archi
8085 archi
 
Chapter 4
Chapter 4Chapter 4
Chapter 4
 
Microprocessor
MicroprocessorMicroprocessor
Microprocessor
 
Cpu registers
Cpu registersCpu registers
Cpu registers
 
Chapter 7
Chapter 7Chapter 7
Chapter 7
 
Pai unit 1_l1-l2-l3-l4_upload
Pai unit 1_l1-l2-l3-l4_uploadPai unit 1_l1-l2-l3-l4_upload
Pai unit 1_l1-l2-l3-l4_upload
 

Similar to N_Asm Assembly registers (sol)

Introduction to CPU registers
Introduction to CPU registersIntroduction to CPU registers
Introduction to CPU registersMuhammad Waqas
 
8086 Microprocessor
8086 Microprocessor 8086 Microprocessor
8086 Microprocessor Vijay Kumar
 
digital communication,micro processor,pulse and digital circuits
digital communication,micro processor,pulse and digital circuitsdigital communication,micro processor,pulse and digital circuits
digital communication,micro processor,pulse and digital circuitsManasa Mona
 
Register introduction
Register introductionRegister introduction
Register introductionmaamir farooq
 
microprocessor_part_3_compressed_1588259301.pdf
microprocessor_part_3_compressed_1588259301.pdfmicroprocessor_part_3_compressed_1588259301.pdf
microprocessor_part_3_compressed_1588259301.pdfssuserd21262
 
26677766 8086-microprocessor-architecture
26677766 8086-microprocessor-architecture26677766 8086-microprocessor-architecture
26677766 8086-microprocessor-architectureSaurabh Jain
 
Intel Microprocessors 8086 Documentation
Intel Microprocessors 8086 DocumentationIntel Microprocessors 8086 Documentation
Intel Microprocessors 8086 DocumentationAdeel Rasheed
 
SAQIB ALI.pptx
SAQIB ALI.pptxSAQIB ALI.pptx
SAQIB ALI.pptxastik11
 
3 organization of intel 8086
3 organization of intel 80863 organization of intel 8086
3 organization of intel 8086ELIMENG
 
8086 handout for chapter one and two
8086 handout for chapter one and two8086 handout for chapter one and two
8086 handout for chapter one and twohaymanotyehuala
 
INTEL 8086 MP Architecture
INTEL 8086 MP ArchitectureINTEL 8086 MP Architecture
INTEL 8086 MP ArchitectureMd. Arif Hossain
 
Microprocessor Architecture.pptx
Microprocessor Architecture.pptxMicroprocessor Architecture.pptx
Microprocessor Architecture.pptxCaptain Price
 

Similar to N_Asm Assembly registers (sol) (20)

Chapter 2
Chapter 2Chapter 2
Chapter 2
 
Introduction to CPU registers
Introduction to CPU registersIntroduction to CPU registers
Introduction to CPU registers
 
8086 Microprocessor
8086 Microprocessor 8086 Microprocessor
8086 Microprocessor
 
digital communication,micro processor,pulse and digital circuits
digital communication,micro processor,pulse and digital circuitsdigital communication,micro processor,pulse and digital circuits
digital communication,micro processor,pulse and digital circuits
 
intel 8086 introduction
intel 8086 introductionintel 8086 introduction
intel 8086 introduction
 
Register introduction
Register introductionRegister introduction
Register introduction
 
microprocessor_part_3_compressed_1588259301.pdf
microprocessor_part_3_compressed_1588259301.pdfmicroprocessor_part_3_compressed_1588259301.pdf
microprocessor_part_3_compressed_1588259301.pdf
 
Arch 8086
Arch 8086Arch 8086
Arch 8086
 
Amp
AmpAmp
Amp
 
26677766 8086-microprocessor-architecture
26677766 8086-microprocessor-architecture26677766 8086-microprocessor-architecture
26677766 8086-microprocessor-architecture
 
Intel 8086
Intel 8086 Intel 8086
Intel 8086
 
8086 architecture
8086 architecture8086 architecture
8086 architecture
 
Intel Microprocessors 8086 Documentation
Intel Microprocessors 8086 DocumentationIntel Microprocessors 8086 Documentation
Intel Microprocessors 8086 Documentation
 
SAQIB ALI.pptx
SAQIB ALI.pptxSAQIB ALI.pptx
SAQIB ALI.pptx
 
3 organization of intel 8086
3 organization of intel 80863 organization of intel 8086
3 organization of intel 8086
 
8051 microcontroller
 8051 microcontroller 8051 microcontroller
8051 microcontroller
 
8086 handout for chapter one and two
8086 handout for chapter one and two8086 handout for chapter one and two
8086 handout for chapter one and two
 
INTEL 8086 MP Architecture
INTEL 8086 MP ArchitectureINTEL 8086 MP Architecture
INTEL 8086 MP Architecture
 
110 ec0644
110 ec0644110 ec0644
110 ec0644
 
Microprocessor Architecture.pptx
Microprocessor Architecture.pptxMicroprocessor Architecture.pptx
Microprocessor Architecture.pptx
 

More from Selomon birhane

N_Asm Assembly system calls (sol)
N_Asm Assembly system calls (sol)N_Asm Assembly system calls (sol)
N_Asm Assembly system calls (sol)Selomon birhane
 
N_Asm Assembly basic syntax (sol)
N_Asm Assembly basic syntax (sol)N_Asm Assembly basic syntax (sol)
N_Asm Assembly basic syntax (sol)Selomon birhane
 
N_Asm Assembly addressing modes (sol)
N_Asm Assembly addressing modes (sol)N_Asm Assembly addressing modes (sol)
N_Asm Assembly addressing modes (sol)Selomon birhane
 
N_Asm Assembly arrays (sol)
N_Asm Assembly arrays (sol)N_Asm Assembly arrays (sol)
N_Asm Assembly arrays (sol)Selomon birhane
 
N_Asm Assembly arithmetic instructions (sol)
N_Asm Assembly arithmetic instructions (sol)N_Asm Assembly arithmetic instructions (sol)
N_Asm Assembly arithmetic instructions (sol)Selomon birhane
 
N_Asm Assembly recursion (sol)
N_Asm Assembly recursion (sol)N_Asm Assembly recursion (sol)
N_Asm Assembly recursion (sol)Selomon birhane
 
N_Asm Assembly strings (sol)
N_Asm Assembly strings (sol)N_Asm Assembly strings (sol)
N_Asm Assembly strings (sol)Selomon birhane
 
N_Asm Assembly numbers (sol)
N_Asm Assembly numbers (sol)N_Asm Assembly numbers (sol)
N_Asm Assembly numbers (sol)Selomon birhane
 
N_Asm Assembly variables (sol)
N_Asm Assembly variables (sol)N_Asm Assembly variables (sol)
N_Asm Assembly variables (sol)Selomon birhane
 
N_Asm Assembly macros (sol)
N_Asm Assembly macros (sol)N_Asm Assembly macros (sol)
N_Asm Assembly macros (sol)Selomon birhane
 
Control system(smarajit ghosh) By sol
Control system(smarajit ghosh) By solControl system(smarajit ghosh) By sol
Control system(smarajit ghosh) By solSelomon birhane
 

More from Selomon birhane (12)

N_Asm Assembly system calls (sol)
N_Asm Assembly system calls (sol)N_Asm Assembly system calls (sol)
N_Asm Assembly system calls (sol)
 
N_Asm Assembly basic syntax (sol)
N_Asm Assembly basic syntax (sol)N_Asm Assembly basic syntax (sol)
N_Asm Assembly basic syntax (sol)
 
N_Asm Assembly addressing modes (sol)
N_Asm Assembly addressing modes (sol)N_Asm Assembly addressing modes (sol)
N_Asm Assembly addressing modes (sol)
 
N_Asm Assembly arrays (sol)
N_Asm Assembly arrays (sol)N_Asm Assembly arrays (sol)
N_Asm Assembly arrays (sol)
 
N_Asm Assembly arithmetic instructions (sol)
N_Asm Assembly arithmetic instructions (sol)N_Asm Assembly arithmetic instructions (sol)
N_Asm Assembly arithmetic instructions (sol)
 
N_Asm Assembly recursion (sol)
N_Asm Assembly recursion (sol)N_Asm Assembly recursion (sol)
N_Asm Assembly recursion (sol)
 
N_Asm Assembly strings (sol)
N_Asm Assembly strings (sol)N_Asm Assembly strings (sol)
N_Asm Assembly strings (sol)
 
N_Asm Assembly numbers (sol)
N_Asm Assembly numbers (sol)N_Asm Assembly numbers (sol)
N_Asm Assembly numbers (sol)
 
N_Asm Assembly variables (sol)
N_Asm Assembly variables (sol)N_Asm Assembly variables (sol)
N_Asm Assembly variables (sol)
 
N_Asm Assembly macros (sol)
N_Asm Assembly macros (sol)N_Asm Assembly macros (sol)
N_Asm Assembly macros (sol)
 
Control system(smarajit ghosh) By sol
Control system(smarajit ghosh) By solControl system(smarajit ghosh) By sol
Control system(smarajit ghosh) By sol
 
Two ports
Two ports Two ports
Two ports
 

Recently uploaded

Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
software engineering Chapter 5 System modeling.pptx
software engineering Chapter 5 System modeling.pptxsoftware engineering Chapter 5 System modeling.pptx
software engineering Chapter 5 System modeling.pptxnada99848
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 

Recently uploaded (20)

Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
software engineering Chapter 5 System modeling.pptx
software engineering Chapter 5 System modeling.pptxsoftware engineering Chapter 5 System modeling.pptx
software engineering Chapter 5 System modeling.pptx
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 

N_Asm Assembly registers (sol)

  • 1. http://www.tutorialspoint.com/assembly_prog ramming /assembly_reg isters.htm Copyright © tutorialspoint.com ASSEMBLY - REGISTERS Processor operations mostly involve processing data. This data canbe stored inmemory and accessed from thereon. However, reading data fromand storing data into memory slows downthe processor, as it involves complicated processes of sending the data request across the controlbus and into the memory storage unit and getting the data throughthe same channel. To speed up the processor operations, the processor includes some internalmemory storage locations, called registers. The registers store data elements for processing without having to access the memory. A limited number of registers are built into the processor chip. Processor Registers There are ten32-bit and six 16-bit processor registers inIA-32 architecture. The registers are grouped into three categories: Generalregisters Controlregisters Segment registers The generalregisters are further divided into the following groups: Data registers Pointer registers Index registers Data Registers Four 32-bit data registers are used for arithmetic, logicaland other operations. These 32-bit registers canbe used inthree ways: 1. As complete 32-bit data registers: EAX, EBX, ECX, EDX. 2. Lower halves of the 32-bit registers canbe used as four 16-bit data registers: AX, BX, CX and DX. 3. Lower and higher halves of the above-mentioned four 16-bit registers canbe used as eight 8-bit data registers: AH, AL, BH, BL, CH, CL, DH, and DL. Some of these data registers have specific use inarithmeticaloperations. AX is the primary accumulator; it is used ininput/output and most arithmetic instructions. For example, in multiplicationoperation, one operand is stored inEAX or AX or AL register according to the size of the operand.
  • 2. BX is known as the base register as it could be used inindexed addressing. CX is known as the count register as the ECX, CX registers store the loop count initerative operations. DX is known as the data register. It is also used ininput/output operations. It is also used withAX register along withDX for multiply and divide operations involving large values. Pointer Registers The pointer registers are 32-bit EIP, ESP and EBP registers and corresponding 16-bit right portions IP, SP and BP. There are three categories of pointer registers: Instruction Pointer (IP) - the 16-bit IP register stores the offset address of the next instructionto be executed. IP inassociationwiththe CS register (as CS:IP) gives the complete address of the current instructioninthe code segment. Stack Pointer (SP) - the 16-bit SP register provides the offset value withinthe programstack. SP in associationwiththe SS register (SS:SP) refers to be current positionof data or address withinthe programstack. Base Pointer (BP) - the 16-bit BP register mainly helps inreferencing the parameter variables passed to a subroutine. The address inSS register is combined withthe offset inBP to get the locationof the parameter. BP canalso be combined withDI and SI as base register for specialaddressing. Index Registers The 32-bit index registers ESI and EDI and their 16-bit rightmost portions SI and DI are used for indexed addressing and sometimes used inadditionand subtraction. There are two sets of index pointers: Source Index (SI) - it is used as source index for string operations Destination Index (DI) - it is used as destinationindex for string operations. Control Registers The 32-bit instructionpointer register and 32-bit flags register combined are considered as the control registers. Many instructions involve comparisons and mathematicalcalculations and change the status of the flags and some other conditionalinstructions test the value of these status flags to take the controlflow to other location. The commonflag bits are: Overflow Flag (OF): indicates the overflow of a high-order bit (leftmost bit) of data after a signed arithmetic operation.
  • 3. Direction Flag (DF): determines left or right directionfor moving or comparing string data. Whenthe DF value is 0, the string operationtakes left-to-right directionand whenthe value is set to 1, the string operationtakes right-to-left direction. Interrupt Flag (IF): determines whether the externalinterrupts like keyboard entry, etc., are to be ignored or processed. It disables the externalinterrupt whenthe value is 0 and enables interrupts when set to 1. Trap Flag (TF): allows setting the operationof the processor insingle-step mode. The DEBUG programwe used sets the trap flag, so we could step throughthe executionone instructionat a time. Sign Flag (SF): shows the signof the result of anarithmetic operation. This flag is set according to the signof a data itemfollowing the arithmetic operation. The signis indicated by the high-order of leftmost bit. A positive result clears the value of SF to 0 and negative result sets it to 1. Zero Flag (ZF): indicates the result of anarithmetic or comparisonoperation. A nonzero result clears the zero flag to 0, and a zero result sets it to 1. Auxiliary Carry Flag (AF): contains the carry frombit 3 to bit 4 following anarithmetic operation; used for specialized arithmetic. The AF is set whena 1-byte arithmetic operationcauses a carry frombit 3 into bit 4. Parity Flag (PF): indicates the totalnumber of 1-bits inthe result obtained fromanarithmetic operation. Anevennumber of 1-bits clears the parity flag to 0 and anodd number of 1-bits sets the parity flag to 1. Carry Flag (CF): contains the carry of 0 or 1 froma high-order bit (leftmost) after anarithmetic operation. It also stores the contents of last bit of a shift or rotate operation. The following table indicates the positionof flag bits inthe 16-bit Flags register: Flag: O D I T S Z A P C Bit no: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Segment Registers Segments are specific areas defined ina programfor containing data, code and stack. There are three main segments: Code Segment: it contains allthe instructions to be executed. A 16-bit Code Segment register or CS register stores the starting address of the code segment. Data Segment: it contains data, constants and work areas. A 16-bit Data Segment register or DS register stores the starting address of the data segment. Stack Segment: it contains data and returnaddresses of procedures or subroutines. It is implemented as a 'stack' data structure. The Stack Segment register or SS register stores the starting address of the stack. Apart fromthe DS, CS and SS registers, there are other extra segment registers - ES (extra segment), FS and GS, whichprovide additionalsegments for storing data. Inassembly programming, a programneeds to access the memory locations. Allmemory locations withina segment are relative to the starting address of the segment. A segment begins inanaddress evenly divisible by 16 or hexadecimal10. So, the rightmost hex digit inallsuchmemory addresses is 0, whichis not generally stored inthe segment registers. The segment registers stores the starting addresses of a segment. To get the exact locationof data or instructionwithina segment, anoffset value (or displacement) is required. To reference any memory locationina segment, the processor combines the segment address inthe segment register withthe offset value of the location. Example:
  • 4. Look at the following simple programto understand the use of registers inassembly programming. This programdisplays 9 stars onthe screenalong witha simple message: section .text global _start ;must be declared for linker (gcc) _start: ;tell linker entry point mov edx,len ;message length mov ecx,msg ;message to write mov ebx,1 ;file descriptor (stdout) mov eax,4 ;system call number (sys_write) int 0x80 ;call kernel mov edx,9 ;message length mov ecx,s2 ;message to write mov ebx,1 ;file descriptor (stdout) mov eax,4 ;system call number (sys_write) int 0x80 ;call kernel mov eax,1 ;system call number (sys_exit) int 0x80 ;call kernel section .data msg db 'Displaying 9 stars',0xa ;a message len equ $ - msg ;length of message s2 times 9 db '*' Whenthe above code is compiled and executed, it produces the following result: Displaying 9 stars *********