I'm just going to compare the value to 0, if it matches i know there is a hole. I will not be writing over any of these contents. Also I don't see how int 12 could possibly tell me how many holes...
Type: Posts; User: pole1080
I'm just going to compare the value to 0, if it matches i know there is a hole. I will not be writing over any of these contents. Also I don't see how int 12 could possibly tell me how many holes...
The goal is to find unused memory regions (an unused memory region is defined as a group of bytes that is larger than a QWORD). I don't know how else to do it without using this method.
Hello, I would like to know why this code is not working:
char far *cptrS;
int segment;
int offset;
for(segment=0x0000, offset=0x0000; offset<0x0003; offset++){
//check first...
I got the memory map to print out on the screen finally. I used a structure in my C code and passed it into the assembly like this:
memmap proc c arg1:word
int 3
;mov di,...
So now my code will place the memory map in memory at a segment offset by 500. But instead of doing this i want to make a structure in C, and fill the structure with the values generated by the...
Sure didn't, but I need to. I have been advised to use a struct by colleagues who have completed this task. I just don't know how to though.... :/
This can be done using a struct. Now I just need to figure out a way to make a struct in C and implement it into my .asm function. Any ideas?
I reject that suggestion :)
I am going to try a few more things and post an update this afternoon.
haha, it is just a dos box that i am running the code on
Right, I understand the data segment will potentially change each time i run the program. When I dump the memory at this location it is filled with zeros. Preserving es did not make a difference, and...
ok prior to running this function i move ds into ax and print it out on the screen. the value is 5E6C. the offset is initialized to 500, so the memory map should be stored at 5E6C:0C00 right? when i...
Try to run this code and see what happens for you. I don't know where it is storing the memory map at. I need to display the memory map on the screen.
_memmap proc
push ds ;push...
oops i just noticed i need to remove setting ebx = 0!
that solves the hanging problem, but i still need to know how to properly increment 'di'
I am using the following code and it causes the dosbox to hang. i think it has something to do with the line: add di,20
i think it needs to add a dword to the offset, but i don't know how to do...
today i created a .c file and a separate .asm file containing a function to run the int 15 eax=0xe820. The files link fine, and access to the extended ax register is allowed, but I am going to need...
Yes this compiler needs to be used. I would be willing to do it in asm.
I actually was using "mov" and not "move". I just made a typo in the code i put on the board, which is never a good thing. The compiler still will not allow me to write to the extended (first word)...
I don't want to do this, it is an assignment
ok i am using INT 15 ax=0xe820 now but i am having issues with the upper 16 bits of the ax register. i looked at the DOS.h file but it doesn't have anyway to write to the eax register, and if i try...
I am writing a program for DOS to return the extended memory size but it is not working properly. The code I have is below
_asm
{
xor ax,ax /* Clear accumulator*/
...
ok thanks, i figured that part out. now for the second part. how do i change the INT10 vector to point to 8000h segment?
i found the macro in the dos.h file but i don't know how to use it.
#define _MK_FP(seg, offset) (void __far *)(((unsigned long)seg << 16) \
+ (unsigned long)(unsigned)offset)
Hello, I am attempting to write some code to be executed in MS-DOS that will copy data from the 0xC000 segment into the 0x8000 segment (this has to do with the video bios).
My problem is that I...