Do You Need To Bring Into Register When Dividing In Memory
Associates - Registers
Processor operations mostly involve processing data. This information can be stored in memory and accessed from thereon. All the same, reading data from and storing information into retention slows downwardly the processor, every bit it involves complicated processes of sending the data request beyond the control jitney and into the memory storage unit and getting the data through the same channel.
To speed up the processor operations, the processor includes some internal retentivity storage locations, called registers.
The registers store data elements for processing without having to admission the retentivity. A limited number of registers are congenital into the processor chip.
Processor Registers
There are ten 32-bit and vi 16-bit processor registers in IA-32 compages. The registers are grouped into iii categories −
- Full general registers,
- Control registers, and
- Segment registers.
The general registers are further divided into the post-obit groups −
- Information registers,
- Arrow registers, and
- Alphabetize registers.
Data Registers
Iv 32-bit information registers are used for arithmetic, logical, and other operations. These 32-chip registers tin can be used in three means −
-
Equally consummate 32-chip data registers: EAX, EBX, ECX, EDX.
-
Lower halves of the 32-fleck registers can exist used as four 16-flake data registers: AX, BX, CX and DX.
-
Lower and college halves of the in a higher place-mentioned iv 16-fleck registers can be used as eight 8-bit information registers: AH, AL, BH, BL, CH, CL, DH, and DL.
Some of these data registers accept specific employ in arithmetical operations.
AX is the master accumulator; it is used in input/output and almost arithmetic instructions. For instance, in multiplication operation, one operand is stored in EAX or AX or AL register according to the size of the operand.
BX is known equally the base register, as information technology could be used in indexed addressing.
CX is known as the count register, as the ECX, CX registers shop the loop count in iterative operations.
DX is known as the data register. It is also used in input/output operations. It is also used with AX register forth with DX for multiply and divide operations involving large values.
Pointer Registers
The pointer registers are 32-fleck EIP, ESP, and EBP registers and corresponding 16-flake right portions IP, SP, and BP. At that place are 3 categories of arrow registers −
-
Didactics Pointer (IP) − The xvi-bit IP register stores the offset address of the next instruction to be executed. IP in association with the CS register (equally CS:IP) gives the complete address of the current instruction in the code segment.
-
Stack Pointer (SP) − The 16-scrap SP register provides the offset value within the programme stack. SP in association with the SS register (SS:SP) refers to be current position of data or address within the plan stack.
-
Base Pointer (BP) − The 16-bit BP annals mainly helps in referencing the parameter variables passed to a subroutine. The address in SS register is combined with the commencement in BP to get the location of the parameter. BP can also be combined with DI and SI as base of operations register for special addressing.
Alphabetize Registers
The 32-bit index registers, ESI and EDI, and their xvi-chip rightmost portions. SI and DI, are used for indexed addressing and sometimes used in addition and subtraction. There are ii sets of index pointers −
-
Source Index (SI) − It is used as source index for string operations.
-
Destination Index (DI) − It is used every bit destination index for string operations.
Control Registers
The 32-bit pedagogy pointer register and the 32-fleck flags register combined are considered equally the control registers.
Many instructions involve comparisons and mathematical calculations and alter the condition of the flags and some other conditional instructions test the value of these status flags to take the command flow to other location.
The common flag bits are:
-
Overflow Flag (OF) − It indicates the overflow of a high-order fleck (leftmost bit) of data after a signed arithmetic operation.
-
Direction Flag (DF) − It determines left or correct management for moving or comparing string data. When the DF value is 0, the string functioning takes left-to-right direction and when the value is ready to 1, the cord operation takes right-to-left management.
-
Interrupt Flag (IF) − It determines whether the external interrupts like keyboard entry, etc., are to exist ignored or processed. It disables the external interrupt when the value is 0 and enables interrupts when set to one.
-
Trap Flag (TF) − It allows setting the operation of the processor in single-pace mode. The DEBUG program we used sets the trap flag, and then we could step through the execution one instruction at a time.
-
Sign Flag (SF) − It shows the sign of the issue of an arithmetics operation. This flag is prepare co-ordinate to the sign of a data item following the arithmetic operation. The sign is indicated by the high-social club of leftmost fleck. A positive result clears the value of SF to 0 and negative result sets it to 1.
-
Null Flag (ZF) − It indicates the event of an arithmetic or comparison operation. A nonzero issue clears the zero flag to 0, and a zero upshot sets it to 1.
-
Auxiliary Deport Flag (AF) − It contains the carry from flake three to bit 4 following an arithmetics operation; used for specialized arithmetics. The AF is set up when a ane-byte arithmetic operation causes a carry from bit 3 into bit 4.
-
Parity Flag (PF) − It indicates the total number of ane-bits in the issue obtained from an arithmetic operation. An even number of 1-bits clears the parity flag to 0 and an odd number of 1-bits sets the parity flag to ane.
-
Carry Flag (CF) − It contains the comport of 0 or one from a high-order fleck (leftmost) after an arithmetic operation. It also stores the contents of concluding flake of a shift or rotate operation.
The following tabular array indicates the position of flag bits in the sixteen-bit Flags annals:
Flag: | O | D | I | T | S | Z | A | P | C | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Scrap no: | xv | fourteen | xiii | 12 | xi | x | ix | 8 | vii | 6 | v | 4 | three | two | 1 | 0 |
Segment Registers
Segments are specific areas defined in a plan for containing data, code and stack. At that place are three main segments −
-
Code Segment − It contains all the instructions to be executed. A 16-bit Lawmaking Segment register or CS register stores the starting address of the code segment.
-
Data Segment − Information technology contains data, constants and piece of work areas. A sixteen-scrap Data Segment register or DS register stores the starting accost of the data segment.
-
Stack Segment − Information technology contains information and return addresses of procedures or subroutines. It is implemented equally a 'stack' data structure. The Stack Segment register or SS annals stores the starting address of the stack.
Apart from the DS, CS and SS registers, there are other extra segment registers - ES (actress segment), FS and GS, which provide additional segments for storing data.
In associates programming, a program needs to admission the retentivity locations. All retentivity locations within a segment are relative to the starting accost of the segment. A segment begins in an address evenly divisible by 16 or hexadecimal 10. So, the rightmost hex digit in all such memory addresses is 0, which is not generally stored in the segment registers.
The segment registers stores the starting addresses of a segment. To become the verbal location of data or instruction inside a segment, an get-go value (or deportation) is required. To reference any memory location in a segment, the processor combines the segment accost in the segment register with the offset value of the location.
Case
Look at the following simple program to sympathize the employ of registers in assembly programming. This program displays ix stars on the screen along with a simple message −
department .text global _start ;must be declared for linker (gcc) _start: ;tell linker entry point mov edx,len ;message length mov ecx,msg ;bulletin to write mov ebx,1 ;file descriptor (stdout) mov eax,4 ;organization phone call number (sys_write) int 0x80 ;phone call kernel mov edx,9 ;message length mov ecx,s2 ;message to write mov ebx,one ;file descriptor (stdout) mov eax,four ;arrangement call number (sys_write) int 0x80 ;call kernel mov eax,ane ;system call number (sys_exit) int 0x80 ;call kernel section .data msg db 'Displaying nine stars',0xa ;a message len equ $ - msg ;length of message s2 times 9 db '*'
When the above code is compiled and executed, information technology produces the following result −
Displaying 9 stars *********
Useful Video Courses
Video
Video
Do You Need To Bring Into Register When Dividing In Memory,
Source: https://www.tutorialspoint.com/assembly_programming/assembly_registers.htm
Posted by: dannapagel1965.blogspot.com
0 Response to "Do You Need To Bring Into Register When Dividing In Memory"
Post a Comment