What is a storage location in the computers memory called that has a type name and contents?
Charles J. Fraser, ... (Sections 3.5.1–3.5.8), in
Mechanical Engineer's Reference Book (Twelfth Edition), 1994 The memory locations in RAM and ROM, which the processor can
address, must accommodate space for such requirements as system monitor and utilities, user software and input/output. The manufacturer of the microcomputer assigns an area of memory for each functional requirement and provides the necessary information in a system memory map. In 8-bit systems, with 64K of addressable memory, the memory map is usually composed of 32K of RAM and 32K of ROM or EPROM. The ROM holds the operating system software and normally
some space is available in EPROM form for user firmware. In addition to providing space for user programs, the RAM area contains the system stack and the visual monitor data storage. The I/O facilities are also assigned an area of memory in a memory mapped system. In a 6502 or 6800 based system the RAM is usually low down in memory and the ROM is high up. A typical memory map is shown in Figure 3.3. The I/O is accommodated
anywhere within the above structure and varies from one manufacturer to another. Figure 3.3. System memory map The display screen RAM is often fitted with a moveable boundary in order to set variable resolution modes for graphics. Typically, the screen memory need only be IK for a text mode to give a 40 × 25 character display. This would be insufficient for computer graphics and a high resolution would require 20K of memory to MAP the screen. It should be noted that this greatly reduces the amount of RAM available to the user. 8080- and Z80-based systems have a distribution of memory similar to that as shown in Figure 3.3. The ROM, however, is usually low down and the RAM high up in the memory map. The 16-bit PCs, with a 20-bit address bus, have 1M byte of addressable memory with the RAM comprising the first three quarters and ROM occupying the last quarter. A general memory map showing the distribution of RAM/ROM for a PC is given in Figure 3.4. Figure 3.4. General memory map for a PC A familiarity with the memory map of the system to be used in any data-acquisition application is essential, since it indicates the areas reserved for the operating system. The programmer can then knowledgeably determine the locations available for data storage and machine-code programs. Read full chapter URL: https://www.sciencedirect.com/science/article/pii/B9780750611954500075 Instruction Usage ExamplesJoseph Yiu, in The Definitive Guide to the ARM Cortex-M0, 2011 Simple Data AccessesNormally the memory locations (physical addresses) of software variables are defined by the linker. However, we can write the software code to access to the variables as long as we know the symbol of the variables. For example, if we need to calculate the sum of an integer array “DataIn” with 10 elements (32-bit each) and put the result in another variable called “Sum” (also 32-bit), we can use the following assembly code: LDR r0,=DataIn; Get the address of variable 'DataIn' MOVS r1, #10 ; loop counter MOVS r2, #0 ; Result - starting from 0 add_loop LDM r0!,{r3} ; Load result and increment address ADDS r2, r3 ; add to result SUBS r1, #1 ; increment loop counter BNE add_loop LDR r0,=Sum ; Get the address of variable 'Sum' STR r2,[r0] ; Save result to Sum In the preceding example, we use the LDM instruction rather than a normal LDR instruction. This allows us to read the memory and increment the address to the next array element at the same time. When using assembly to access data, we need to pay attention to a few things: •Use correct instruction for corresponding data size. Different instructions are available for different data sizes. •Make sure that the access is aligned. If an access is unaligned, it will trigger a fault exception. This can happen if an instruction of incorrect data size is used to access a data. •Various addressing modes are available and can simplify your assembly codes. For example, when programming/accessing a peripheral, you can set a register to its base address value and then use an immediate offset addressing mode for accessing each register. In this way, you do not have to set up the register address every time a different register is accessed. Read full chapter URL: https://www.sciencedirect.com/science/article/pii/B9780123854773100060 Microcomputer Buses and LinksJ.D. Nicoud, in Encyclopedia of Physical Science and Technology (Third Edition), 2003 I.D Special CyclesFrequently, consecutive memory locations must be transferred over the bus. Moving the address once and incrementing a counter on the memory are more efficient than sending the address each time, especially if the bus is multiplexed. Block transfers are supported by the most complex buses and are available with limitations on the most recent 32-bit microprocessors. Reading from many devices simultaneously is called broadcall. This costs additional bus lines and transfer time and is not frequently implemented. Combined cycles are possible. Read–modify–write cycles are interesting in multiprocessor systems. Read-after-write cycles are never implemented because one has confidence in what has been written. Finally, split cycles are a way of having only write cycles in the system. In order to read some information, one writes a read request and waits. The slave interrupts the master to get its information read, and the process may continue. This is useful when the slave, for example, a disk interface, transfers blocks of data and is slow: It would be inefficient to wait for an acknowledge. Read full chapter URL: https://www.sciencedirect.com/science/article/pii/B0122274105004397 Memory SystemsJoseph Yiu, in The Definitive Guide to the ARM Cortex-M3 (Second Edition), 2010 5.2 Memory MapsThe Cortex-M3 processor has a fixed memory map (see Figure 5.1). This makes it easier to port software from one Cortex-M3 product to another. For example, components described in previous sections, such as Nested Vectored Interrupt Controller (NVIC) and Memory Protection Unit (MPU), have the same memory locations in all Cortex-M3 products. Nevertheless, the memory map definition allows great flexibility so that manufacturers can differentiate their Cortex-M3-based product from others. FIGURE 5.1. Cortex-M3 Predefined Memory Map. Some of the memory locations are allocated for private peripherals such as debugging components. They are located in the private peripheral memory region. These debugging components include the following: •Fetch Patch and Breakpoint Unit (FPB) •Data Watchpoint and Trace Unit (DWT) •Instrumentation Trace Macrocell (ITM) Embedded Trace Macrocell (ETM) •Trace Port Interface Unit (TPIU) •ROM table The details of these components are discussed in later chapters on debugging features. The Cortex-M3 processor has a total of 4 GB of address space. Program code can be located in the code region, the Static Random Access Memory (SRAM) region, or the external RAM region. However, it is best to put the program code in the code region because with this arrangement, the instruction fetches and data accesses are carried out simultaneously on two separate bus interfaces. The SRAM memory range is for connecting internal SRAM. Access to this region is carried out via the system interface bus. In this region, a 32-MB range is defined as a bit-band alias. Within the 32-bit‑band alias memory range, each word address represents a single bit in the 1-MB bit-band region. A data write access to this bit-band alias memory range will be converted to an atomic READ-MODIFY-WRITE operation to the bit-band region so as to allow a program to set or clear individual data bits in the memory. The bit-band operation applies only to data accesses not instruction fetches. By putting Boolean information (single bits) in the bit-band region, we can pack multiple Boolean data in a single word while still allowing them to be accessible individually via bit-band alias, thus saving memory space without the need for handling READ-MODIFY-WRITE in software. More details on bit-band alias can be found later in this chapter. Another 0.5-GB block of address range is allocated to on-chip peripherals. Similar to the SRAM region, this region supports bit-band alias and is accessed via the system bus interface. However, instruction execution in this region is not allowed. The bit-band support in the peripheral region makes it easy to access or change control and status bits of peripherals, making it easier to program peripheral control. Two slots of 1-GB memory space are allocated for external RAM and external devices. The difference between the two is that program execution in the external device region is not allowed, and there are some differences with the caching behaviors. The last 0.5-GB memory is for the system-level components, internal peripheral buses, external peripheral bus, and vendor-specific system peripherals. There are two segments of the private peripheral bus (PPB): •Advanced High-Performance Bus (AHB) PPB, for Cortex-M3 internal AHB peripherals only; this includes NVIC, FPB, DWT, and ITM •Advance Peripheral Bus (APB) PPB, for Cortex-M3 internal APB devices as well as external peripherals (external to the Cortex-M3 processor); the Cortex-M3 allows chip vendors to add additional on-chip APB peripherals on this private peripheral bus via an APB interface The NVIC is located in a memory region called the system control space (SCS) (see Figure 5.2). Besides providing interrupt control features, this region also provides the control registers for SYSTICK, MPU, and code debugging control. FIGURE 5.2. The System Control Space. The remaining unused vendor-specific memory range can be accessed via the system bus interface. However, instruction execution in this region is not allowed. The Cortex-M3 processor also comes with an optional MPU. Chip manufacturers can decide whether to include the MPU in their products. What we have shown in the memory map is merely a template; individual semiconductor vendors provide detailed memory maps including the actual location and size of ROM, RAM, and peripheral memory locations. Read full chapter URL: https://www.sciencedirect.com/science/article/pii/B9781856179638000089 Computers and their applicationIan Robertson, in Mechanical Engineer's Reference Book (Twelfth Edition), 1994 4.7.12.1 Data transferThis loads an accumulator from a specified memory location and writes the contents of the accumulator into a specified memory location. Most CPUs have variations such as adding contents of memory location to the accumulator and exchanging the contents of the accumulator and memory locations. CPUs with multiple registers also have some instructions which can move data to and from these registers, as well as the accumulator. Those with 16-bit or greater word lengths may have versions of these and other instruction types which operate on bytes as well as words. With a double operand addressing mode (see Section 4.7.8) a generalized ‘Move’ instruction allows the contents of any memory location or register to be transferred to any other memory location or register. Read full chapter URL: https://www.sciencedirect.com/science/article/pii/B9780750611954500087 Instruction setsTheresa Schousek, in The Art of Assembly Language Programming Using PIC© Technology, 2018 IndirectIndirect addressing is where the memory location of the address is stored in the location specified by the instruction. This is one step removed from direct addressing. Indirect addressing is where the memory location’s address, not value, is then specified by the instruction’s operand. This is referred to as one level of indirection. If the location of the address is further contained in the memory location’s address, then this is considered two levels of indirection. In theory, this can be continued indefinitely. For example, from page 19 in the data sheet, the code first initializes the pointer to 0x10. MOVLW 0x10 MOVWF FSR Then, the INDF is cleared and the pointer is incremented for the next instruction in a loop. CLRF INDF INCF FSR,F Read full chapter URL: https://www.sciencedirect.com/science/article/pii/B9780128126172000031 Number systemsA.C. Fischer-Cripps, in Newnes Interfacing Companion, 2002 2.1.6 Signed numbersAn 8-bit memory location can cover the range of decimal integers from 0 to 255. To enable an 8-bit memory location to hold both positive and negative numbers, the most significant bit (msb) is reserved and is called the sign bit. A sign bit = 1 indicates a negative number. A sign bit = 0 indicates a positive number. The other 7-bit positions are used to represent the magnitude of the number – but the way of doing this is different for positive and negative numbers.
Whether or not a particular binary bit pattern represents a signed or unsigned number depends on the context in which it is being used. For binary numbers starting with 0, there is no confusion since they have the same value whether they are signed or unsigned numbers. For numbers starting with 1, they may be interpreted as an unsigned integer or the 2's complement representation of a negative number. For signed number representation, the range that can be covered by 8 bits is −128 to +127. Signed positive binary numbers roll over to represent negative numbers after +127. The +1 step in finding the 2's complement takes into account ±0 possibilities (i.e. 1's complement goes from −127 to −0, and +0 to +127). Read full chapter URL: https://www.sciencedirect.com/science/article/pii/B978075065720450108X Microcomputer Instrumentation and ControlWilliam B. Ribbens, in Understanding Automotive Electronics (Eighth Edition), 2017 Addressing PeripheralsThe reason for distinguishing between memory locations and peripherals is that they perform different functions. Memory is a data storage device, while peripherals are input/output devices. However, many microcomputers address memory and peripherals in the same way because they use a design called memory-mapped I/O (input/output). With this design, peripherals, such as data terminals, are equivalent to memory to the CPU so that sending data to a peripheral is as simple as writing data to a memory location. In systems where this type of microcomputer has replaced some digital logic, the digital inputs enter the computer through a designated memory slot. If outputs are required, they exit the computer through another designated memory slot. The relatively efficient means of input/output of data via memory map facilitates operations such as digital filtering of sampled analog signals or for control operations as explained in Appendix B. In such cases, the A/D converter providing the sampled input would have a specific memory location. Similarly, any D/A or ZOH (see Chapter 2) would also have a designated memory location. Such memory-mapped I/O is particularly helpful for speeding computer operations in discrete time control for automotive systems. Read full chapter URL: https://www.sciencedirect.com/science/article/pii/B978012810434700003X Beginning codeTheresa Schousek, in The Art of Assembly Language Programming Using PIC© Technology, 2018 Elementary ProgramsACC ConventionWithin mathematical routines, there is a general consensus that data memory uses the convention of leading variable names with “ACC” to indicate accumulators. For example, ACCaLO and ACCaHI are used to indicate data memory uses “a” with two words indicated as “LO” or “HI” as LO byte and HI byte, respectively. The following, allocation of variable memory locations, allows the programmer to use variable names instead of specific address names. The variables begin in location 0x40 or, interchangeably, 40h.
8-Bit Data TransferData transfer is the transfer of a byte of data; copying of a memory location to a second memory location. The MOVE instructions are used to move contents from one memory location to another. This is similar to other processors’ Load and Store commands. Problem: Copy the contents of memory location 40h to location 41h. Test Case: (0040h) = 5B Result: (0041h) = 5B Solution:
Note that we are accessing base page 00 in memory, even though leading zeros have been omitted in the solution. MOVF 40h, 0 could more explicitly show this with MOVF 0040h, 0. The option 0, following the address, indicates that the W register is used. Your program may use “W” in place of 0 if it is declared at the beginning of the program. The solution ends with RETLW, to return control back to the calling function. Alternatively, a GOTO $ command indicates you are to GOTO the same line as you are already on. The GOTO may be used to place the code in an infinite loop. 16-Bit Data TransferMove the contents of 40h, most significant byte (MSB) and 41h, least significant byte (LSB) into 42h (MSB) and 43h (LSB). The MOVE instructions are used to move contents from one memory location to another. Problem: Copy the contents of memory location 40h to location 42h. Copy the contents of memory location 41h to location 43h. Test Case: (0040) = 5B (0041) = 6E Result: (0042) = 5B (0043) = 6E Solution:
8-Bit AdditionThe Addition instructions are used to add two operands, in this problem, (ACCaLO) and (ACCbLO). The result is to store and, therefore, overwrite the second operand. Can you see the negative side to this approach? If you are testing the code, you will need to always reenter the initial value of ADDbLO. Problem: Add the contents of two memory locations, 0040 and 0041. Place the result in memory location 0041. Test Case: (0040h) = 27h (0041h) = 1Ah Result: (0041h) = 41h Solution:
8-Bit SubtractionThe Subtraction instruction is used to subtract one operand from another. In this problem, (ACCaLO) is subtracted from (ACCbLO). The result is in memory location ACCbLO. Problem: Subtract the contents of memory location ACCaLO from location ACCbLO. Place the result in memory location ACCbLO. Test Case: (ACCaLO) = 27h (ACCbLO) = 1Ah Result: (ACCbLO) = 0Dh Solution:
8-Bit Multiply by Two (Rotate Left 1 Bit)This example illustrates the rotation of ACCbLO as a one-byte operation. Rotate left through Carry places the most significant bit in the Carry position. Also, a zero is placed in the least significant bit position. Problem: Multiply ACCbLO by two. Test Case: (ACCbLO) = 5Eh = 01011110b Result: (ACCbLO) = BCh = 10111100b Carry remains 0. Solution:
8-Bit Multiply by Four (Shift Left 2 Bits)This example illustrates the rotation of ACCbLO as a one-byte operation. Rotate left through Carry places the most significant bit in the Carry position. Also, a zero is placed in the least significant bit position. Problem: Multiply ACCbLO by four. Test Case: (ACCbLO) = 5Eh = 01011110b Result: (ACCbLO) = 78h = 01111000b Carry is 1. Solution:
8-Bit Divide by Two (Rotate Right 1 Bit)This example illustrates the right rotation of ACCbHI to perform a divide by two. The least significant bit is truncated. Problem: Divide ACCbHI by two. Test Case: (ACCbHI) = 5Eh = 01011110b Result: (ACCbHI) = 2Fh = 00101111b Solution:
Mask Off Most Significant 4 BitsProblem: Mask off most significant 4 bits Test Case: (ACCbHI) = 5Eh = 01011110b Result: (ACCbHI) = 0Eh = 00001110b Solution:
Mask Off Least Significant 4 BitsProblem: Mask off least significant 4 bits Test Case: (ACCbHI) = 5Eh = 01011110b Result: (ACCbHI) = 50h = 01010000b Solution:
Clear a Memory LocationProblem: Clear memory location Test Case: (40h) = 5Eh = 01011110b Result: (40h) = 00h = 00000000b Solution:
Set a Memory Location to All OnesProblem: Set a memory location to all ones Test Case: (40h) = 5Eh = 01011110b Result: (40h) = 00h = 00000000b Solution:
Find Larger of Two NumbersProblem: Find the larger of two numbers Test Case: (40h) = 5Eh = 01011110b (41h) = 6Ch = 01101101b Result: (41h) holds the
larger number Solution:
Find Smaller of Two NumbersProblem: Find the smaller of two numbers Test Case: (40h) = 5Eh = 01011110b (41h) = 6Ch = 01101101b Result: (40h) holds the
smaller number Solution:
Read full chapter URL: https://www.sciencedirect.com/science/article/pii/B9780128126172000043 Getting Started with MSP430 AssemblerDan Harres, in MSP430-based Robot Applications, 2013 The indirect and the indirect autoincrement addressing modesFor the source operand, there are additional addressing modes. The more common of these is the Indirect Addressing Mode, an example of which is: mov @R6,R8 which moves the contents of the memory location pointed to by R6 into R8. But doesn’t the Indexed Mode do the same thing when used with a zero offset? Well, yes. In fact, the ADD example given a little earlier could be rewritten as: add @R8,2(R8). Not only can you use this last statement in place of the earlier ADD syntax, but the Assembler will actually substitute this Indirect Addressing Mode for the earlier Indexed Addressing Mode, should you write your program using the Indexed Addressing Mode for the source operand. The reason for this is that, although they produce equivalent results, the Indirect Addressing Mode is more compact, requiring just one word of instruction, instead of the three words that the Indexed Addressing Mode requires. The Indirect Autoincrement Addressing Mode is exactly like the Indirect Addressing Mode, except that it increments the pointing register by 1 or 2 (depending on whether the instruction is for byte-long data or word-long data). This can be useful when loading data from a table (that is, a list of bytes or words in memory). The program can execute a MOV instruction that loads the byte or word from memory and, without using an extra instruction to increment the table pointer, be ready to load the next memory location. Read full chapter URL: https://www.sciencedirect.com/science/article/pii/B9780123970121000102 What is a storage location in the computer's memory called that has a type name and contents?In computer programming, a variable is an abstract storage location paired with an associated symbolic name, which contains some known or unknown quantity of information referred to as a value; or in simpler terms, a variable is a named container for a particular set of bits or type of data (like integer, float, string ...
What is the name given to memory location where data is stored?MAR holds the memory location of data that needs to be accessed. When reading from memory, data addressed by MAR is fed into the MDR (memory data register) and then used by the CPU.
What is the main storage location of a computer?the main storage location for a computer. The hard drive generally stores all of the programs on the computer as well as the operating system. While RAM is a computer's temporary memory, the hard disk is the computer's permanent memory. The information saved on the hard drive remains even after the power is turned off.
What is computer memory name its types?Computer memory is of two basic types – Primary memory(RAM and ROM) and Secondary memory (hard drive, CD, etc). Random Access Memory (RAM) is primary-volatile memory and Read-Only Memory (ROM) is primary-non-volatile memory.
|