Files
templates/Labv1.cpp
Mark Zheleznyakov be2b9502d1 init
2024-09-07 08:49:36 +03:00

227 lines
8.3 KiB
C++
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// <20>ਬ¥à ®ä®à¬«¥­¨ï ¯à®£à ¬¬ë
// <20> ¡®â  N 0
// ˆ§¬¥à¥­¨¥ ¢à¥¬¥­¨ ¢ë¯®«­¥­¨ï äà £¬¥­â  ¯à®£à ¬¬ë
// ‘â㤥­âë £à 000.0 ˆ¢ ­®ää, <20>¥âà®ää, & ‘¨¤®à®ää
//
#include <dos.h>
#include <bios.h>
#include <stdio.h>
#include <conio.h>
#define PortCan0 0x40
void beep(unsigned iTone,unsigned iDlit); // <20>â® ¯à®â®â¨¯ ä㭪樨
// §¢ãª®¢®£® ᨣ­ « , ¨á¯®«ì§ã¥¬®© ¯à¨ ¨§¬¥à¥­¨¨ ¢à¥¬¥­¨
void main(void)
{
// Ž¡ê¥­¨¥ ¯¥à¥¬¥­­ëå
long int lCnt=0; // Ÿç¥©ª  - áç¥â稪 ¯®¢â®à¥­¨©
int iA=0x1234; // „㬬¨-ï祩ª , ¨á¯®«ì§ã¥¬ ï ¢ ¨áá«¥¤ã¥¬®© ª®¬ ­¤¥
/*************************************************************************\
/* Š ª ¨§ ¨ ¯®á¬®âà¥âì ᮤ¥à¦¨¬®¥ ¡ ©â  á ¨§¢¥áâ­ë¬ 䨧¨ç¥áª¨¬  ¤à¥á®¬ */
// …᫨ å®â¨¬ ­ ¯¥ç â âì ᮤ¥à¦¨¬®¥ ¡ ©â  á  ¤à¥á®¬ 0046h
//®¡ê塞 far-㪠§ â¥«ì ­  ¯¥à¥¬¥­­ãî ⨯  char ¨ ¨­¨æ¨ «¨§¨à㥬
//íâ®â 㪠§ â¥«ì §­ ç¥­¨¥¬  ¤à¥á , ¯à¥¤¢ à¨â¥«ì­® ¯à¥®¡à §®¢ ¢
//¥£® ª ⨯ã char *
char far * pT=(char *)0x46C; // (1)
printf ("\n <20>¥ç â ¥¬ 10 à § §­ ç¥­¨¥ ¡ ©â  á ¨§¢¥áâ­ë¬  ¤à¥á®¬ \n");
for (int i=0; i<10; i++)
printf (" \n %d ", * pT); // (1)
printf ("\n „«ï ¯à®¤®«¦¥­¨ï ­ ¦¬¨â¥ «î¡ãî ª« ¢¨èã \n");
getch(); // <20>ணࠬ¬  ¦¤¥â ­ ¦ â¨ï ª« ¢¨è¨
/******************************************\
\* Š ª ¨§ ‘¨ ¯®á¬®âà¥âì ᮤ¥à¦¨¬®¥ ¯®àâ  */
// —¨â ¥¬ ᮤ¥à¦¨¬®¥ ¯®àâ  á  ¤à¥á®¬ 40 á ¯®¬®éìî ä㭪樨 ‘¨
printf ("\n —¨â ¥¬ ᮤ¥à¦¨¬®¥ ¯®àâ  á  ¤à¥á®¬ 40 á ¯®¬®éìî ä㭪樨 ‘¨ \n" );
// –¨ª« ¯®¢â®àï¥âáï ª ¦¤ë¥ 0.5 á
printf ("\n „«ï ¢ë室  ¨§ 横«  - ­ ¦¬¨â¥ «î¡ãî ª« ¢¨èã \n" );
while (bioskey(1)==0) // ¯®ª  ­¥ ¡ã¤¥â ­ ¦ â  «î¡ ï ª« ¢¨è 
{
printf (" \n <20>®àâ40 = %d ", inp(PortCan0)); //(2)
// ¯®¬®éìî TD ¯®á¬®âà¨â¥, ¢® çâ® ¯à¥¢à é ¥âáï ä-æ¨ï inp()
// ­  ã஢­¥ ¬ è¨­­ëå ª®¬ ­¤
delay(500); // ‡ ¤¥à¦ª  ­  ¯®«á¥ªã­¤ë (500 ¬á)
}
getch(); // Žç¨é ¥¬ ¡ãä¥à ª« ¢¨ âãàë
/**************************************************************************\
<20>ਬ¥ç ­¨ï: *
”ã­ªæ¨ï printf (...) ¯®§¢®«ï¥â à á¯¥ç â âì ­  íªà ­¥ §­ ç¥­¨ï ¯¥à¥¬¥­­ëå, *
  â ª¦¥ ¯à®¨§¢®«ì­ë© ⥪áâ. *
”ã­ªæ¨ï bioskey(1) ¯®§¢®«ï¥â ®¯à¥¤¥«¨âì, ­ ¦ â  «¨ ª« ¢¨è  *
”ã­ªæ¨ï inp(uPort) ¯®§¢®«ï¥â áç¨â âì ¡ ©â ¨§ ¯®àâ  Port *
”ã­ªæ¨ï outp(uPort,iValue) ¯®§¢®«ï¥â ¢ë¢¥á⨠¢¥«¨ç¨­ã iValue ¢ ¯®àâ uPort *
”ã­ªæ¨ï delay(uTime) ®à£ ­¨§ã¥â ¯à®£à ¬¬­ãî § ¤¥à¦ªã ­  uTime ¬¨««¨á¥ªã­¤ *
”ã­ªæ¨ï getch() áç¨â뢠¥â ®¤¨­ ᨬ¢®« ¨§ ¡ãä¥à  ª« ¢¨ âãàë. *
¤ ­­®¬ á«ãç ¥ íâ® ­ ¤® ¤«ï ®ç¨á⪨ ¡ãä¥à  ª« ¢¨ âãàë *
\**************************************************************************/
// ‘­®¢  ç¨â ¥¬ â®â ¦¥ ¯®àâ á ¯®¬®éìî ¯à®£à ¬¬ë ­  ¢áâ஥­­®¬  áᥬ¡«¥à¥
printf ("\n —¨â ¥¬ ᮤ¥à¦¨¬®¥ ¯®àâ  á  ¤à¥á®¬ 40  áᥬ¡«¥à®¬ \n" );
while (bioskey(1) == 0 ) // <20>â®â 横« ¡ã¤¥â ¯®¢â®àïâìáï,
// ¯®ª  ­¥ ­ ¦¬¥¬ ª« ¢¨èã
// <20>ਬ¥àë ¨á¯®«ì§®¢ ­¨ï ¢áâ஥­­®£®  áᥬ¡«¥à  (3)
{
asm { push ax // ޤ¨­ ᯮᮡ § ¯¨á¨ ­  ¢áâ஥­­®¬  áᥬ¡«¥à¥
in al,0x40
}
unsigned char Tmm = _AL; // <20>â  ª®¬ ­¤  íª¢¨¢ «¥­â­  mov Tmm,al
// !! “¡¥¤¨â¥áì ¢ í⮬ á ¯®¬®éìî TD
asm pop ax // „à㣮© ᯮᮡ § ¯¨á¨ ­  ¢áâ஥­­®¬  áᥬ¡«¥à¥
delay (500);
printf (" \n <20>®àâ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);
}
/****************************************************************
<20>ਬ¥à ¢ë¯®«­¥­¨ï § ¤ ­¨ï ⨯  ˆ
’ॡã¥âáï ¨§¬¥à¨âì ¢à¥¬ï ¢ë¯®«­¥­¨ï § ¤ ­­®© ª®¬ ­¤ë
(¢ ¯à¨¬¥à¥ - ª®¬ ­¤  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();
}
// <20>¥§ã«ìâ âë ¢ë¯®«­¥­¨ï
// ‡ ¯ãá⨫¨ ¯à®£à ¬¬ã ¤¢ ¦¤ë
// <20>ਠ¯¥à¢®¬ ¯ã᪥ ãç á⮪ ¬¥¦¤ã ¬¥âª ¬¨ a1 ¨ a2 ¡ë« § ª®¬¬¥­â¨à®¢ ­
// ‚à¥¬ï ¢ë¯®«­¥­¨ï á®áâ ¢¨«® 3.15 +- 0.2 ᥪ㭤 (¤«ï ®æ¥­ª¨ ®è¨¡ª¨
// ¯à®£®­ ¡ë« ¯®¢â®à¥­ 5 à § ¨ ¡ë«® ®æ¥­¥­® á।­¥¥ §­ ç¥­¨¥ ¨
// á।­¥ª¢ ¤à â¨ç¥áª®¥ ®âª«®­¥­¨¥. <20>ਢ¥¤¥­­ë© ¤®¯ã᪠ࠢ¥­ 2*‘ŠŽ)
// <20>ਠ¢â®à®¬ ¯ã᪥ ãç á⮪ 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. <20>à®ç¨â ©â¥ ⥪á⠯ணࠬ¬ë ¨ ¢ë¤¥«¨â¥ «®£¨ç¥áª¨ á¢ï§­ë¥ ç áâ¨,
¯®©¬¨â¥, çâ® ¤¥« îâ í⨠ç áâ¨. <20> §¡¨à ï ⥪áâ, ®¡à â¨â¥ ¢­¨¬ ­¨¥ ­ 
â®, ª ª¨¥ ä㭪樨 ‘¨ ¨á¯®«ì§ãîâáï ¨ § ç¥¬. „¥« ï íâ®, ­ ãç¨â¥áì
¯®«ì§®¢ âìáï ª®­â¥ªáâ­ë¬ Help'®¬
2. ‘ª®¬¯¨«¨àã©â¥ ¯à®£à ¬¬ã ¨ ã¡¥¤¨â¥áì, çâ® ¢ ­¥© ®âáãâáâ¢ãî⠮訡ª¨
3. ‡ ¯ãáâ¨â¥ ¯à®£à ¬¬ã, ­ ¡«î¤ ©â¥ १ã«ìâ â ¨ ã¡¥¤¨â¥áì, çâ® ‚ë ¯®­¨-
¬ ¥â¥, çâ® ¯à®¨á室¨â.
4. <20> ãç¨â¥áì, ¨á¯®«ì§ãï ¢áâ஥­­ë© ®â« ¤ç¨ª IDE:
‚믮«­¨âì ¯à®£à ¬¬ã ¤® § ¤ ­­®© â®çª¨ ®áâ ­®¢ . <20>  ã஢­¥
¨á室­®£® ‘¨-⥪áâ  íâ® ¬®¦­® ᤥ« âì, ¨á¯®«ì§ãï ¯ã­ªâë ¬¥­î Run
¨ Debug/Breakpoints.
<20>஢¥à¨âì/¨§¬¥­¨âì ᮤ¥à¦¨¬®¥ ¯¥à¥¬¥­­ëå ¯®á«¥ ®áâ ­®¢ .
ˆá¯®«ì§ã©â¥ ¯ã­ªâ ¬¥­î Debug/Evaluate/Modify,
Debug/Inspect (£®àïç ï ª« ¢¨è  Alt/F4) «¨¡® Debug/Watches
ˆ§¬¥à¨âì ¢à¥¬ï ¢ë¯®«­¥­¨ï § ¤ ­­®© ¯à¥¯®¤ ¢ â¥«¥¬ ª®¬ ­¤ë
â ª, ª ª í⮠ᤥ« ­® ¢ ¯à®£à ¬¬¥ LAB0 á ª®¬ ­¤®© MOV REG,MEM.
5. ‘।á⢠¬¨ ®â« ¤ç¨ª  TD ¢ ®ª­¥ CPU (¯ã­ªâ ¬¥­î View/CPU) ­ ãç¨â¥áì:
- ­ ¡«î¤ âì/¨§¬¥­ïâì ᮤ¥à¦¨¬®¥ ॣ¨áâ஢ ¯à®æ¥áá®à  (¯®¤ã¬ ©â¥, ª -
ª¨¥ ॣ¨áâàë ¬®¦­® ¬¥­ïâì ¡¥§¡®«¥§­¥­® (¨§¬¥­¥­¨ï ¢ ­¥ª®â®àëå à¥-
£¨áâà å ¬®£ã⠯ਢ¥á⨠ª ä â «ì­ë¬ ¤«ï ­®à¬ «ì­®£® ¢ë¯®«­¥­¨ï
¯à®£à ¬¬ë १ã«ìâ â ¬)
- ­ ¡«î¤ âì/¨§¬¥­ïâì ï祩ªã ¯ ¬ïâ¨ á ¨§¢¥áâ­ë¬ 䨧¨ç¥áª¨¬  ¤à¥á®¬:
(<28>०¤¥, 祬 ¯¨á âì ªã¤ -«¨¡®, å®à®è® ¡ë«® ¡ë ¯®¤ã¬ âì: çâ® íâ® § 
 ¤à¥á -  ¤à¥á އ“(­¥ ¨á¯®«ì§ã¥â «¨ íâ®â  ¤à¥á ¥é¥ ª ª ï-­¨¡ã¤ì
¯à®£à ¬¬ ),  ¤à¥á <20>‡“, áãé¥áâ¢ã¥â «¨ 䨧¨ç¥áª®¥ ãáâனá⢮, á®®â-
¢¥âáâ¢ãî饥 ¤ ­­®¬ã  ¤à¥áã...
‚ à¨ ­âë:
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. Ž¯à¥¤¥«¨â¥ ¢ ª ª¨¥ ª®¬ ­¤ë €áᥬ¡«¥à  ®ââ࠭᫨஢ ­ á ï§ëª  ˆ
®¯¥à â®à 横« . <20> ¯¨è¨â¥ ­  ã஢­¥ €áᥬ¡«¥à  ᢮© ¢ à¨ ­â 横« .
‘à ¢­¨â¥, १ã«ìâ âë ¯à¥¤á⠢⥠¯à¥¯®¤ ¢ â¥«î.
*/