| |||||
Technical Support Support Resources
Product Information | DSCOPE: USING MEMSET WITH VARIABLE PARAMETERSInformation in this article applies to:
SYMPTOMSI need to set a memory range to a specific value in D-Scope. I have a script that uses the following command: memset(X: StartAdd, X: EndAdd, FillVal); But, this does not work. I can use the following: memset(X:0x4770, X:0x4780, 0Xff); However, since the starting and ending adresses depend on previous parts of the script, this defeats the purpose of using the StartAdd and EndAdd variables. How can I get Memset to take variables as parameters? CAUSEdScope cannot combine a variable along with the memory type you have specified (X:). You may instead use the physical address segment for the memory area (which is 0x010000 for XDATA). RESOLUTIONSet your starting and ending address variables as normal. Then, when you call the MEMSET function, do something like this: memset (0x010000 | start_addr, 0x010000 | end_addr, fill_value); The 0x010000 provides the memory area prefix that corresponds to XDATA. The value to use for CODE is 0xFF0000 and the value for DATA is 0x000000. The prefix (or segment) is the upper byte of the 24-bit addresses. It is also known as the memory type byte (in C51 lingo). 0xFF is CODE, 0x01 is XDATA, 0x00 is DATA. These MAGICAL numbers come from the segments used on the MCS251. MORE INFORMATIONRefer to your compiler manual or to the dScope manual for a complete description. Last Reviewed: Tuesday, June 08, 2004 | ||||