banner



How To Store A Value In Si Register

Associates - Registers


Processor operations mostly involve processing data. This data can exist stored in retentivity and accessed from thereon. However, reading data from and storing data into retention slows down the processor, equally it involves complicated processes of sending the data request across the control omnibus and into the retention storage unit and getting the data through the same channel.

To speed up the processor operations, the processor includes some internal memory 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 bit.

Processor Registers

There are ten 32-flake and half dozen sixteen-bit processor registers in IA-32 architecture. The registers are grouped into 3 categories −

  • General registers,
  • Control registers, and
  • Segment registers.

The general registers are further divided into the following groups −

  • Data registers,
  • Arrow registers, and
  • Alphabetize registers.

Data Registers

Iv 32-bit data registers are used for arithmetic, logical, and other operations. These 32-bit registers tin be used in 3 ways −

  • As complete 32-fleck data registers: EAX, EBX, ECX, EDX.

  • Lower halves of the 32-fleck registers can exist used as 4 sixteen-bit data registers: AX, BX, CX and DX.

  • Lower and higher halves of the in a higher place-mentioned 4 16-bit registers tin exist used as eight 8-bit data registers: AH, AL, BH, BL, CH, CL, DH, and DL.

Data Registers

Some of these information registers have specific utilise in arithmetical operations.

AX is the primary accumulator; information technology is used in input/output and nearly arithmetics instructions. For example, in multiplication performance, one operand is stored in EAX or AX or AL annals according to the size of the operand.

BX is known as the base of operations register, as it could be used in indexed addressing.

CX is known as the count annals, as the ECX, CX registers store the loop count in iterative operations.

DX is known as the data register. It is likewise used in input/output operations. It is also used with AX register forth with DX for multiply and dissever operations involving large values.

Pointer Registers

The pointer registers are 32-bit EIP, ESP, and EBP registers and respective 16-bit right portions IP, SP, and BP. At that place are three categories of pointer registers −

  • Educational activity Pointer (IP) − The 16-chip IP register stores the offset address of the next educational activity to be executed. IP in association with the CS register (as CS:IP) gives the consummate address of the current teaching in the code segment.

  • Stack Pointer (SP) − The sixteen-bit SP register provides the offset value within the program stack. SP in association with the SS register (SS:SP) refers to be electric current position of data or address within the plan stack.

  • Base Pointer (BP) − The 16-flake BP register mainly helps in referencing the parameter variables passed to a subroutine. The address in SS annals is combined with the offset in BP to get the location of the parameter. BP tin too be combined with DI and SI as base register for special addressing.

Pointer Registers

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 in addition and subtraction. There are two sets of index pointers −

  • Source Index (SI) − Information technology is used every bit source index for string operations.

  • Destination Index (DI) − It is used as destination alphabetize for string operations.

Index Registers

Control Registers

The 32-bit instruction arrow register and the 32-chip flags register combined are considered as the control registers.

Many instructions involve comparisons and mathematical calculations and change the status of the flags and another conditional instructions examination the value of these status flags to have the command flow to other location.

The common flag bits are:

  • Overflow Flag (OF) − It indicates the overflow of a high-gild bit (leftmost bit) of information after a signed arithmetic operation.

  • Direction Flag (DF) − It determines left or right direction for moving or comparison string data. When the DF value is 0, the string operation takes left-to-right direction and when the value is fix to 1, the string operation takes correct-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 ready to 1.

  • Trap Flag (TF) − Information technology allows setting the operation of the processor in unmarried-stride mode. The DEBUG programme we used sets the trap flag, then nosotros could step through the execution one didactics at a time.

  • Sign Flag (SF) − It shows the sign of the outcome of an arithmetic operation. This flag is set co-ordinate to the sign of a information item following the arithmetic operation. The sign is indicated by the high-lodge of leftmost flake. A positive event clears the value of SF to 0 and negative effect sets information technology to 1.

  • Zero Flag (ZF) − Information technology indicates the result of an arithmetic or comparing operation. A nonzero upshot clears the zippo flag to 0, and a zero issue sets information technology to 1.

  • Auxiliary Carry Flag (AF) − It contains the carry from bit three to bit 4 following an arithmetic operation; used for specialized arithmetic. The AF is set when a 1-byte arithmetics operation causes a carry from bit 3 into fleck 4.

  • Parity Flag (PF) − It indicates the total number of i-bits in the consequence obtained from an arithmetics operation. An fifty-fifty number of 1-$.25 clears the parity flag to 0 and an odd number of 1-bits sets the parity flag to 1.

  • Carry Flag (CF) − It contains the carry of 0 or 1 from a high-club bit (leftmost) after an arithmetic functioning. Information technology also stores the contents of last chip of a shift or rotate operation.

The post-obit table indicates the position of flag $.25 in the 16-bit Flags register:

Flag: O D I T Southward Z A P C
Flake no: 15 fourteen 13 12 11 10 9 8 7 6 5 4 iii 2 1 0

Segment Registers

Segments are specific areas divers in a plan for containing data, code and stack. There are iii main segments −

  • Code Segment − It contains all the instructions to be executed. A 16-scrap Code Segment register or CS register stores the starting accost of the code segment.

  • Information Segment − It contains data, constants and work areas. A 16-bit Data Segment register or DS annals stores the starting accost of the data segment.

  • Stack Segment − It contains information and return addresses of procedures or subroutines. It is implemented as a 'stack' information structure. The Stack Segment register or SS register stores the starting address of the stack.

Apart from the DS, CS and SS registers, there are other extra segment registers - ES (extra segment), FS and GS, which provide boosted segments for storing information.

In assembly programming, a program needs to access the memory locations. All memory locations inside a segment are relative to the starting address of the segment. A segment begins in an accost evenly divisible by 16 or hexadecimal 10. Then, 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 get the exact location of data or instruction within a segment, an offset value (or deportation) is required. To reference any retentiveness location in a segment, the processor combines the segment address in the segment register with the offset value of the location.

Example

Look at the following unproblematic plan to sympathise the apply of registers in assembly programming. This plan displays 9 stars on the screen along with a elementary message −

section	.text    global _start	 ;must be alleged for linker (gcc) 	 _start:	         ;tell linker entry betoken    mov	edx,len  ;message length    mov	ecx,msg  ;bulletin to write    mov	ebx,1    ;file descriptor (stdout)    mov	eax,4    ;system call number (sys_write)    int	0x80     ;telephone call kernel 	    mov	edx,9    ;message length    mov	ecx,s2   ;bulletin to write    mov	ebx,1    ;file descriptor (stdout)    mov	eax,iv    ;arrangement call number (sys_write)    int	0x80     ;call kernel 	    mov	eax,1    ;arrangement telephone call number (sys_exit)    int	0x80     ;call kernel 	 section	.data msg db 'Displaying 9 stars',0xa ;a bulletin len equ $ - msg  ;length of message s2 times ix db '*'        

When the higher up code is compiled and executed, information technology produces the following upshot −

Displaying ix stars *********        

How To Store A Value In Si Register,

Source: https://www.tutorialspoint.com/assembly_programming/assembly_registers.htm

Posted by: williamsabad1979.blogspot.com

0 Response to "How To Store A Value In Si Register"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel