227 lines
8.3 KiB
C++
Executable File
227 lines
8.3 KiB
C++
Executable File
// <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; // „㬬¨-ï祩ª , ¨á¯®«ì§ã¥¬ ï ¢ ¨áá«¥¤ã¥¬®© ª®¬ ¤¥
|
||
|
||
/*************************************************************************\
|
||
/* Š ª ¨§ ‘¨ ¯®á¬®âà¥âì ᮤ¥à¦¨¬®¥ ¡ ©â á ¨§¢¥áâë¬ ä¨§¨ç¥áª¨¬ ¤à¥á®¬ */
|
||
|
||
// …᫨ å®â¨¬ ¯¥ç â âì ᮤ¥à¦¨¬®¥ ¡ ©â á ¤à¥á®¬ 0046‘h
|
||
//®¡ê塞 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> ¯¨è¨â¥ ã஢¥ €áᥬ¡«¥à ᢮© ¢ à¨ â æ¨ª« .
|
||
‘à ¢¨â¥, १ã«ìâ âë ¯à¥¤á⠢⥠¯à¥¯®¤ ¢ ⥫î.
|
||
*/
|