fix: Кодировка

This commit is contained in:
Mark Zheleznyakov
2024-09-10 22:24:24 +03:00
parent be2b9502d1
commit 67824a5297
19 changed files with 2159 additions and 2159 deletions

452
Labv1.cpp
View File

@ -1,226 +1,226 @@
// <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E0ACAB><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> N 0
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0A5AC><EFBFBD> <20><EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0A0A3><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 000.0 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, & <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//
#include <dos.h>
#include <bios.h>
#include <stdio.h>
#include <conio.h>
#define PortCan0 0x40
void beep(unsigned iTone,unsigned iDlit); // <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20>㭪樨
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E1A8A3><EFBFBD><EFBFBD>, <20><EFBFBD><E1AFAE><EFBFBD><EFBFBD><E3A5AC> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0A5AD> <20><EFBFBD><E0A5AC><EFBFBD>
void main(void)
{
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A5AC><EFBFBD><EFBFBD><EFBFBD>
long int lCnt=0; // <EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0A5AD>
int iA=0x1234; // <EFBFBD><EFBFBD>-<2D><EFBFBD><E7A5A9>, <20><EFBFBD><E1AFAE><EFBFBD><EFBFBD><E3A5AC> <20> <20><><EFBFBD><EFBFBD><E3A5AC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/*************************************************************************\
/* <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
// <EFBFBD><20><><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><EFBFBD><E0A6A8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> 0046<EFBFBD>h
//<EFBFBD><EFBFBD><EFBFBD>塞 far-㪠<><E3AAA0><EFBFBD> <20><> <20><><EFBFBD><E0A5AC><EFBFBD><EFBFBD><EFBFBD> <> char <20> <20><><EFBFBD><EFBFBD><E6A8A0><EFBFBD><EFBFBD><EFBFBD>
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E3AAA0><EFBFBD> <20><><EFBFBD><EFBFBD><E7A5AD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><EFBFBD><E0A5A4><EFBFBD><EFBFBD>⥫쭮 <20><EFBFBD><EFBFBD><E0A0A7><EFBFBD><EFBFBD>
//<EFBFBD><EFBFBD><EFBFBD> <20> <> char *
char far * pT=(char *)0x46C; // (1)
printf ("\n <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 10 ࠧ <20><><EFBFBD><EFBFBD><E7A5AD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> \n");
for (int i=0; i<10; i++)
printf (" \n %d ", * pT); // (1)
printf ("\n <EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0AEA4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \n");
getch(); // <EFBFBD>ணࠬ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/******************************************\
\* <EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20><><EFBFBD><E1ACAE><EFBFBD><EFBFBD><EFBFBD><><EFBFBD><E0A6A8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
// <EFBFBD><EFBFBD><EFBFBD><><EFBFBD><E0A6A8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>ᮬ 40 <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>㭪樨 <20><>
printf ("\n <EFBFBD><EFBFBD><EFBFBD><><EFBFBD><E0A6A8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>ᮬ 40 <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>㭪樨 <20><> \n" );
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0.5 <EFBFBD>
printf ("\n <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><><E6A8AA> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \n" );
while (bioskey(1)==0) // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
printf (" \n <EFBFBD><EFBFBD><EFBFBD><EFBFBD>40 = %d ", inp(PortCan0)); //(2)
// <EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TD <20><><EFBFBD><E1ACAE><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD> <20><EFBFBD><E0A5A2><EFBFBD><E9A0A5><EFBFBD> <20>-<2D><><EFBFBD> inp()
// <EFBFBD><EFBFBD> <20><EFBFBD><E0AEA2> <20><><EFBFBD><E8A8AD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
delay(500); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>ᥪ㭤<E1A5AA> (500 <EFBFBD><EFBFBD>)
}
getch(); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/**************************************************************************\
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: *
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> printf (...) <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E1AFA5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><E7A5AD> <20><><EFBFBD><E0A5AC><EFBFBD><EFBFBD><EFBFBD>, *
<EFBFBD><><E2A0AA> <20><EFBFBD><E0AEA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E2A5AA>. *
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> bioskey(1) <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> inp(uPort) <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> Port *
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> outp(uPort,iValue) <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><EBA2A5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> iValue <EFBFBD> <20><><EFBFBD><EFBFBD> uPort *
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> delay(uTime) <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> uTime <20><><EFBFBD><EFBFBD><EFBFBD>ᥪ㭤 *
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> getch() <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><><E1A8AC><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. *
<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *
\**************************************************************************/
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC> <20><> <20><><EFBFBD><EFBFBD><E0AEA5><EFBFBD><EFBFBD> <20><><EFBFBD><E1A5AC><EFBFBD><EFBFBD><EFBFBD>
printf ("\n <EFBFBD><EFBFBD><EFBFBD><><EFBFBD><E0A6A8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>ᮬ 40 <20><><EFBFBD><E1A5AC><EFBFBD> \n" );
while (bioskey(1) == 0 ) // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><> <20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><EFBFBD><ECA7AE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E0AEA5><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E1A5AC><EFBFBD><EFBFBD><EFBFBD> (3)
{
asm { push ax // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᯮᮡ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><E0AEA5><EFBFBD><EFBFBD> <20><><EFBFBD><E1A5AC><EFBFBD><EFBFBD><EFBFBD>
in al,0x40
}
unsigned char Tmm = _AL; // <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mov Tmm,al
// !! <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TD
asm pop ax // <EFBFBD><EFBFBD><EFBFBD> ᯮᮡ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><E0AEA5><EFBFBD><EFBFBD> <20><><EFBFBD><E1A5AC><EFBFBD><EFBFBD><EFBFBD>
delay (500);
printf (" \n <EFBFBD><EFBFBD><EFBFBD><EFBFBD>40 = %d ", Tmm );
// <EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><> <20><>
}
getch();
printf ("\n <EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0AEA4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \n ");
getch();
/*************************************************************
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E1ACAE><EFBFBD><EFBFBD><EFBFBD><><EFBFBD><E0A6A8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><E0A8AC>)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2AEA2>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0046<EFBFBD> c <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0A5A4><EFBFBD> <20><> */
long far * pTime=(long *)0x46C; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>稪 ⨪<><E2A8AA>
while (bioskey(1) == 0)
{
printf ("\n %ld",*pTime);
delay(1000);
}
getch();
// <EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><><EFBFBD><E0A6A8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E2AEA2> <20><><EFBFBD><E0A5AC><EFBFBD><EFBFBD><EFBFBD>
// <EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0046C <20><EFBFBD><EFBFBD><E2A2A0> <20><><EFBFBD><EFBFBD><E0AEA5><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E1A5AC><EFBFBD><EFBFBD><EFBFBD>
int Time;
while (bioskey(1) == 0)
{
asm push ds // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD>砩 ॣ<><E0A5A3><EFBFBD><EFBFBD><EFBFBD>
asm push si
// <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E0AEA5><EFBFBD><EFBFBD> <20><><EFBFBD><E1A5AC><EFBFBD><EFBFBD><EFBFBD>
asm mov ax,40h // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBA2A0> hex-<2D><><EFBFBD><EFBFBD><EFBFBD><E2A0AD> ...
asm mov ds,ax
asm mov si,0x6C // ... <EFBFBD><EFBFBD><EFBFBD>
asm mov ax,[ds:si]
asm mov Time,ax
asm pop si // <EFBFBD><><E2A5AF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E2A0AD><EFBFBD><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD>
asm pop ds // (<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E2A0A9> <20><><EFBFBD><EFBFBD> !!!)
printf ("\n %d",Time);
delay(300);
}
/****************************************************************
<EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <> <20>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> <20><EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
(<EFBFBD> <20><EFBFBD><E0A8AC><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mov reg,mem, <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><EFBFBD><E0A5AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> )
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0A5AC><EFBFBD> <20><EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0A0A3><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC> */
beep(400,200); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>⬥砥<E2ACA5> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0A2A0> (5)
for ( lCnt=0; lCnt<1000000; lCnt++)
{
a1: asm { mov ax,iA
mov ax,iA
mov ax,iA
mov ax,iA
mov ax,iA
mov ax,iA
mov ax,iA
mov ax,iA
mov ax,iA
a2: mov ax,iA }
}
beep(400,200); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>⬥砥<E2ACA5> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0A2A0> (5)
}
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E3AAAE><EFBFBD><EFBFBD><><E1A8A3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>⥫쭮<E2A5AB><ECADAE><EFBFBD> (5)
void beep(unsigned iTone,unsigned iDlit)
{ sound(iTone);
delay(iDlit);
nosound();
}
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><20><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E2AAA0> a1 <EFBFBD> a2 <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0AEA2>
// <EFBFBD><EFBFBD> <20><EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E2A0A2><EFBFBD> 3.15 +- 0.2 ᥪ㭤 (<28><><EFBFBD> <20><EFBFBD><E6A5AD> <20><EFBFBD><E8A8A1>
// <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>७ 5 ࠧ <20> <20><20><EFBFBD><E6A5AD><EFBFBD> <20><EFBFBD><E0A5A4><EFBFBD> <20><><EFBFBD><EFBFBD><E7A5AD> <20>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E2AAAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><EFBFBD><E0A8A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A0A2> 2*<2A><><EFBFBD>)
// <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><20><><20><><EFBFBD><EFBFBD>⮪ a1-a2 ࠡ<>⠫. <20><EFBFBD> <20><EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 7.5 +- 0.2 ᥪ㭤. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0A5AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MOV REG,MEM
// <EFBFBD><EFBFBD> 10^7, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0A5AC><EFBFBD><><E0A0A2> 4.35 +- 0.3 ᥪ㭤, <20><EFBFBD><E6A5AD> <20><EFBFBD><E0A5AC><EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0.44 +- 0.03 <EFBFBD><EFBFBD><EFBFBD>.
// <EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TD <20><><EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><EFBFBD><ECA7AE><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> ᬥ饭<E1ACA5><E9A5AD><EFBFBD> [BP+disp]
/*
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A0A1><EFBFBD> LAB0-0
1. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E2A5AA> <20>ணࠬ<E0AEA3><E0A0AC> <20> <20><EFBFBD><EBA4A5><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFA7AD> <20><><EFBFBD><EFBFBD><EFBFBD>,
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E2A5AA>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
<EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20>㭪樨 <20><> <20><EFBFBD><E1AFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><>祬. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E2A5AA><EFBFBD><EFBFBD><EFBFBD> Help'<EFBFBD><EFBFBD>
2. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC> <20><><E3A1A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E8A8A1>
3. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC>, <20><><EFBFBD><EFBFBD><EFBFBD><EEA4A0><EFBFBD><><E0A5A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><E3A1A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>-
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><EFBFBD><EFBFBD><E5AEA4>.
4. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><EFBFBD><E1AFAE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E0AEA5><EFBFBD><EFBFBD> <20><EFBFBD> IDE:
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><20><><EFBFBD><E2A0AD><EFBFBD>. <20><> <20><EFBFBD><E0AEA2>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>-⥪<><E2A5AA><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><><E1A4A5><EFBFBD><EFBFBD>, <20><EFBFBD><E1AFAE><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E3ADAA> <20><><EFBFBD><EFBFBD> Run
<EFBFBD> Debug/Breakpoints.
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><EFBFBD><E0A6A8><EFBFBD> <20><><EFBFBD><E0A5AC><EFBFBD><EFBFBD><EFBFBD> <20><><20><><EFBFBD><E2A0AD><EFBFBD>.
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> <20><><EFBFBD><EFBFBD> Debug/Evaluate/Modify,
Debug/Inspect (<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Alt/F4) <EFBFBD><EFBFBD><EFBFBD><EFBFBD> Debug/Watches
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> <20><EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0A5AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A5AB> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
⠪, <20><><EFBFBD> <20><><EFBFBD><><E1A4A5><EFBFBD><EFBFBD> <20> <20>ணࠬ<E0AEA3><E0A0AC> LAB0 <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MOV REG,MEM.
5. <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><EFBFBD> TD <20> <20><><EFBFBD><EFBFBD> CPU (<28><EFBFBD> <20><><EFBFBD><EFBFBD> View/CPU) <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><EFBFBD><E0A6A8><EFBFBD><><E0A5A3><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><E3ACA0><EFBFBD>, <20><>-
<EFBFBD><EFBFBD><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>-
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0A8A2><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><ECADAE> <20><EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>ணࠬ<EFBFBD><EFBFBD><><E0A5A7><EFBFBD><EFBFBD><EFBFBD>)
- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E7A5A9> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E4A8A7><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>:
(<EFBFBD><EFBFBD><EFBFBD>, 祬 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>㤠-<2D><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><20><> <20><><EFBFBD><EFBFBD><E3ACA0>: <20><><EFBFBD> <20><><EFBFBD> <20><>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>(<28><> <20><EFBFBD><E1AFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>ணࠬ<EFBFBD><EFBFBD>), <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><><E4A8A7><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>⢮, ᮮ<>-
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
1. 0x46C
0x80000
0xF000:0xFFF0
2. 0x0040:0x6D
0x8000:0x0010
0xFFFFE
3. 0x41A
0x80210
0xFFFF:0x100
4. 0x0040:0x1E
0xD00000
0x8000:0x200
5. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - 0x41A-0x43C
0xD000:0x100
0xFFFF:0xE
- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>/<2F><EFBFBD><EBA2AE> (<28><><EFBFBD><EFBFBD><E0A8AC>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0x40 <EFBFBD><EFBFBD><EFBFBD>쪮 ࠧ - <20><><EFBFBD><EFBFBD><E0AEA1><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E1ADA8> <20><><EFBFBD><EFBFBD><EFBFBD><EEA4A0><EFBFBD><EFBFBD><><E0A5A7><EFBFBD>-
<EFBFBD><EFBFBD><EFBFBD>; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 3 <EFBFBD> 61 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><20><><EFBFBD><EFBFBD>);
6. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E1A5AC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>࠭᫨஢<E1ABA8><E0AEA2> <20> <20><><20><>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E6A8AA>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><EFBFBD><E0AEA2> <20><><EFBFBD><E1A5AC><EFBFBD><EFBFBD><EFBFBD><> <20><><EFBFBD><E0A8A0><><E6A8AA>.
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, १<><E0A5A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><EFBFBD><E2A0A2> <20><EFBFBD><E0A5AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
*/
// Пример оформления программы
// Работа N 0
// Измерение времени выполнения фрагмента программы
// Студенты гр 000.0 Иванофф, Петрофф, & Сидорофф
//
#include <dos.h>
#include <bios.h>
#include <stdio.h>
#include <conio.h>
#define PortCan0 0x40
void beep(unsigned iTone,unsigned iDlit); // Это прототип функции
// звукового сигнала, используемой при измерении времени
void main(void)
{
// Объявление переменных
long int lCnt=0; // Ячейка - счетчик повторений
int iA=0x1234; // Думми-ячейка, используемая в исследуемой команде
/*************************************************************************\
/* Как из Си посмотреть содержимое байта с известным физическим адресом */
// Если хотим напечатать содержимое байта с адресом 0046Сh
//объявляем far-указатель на переменную типа char и инициализируем
//этот указатель значением адреса, предварительно преобразовав
//его к типу char *
char far * pT=(char *)0x46C; // (1)
printf ("\n Печатаем 10 раз значение байта с известным адресом \n");
for (int i=0; i<10; i++)
printf (" \n %d ", * pT); // (1)
printf ("\n Для продолжения нажмите любую клавишу \n");
getch(); // Программа ждет нажатия клавиши
/******************************************\
\* Как из Си посмотреть содержимое порта */
// Читаем содержимое порта с адресом 40 с помощью функции Си
printf ("\n Читаем содержимое порта с адресом 40 с помощью функции Си \n" );
// Цикл повторяется каждые 0.5 с
printf ("\n Для выхода из цикла - нажмите любую клавишу \n" );
while (bioskey(1)==0) // пока не будет нажата любая клавиша
{
printf (" \n Порт40 = %d ", inp(PortCan0)); //(2)
// С помощью TD посмотрите, во что превращается ф-ция inp()
// на уровне машинных команд
delay(500); // Задержка на полсекунды (500 мс)
}
getch(); // Очищаем буфер клавиатуры
/**************************************************************************\
Примечания: *
Функция printf (...) позволяет распечатать на экране значения переменных, *
а также произвольный текст. *
Функция bioskey(1) позволяет определить, нажата ли клавиша *
Функция inp(uPort) позволяет считать байт из порта Port *
Функция outp(uPort,iValue) позволяет вывести величину iValue в порт uPort *
Функция delay(uTime) организует программную задержку на uTime миллисекунд *
Функция getch() считывает один символ из буфера клавиатуры. *
В данном случае это надо для очистки буфера клавиатуры *
\**************************************************************************/
// Снова читаем тот же порт с помощью программы на встроенном ассемблере
printf ("\n Читаем содержимое порта с адресом 40 ассемблером \n" );
while (bioskey(1) == 0 ) // Этот цикл будет повторяться,
// пока не нажмем клавишу
// Примеры использования встроенного ассемблера (3)
{
asm { push ax // Один способ записи на встроенном ассемблере
in al,0x40
}
unsigned char Tmm = _AL; // Эта команда эквивалентна mov Tmm,al
// !! Убедитесь в этом с помощью TD
asm pop ax // Другой способ записи на встроенном ассемблере
delay (500);
printf (" \n Порт40 = %d ", Tmm );
// Если нажата клавиша - то выход
}
getch();
printf ("\n Для продолжения - нажмите любую клавишу \n ");
getch();
/*************************************************************
Как посмотреть содержимое длинной (например)четырехбайтовой
переменной с адреса 0046С c помощью средств Си */
long far * pTime=(long *)0x46C; // Указатель на счетчик тиков
while (bioskey(1) == 0)
{
printf ("\n %ld",*pTime);
delay(1000);
}
getch();
// Читаем и печатаем содержимое двухбайтовой переменной
// с адреса 0046C средствами встроенного ассемблера
int Time;
while (bioskey(1) == 0)
{
asm push ds // Сохраним на всякий случай регистры
asm push si
// Во встроенном ассемблере
asm mov ax,40h // можно записывать hex-константы так ...
asm mov ds,ax
asm mov si,0x6C // ... или так
asm mov ax,[ds:si]
asm mov Time,ax
asm pop si // А теперь восстановим регистры
asm pop ds // (не перепутайте порядок !!!)
printf ("\n %d",Time);
delay(300);
}
/****************************************************************
Пример выполнения задания типа И
Требуется измерить время выполнения заданной команды
(в примере - команда mov reg,mem, а Вы спросите у преподавателя
какую команду Вам взять )
Измерение времени выполнения фрагмента программы */
beep(400,200); // Сигнал отмечает начало интервала (5)
for ( lCnt=0; lCnt<1000000; lCnt++)
{
a1: asm { mov ax,iA
mov ax,iA
mov ax,iA
mov ax,iA
mov ax,iA
mov ax,iA
mov ax,iA
mov ax,iA
mov ax,iA
a2: mov ax,iA }
}
beep(400,200); // Сигнал отмечает конец интервала (5)
}
// Функция подачи звукового сигнала заданной высоты и длительности (5)
void beep(unsigned iTone,unsigned iDlit)
{ sound(iTone);
delay(iDlit);
nosound();
}
// Результаты выполнения
// Запустили программу дважды
// При первом пуске участок между метками a1 и a2 был закомментирован
// Время выполнения составило 3.15 +- 0.2 секунд (для оценки ошибки
// прогон был повторен 5 раз и было оценено среднее значение и
// среднеквадратическое отклонение. Приведенный допуск равен 2*СКО)
// При втором пуске участок a1-a2 работал. Время выполнения
// составило 7.5 +- 0.2 секунд. Количество повторений команды MOV REG,MEM
// равно 10^7, добавка времени равна 4.35 +- 0.3 секунд, оценка времени
// выполнения команды 0.44 +- 0.03 мкс.
// С помощью TD определили, что компилятор использовал адресацию
// базовая со смещением [BP+disp]
/*
Задание на выполнение работы LAB0-0
1. Прочитайте текст программы и выделите логически связные части,
поймите, что делают эти части. Разбирая текст, обратите внимание на
то, какие функции Си используются и зачем. Делая это, научитесь
пользоваться контекстным Help'ом
2. Скомпилируйте программу и убедитесь, что в ней отсутствуют ошибки
3. Запустите программу, наблюдайте результат и убедитесь, что Вы пони-
маете, что происходит.
4. Научитесь, используя встроенный отладчик IDE:
Выполнить программу до заданной точки останова. На уровне
исходного Си-текста это можно сделать, используя пункты меню Run
и Debug/Breakpoints.
Проверить/изменить содержимое переменных после останова.
Используйте пункт меню Debug/Evaluate/Modify,
Debug/Inspect (горячая клавиша Alt/F4) либо Debug/Watches
Измерить время выполнения заданной преподавателем команды
так, как это сделано в программе LAB0 с командой MOV REG,MEM.
5. Средствами отладчика TD в окне CPU (пункт меню View/CPU) научитесь:
- наблюдать/изменять содержимое регистров процессора (подумайте, ка-
кие регистры можно менять безболезнено (изменения в некоторых ре-
гистрах могут привести к фатальным для нормального выполнения
программы результатам)
- наблюдать/изменять ячейку памяти с известным физическим адресом:
(Прежде, чем писать куда-либо, хорошо было бы подумать: что это за
адрес - адрес ОЗУ(не использует ли этот адрес еще какая-нибудь
программа), адрес ПЗУ, существует ли физическое устройство, соот-
ветствующее данному адресу...
Варианты:
1. 0x46C
0x80000
0xF000:0xFFF0
2. 0x0040:0x6D
0x8000:0x0010
0xFFFFE
3. 0x41A
0x80210
0xFFFF:0x100
4. 0x0040:0x1E
0xD00000
0x8000:0x200
5. область памяти - 0x41A-0x43C
0xD000:0x100
0xFFFF:0xE
- читать/писать в произвольный порт ввода/вывода (например: считать
порт 0x40 несколько раз - попробуйте объяснить наблюдаемый резуль-
тат; записать число 3 в 61 порт, потом быстро записать туда нуль);
6. Определите в какие команды Ассемблера оттранслирован с языка СИ
оператор цикла. Напишите на уровне Ассемблера свой вариант цикла.
Сравните, результаты представте преподавателю.
*/