В TURBO C/C++ написать обращение к ячейки памяти микропроцессора с сегментом 9000 и смещением 0040 и записать из этой ячейки значение в txt файл
//#include <windows.h>
#include <dos.h>
#include <math.h >
#include <stdio.h>
#include <io.h>
#include <limits.h>
#include <malloc.h>
#include <fstream.h>
#include <iostream.h>
#include <conio.h>
#include <locale.h>
//using namespace std;
void main();
void main (void)
{
//unsigned int wseq, woff, w1off;
//wseq =0x9000;
//woff =0x0040;
//w1off = 0x0020;
void *pAUXBuff, *pOutBuff;
pAUXBuff =(void *) MK_FP(0x9000, 0x0040);
pOutBuff =(void *) MK_FP(0x9000, 0x0020);
//pAUXBuff = (WORD far *)(wseq*16+woff);
//pOutBuff = (WORD far*)(wseq*16+w1off);
int i=0;
while (i<=100)
{
if((*(pOutBuff+0x9)) %2 == 0)
{
ofstream out;
out.open("C:\\Desktop\\CPU.txt", ios ::app);
//if (out.open(const char*))
//{
// out.flags(ios::hex(ios::showbase));
out<<"Znachenie sin DPR UM"<<endl;
out<<(long)(*(pAUXBuff+0xA6))<<endl;
out<<"Znachenie cos DPR UM"<<endl;
out<<(long)(*(pAUXBuff+0xA7))<<endl;
out<<"Znachenie sin DPR AZ"<<endl;
out<<(long)(*(pAUXBuff+0xA8))<<endl;
out<<"Znachenie cos DPR AZ"<<endl;
out<<(long)(*(pAUXBuff+0xA9))<<endl;
}
// out.close();
cout<<"Read the value angel ACP-DPR" << endl;
cout.flags(ios::hex|ios::showbase);
cout<<"Value angle sin UM"<<endl;
cout<<(long)(*(pAUXBuff+0xA6))<<endl;
cout<<"Value angle cos UM"<<endl;
cout<<(long)(*(pAUXBuff+0xA9))<<endl;
i++;
if(i==100)
{
break;
}
}
// return 0;
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Вобщем, примерно так, если нужны именно байты, а не, скажем, int — я же не знаю, что там и как у вас лежит в памяти. Я только сделал код компилируемым, а уж насчет того, что он делает что нужно...
unsigned char far *pAUXBuff, far *pOutBuff;
pAUXBuff = (unsigned char far *)MK_FP(0x9000, 0x0040);
pOutBuff = (unsigned char far *)MK_FP(0x9000, 0x0020);
//pAUXBuff = (WORD far *)(wseq*16+woff);
//pOutBuff = (WORD far*)(wseq*16+w1off);
int i=0;
while (i<=100)
{
