This commit is contained in:
Mark Zheleznyakov
2024-09-07 08:49:36 +03:00
commit be2b9502d1
54 changed files with 3980 additions and 0 deletions

131
ASMOUSE.CPP Executable file
View File

@ -0,0 +1,131 @@
/****************************************************************************
** <20><><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>,**
** <20><EFBFBD><E1AFAE><EFBFBD><EFBFBD><EFBFBD> <20>++ <20> <20><><EFBFBD><E1A5AC><EFBFBD><EFBFBD>. **
****************************************************************************/
#include <conio.h>
#include <stdio.h>
#include <dos.h>
#include <iostream.h>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A5AC><EFBFBD><EFBFBD><EFBFBD>, <20><EFBFBD><20><><EFBFBD><EFBFBD><E0A4A8><EFBFBD><EFBFBD> <20> <20><EFBFBD><E0A8A7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>.
unsigned int MouseX, MouseY, MouseB;
char IfMouse ();
void ShowMouse ();
void HideMouse ();
void ReadMouse ();
void SetMouseXY (unsigned int X, unsigned int Y);
void SetMinMaxX (unsigned int Min, unsigned int Max);
void SetMinMaxY (unsigned int Min, unsigned int Max);
//<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><E6A5A4><EFBFBD> <20><EFBFBD><E0AEA2><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
char IfMouse ()
{
unsigned int Result;
asm mov ax, 0
asm int 0x33
asm mov Result, ax
return Result;
}
//<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><E6A5A4><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
void ShowMouse ()
{
asm mov ax, 0x1
asm int 0x33
}
//<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><E6A5A4><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
void HideMouse ()
{
asm mov ax, 0x2
asm int 0x33
}
//<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><E6A5A4><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><EFBFBD><E0A8A7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void ReadMouse ()
{
asm mov ax, 0x3
asm int 0x33
asm mov MouseB, bx
asm mov MouseX, cx
asm mov MouseY, dx
}
//<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><E6A5A4><EFBFBD> <20><><EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><E0A4A8><EFBFBD><EFBFBD>
void SetMouseXY (unsigned int X, unsigned int Y)
{
asm mov ax, 0x4
asm mov cx, X
asm mov dx, Y
asm int 0x33
}
//<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><E6A5A4><EFBFBD> <20><><EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><E1A8AC><EFBFBD> <20><><EFBFBD><EFBFBD><E7A5AD>
//<2F><EFBFBD><E0A0AD> <20><EFBFBD><E0AEAC><EFBFBD>⪠, <20> <20><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
//<2F> <20><><EFBFBD><E0A8A7>⠫쭮<E2A0AB> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
void SetMinMaxX (unsigned int Min, unsigned int Max)
{
asm mov ax, 0x7
asm mov cx, Min
asm mov dx, Max
asm int 0x33
}
//<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><E6A5A4><EFBFBD> <20><><EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><E1A8AC><EFBFBD> <20><><EFBFBD><EFBFBD><E7A5AD>
//<2F><EFBFBD><E0A0AD> <20><EFBFBD><E0AEAC><EFBFBD>⪠, <20> <20><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
//<2F> <20><><EFBFBD><EFBFBD><E2A8AA><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
void SetMinMaxY (unsigned int Min, unsigned int Max)
{
asm mov ax, 0x8
asm mov cx, Min
asm mov dx, Max
asm int 0x33
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E0A0AC> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><E6A5A4><EFBFBD> <20><><EFBFBD><EFBFBD><E1A0AD><EFBFBD> <20><><EFBFBD><EFBFBD>.
main(){
clrscr();
IfMouse();
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>.\n";
delay(3000);
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFA2A8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD> 3 ᥪ.\n";
delay(3000);
ShowMouse();
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E7A5A7><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD> 3 ᥪ.\n";
delay(3000);
HideMouse();
cout<<"<EFBFBD><EFBFBD>१ 3 ᥪ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFA2A8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.\n";
delay(3000);
ShowMouse();
ReadMouse();
cout<<"\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #1:\n";
cout<<"<EFBFBD>-<2D><><EFBFBD><EFBFBD><E0A4A8><EFBFBD><EFBFBD>: "<<MouseX<<"\n";
cout<<"<EFBFBD>-<2D><><EFBFBD><EFBFBD><E0A4A8><EFBFBD><EFBFBD> "<<MouseY<<"\n";
delay(3000);
cout<<"<EFBFBD><EFBFBD>१ 3 ᥪ <20><><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><E0A4A8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20>=120 <20> <20>=120\n";
delay(3000);
SetMouseXY(120,120);
ReadMouse();
cout<<"\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #2:\n";
cout<<"<EFBFBD>-<2D><><EFBFBD><EFBFBD><E0A4A8><EFBFBD><EFBFBD>: "<<MouseX<<"\n";
cout<<"<EFBFBD>-<2D><><EFBFBD><EFBFBD><E0A4A8><EFBFBD><EFBFBD> "<<MouseY<<"\n";
delay(3000);
cout<<"\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.\n";
delay(3000);
ReadMouse();
//if ((MouseB&1)==1) cout<<"\n<><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.";
if (MouseB==1) cout<<"\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.";
else cout<<"\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.";
delay(3000);
cout<<"\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0A0AD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>:\n";
cout<<"100<X<300\n";
cout<<"0<Y<10\n";
SetMinMaxX(100,300);
SetMinMaxY(0,10);
cout<<"\n<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8A5AD><><E0A0A1><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.\n";
getch();
return 0;
}

BIN
ASMOUSE.EXE Executable file

Binary file not shown.

BIN
KEYVIEW.COM Executable file

Binary file not shown.

76
LABV10.CPP Executable file
View File

@ -0,0 +1,76 @@
// "<22><><EFBFBD><EFBFBD><EFBFBD> IBM PC <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ன"
// Labv10
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <bios.h>
#define Port8042 0x60
long far * pTime=(long far*)0x46C; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>稪 ⨪<><E2A8AA>
// <20><><EFBFBD><E0A5A4><EFBFBD><EFBFBD><><E3AAA0><EFBFBD> <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int far * pHeadPtr=(int far *)0x41A; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><><E3AAA0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>.<2E><>.
int far * pTailPtr=(int far *)0x41C; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><><E3AAA0><EFBFBD><><E5A2AE><EFBFBD> <20><><EFBFBD>.<2E><>.
unsigned char far * pBuf;
void main()
{
// 3<><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD> N1.
clrscr();
cout << "\n 3<><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD> N1:\n";
cout << "\n <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E7A5AD> <20><><EFBFBD><EFBFBD><EFBFBD>!";
cout << "\n <20><EFBFBD><E0AEA1> - <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.\n";
char cScan,cAsci;
int iAdres;
do
{
// <20><><EFBFBD><EFBFBD><EFBFBD><E3A7A8> <20><><EFBFBD><EFBFBD><><E0A5A3><EFBFBD>஢, <20><><EFBFBD><EFBFBD><E0A8AC> ds:si <20><><EFBFBD><EFBFBD><E7A5AD><EFBFBD> 0x40:0x1A
asm{
push ds //
push si // <20><><EFBFBD><EFBFBD><E0A0AD><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD>
push di //
mov ax,0x40 //
mov ds,ax // <20><><EFBFBD><EFBFBD><EFBFBD><E3A7A8><><E1A5A3><EFBFBD><EFBFBD>
mov si,0x1A // <20><><E3AAA0><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mov di,0x1C // <20> <20><><><E5A2AE>
}
wait_kbd:
asm{
mov ax,[si] // <20><EFBFBD><E0A0A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E3AAA0><EFBFBD> -
cmp ax,[di] // <20>.<2E>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
je wait_kbd
// <20><><EFBFBD><EFBFBD><EFBFBD><E3A7A8><><E0A5A3><EFBFBD><EFBFBD> di <20><><EFBFBD><EFBFBD><E7A5AD><EFBFBD> 0x1C
// <20><EFBFBD><E0A0A2><EFBFBD><EFBFBD><><E3AAA0><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E3AAA0><EFBFBD>
mov si,[si]
}
iAdres=_SI;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E7A5AD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
asm mov ax,[si]
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> _AL <20> _AH ᮤ<><EFBFBD><>-<2D><><EFBFBD> <20> ASCII-<2D><><EFBFBD>
asm pop di
asm pop si
asm pop ds
cScan=_AH;
cAsci=_AL;
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = %x <20><><EFBFBD><EFBFBD> = %d ASCII = %d \n",iAdres,cScan,cAsci);
} while(getch() != 32);
cout << "\n <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A2AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. Press any key...\n";
getch();
delay(1000);
asm in al,0x60
cScan=0; // ??????
printf(" <20><><EFBFBD><EFBFBD> = %x \n",cScan);
// goto met;
//
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><EFBFBD><E2A0A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC>
// <20><><EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD> <20>⫨稥 ASCII <20><><EFBFBD><EFBFBD><EFBFBD>: <20><EFBFBD><E1ADAE><EFBFBD><EFBFBD> <20> <20><><EFBFBD><E3A6A5><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC><><E6A8AA><EFBFBD><EFBFBD><EFBFBD><E1AAAE> <20><EFBFBD><E2A5AD><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> 60
// <20><><EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD> <20>⫨稥 ᪠<> <20><><EFBFBD><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><E1AAA0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>

40
LABV11.CPP Executable file
View File

@ -0,0 +1,40 @@
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A0A1><EFBFBD> 11
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <><E0A5A6><EFBFBD> sVGA
*/
#include <dos.h>
#include <mem.h>
#include <conio.h>
void set_mode(int mode)
{
asm{
mov ax,0x4f02;
mov bx,mode ;
int 0x10;
}
}
void main(void)
{
set_mode(0x0112);
unsigned char c=0;
for (int i=2; i<640*4;i+=4)
{
asm {
mov ax,0xa000;
mov es,ax;
mov si,i
mov bh,c
mov bl,c
mov es:[si],bl
}
c++;
}
getch();
set_mode(0x3);
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E6A2A5> <20> 111 <20> 112 <><E0A5A6><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC> <20><EFBFBD><EBA2AE> <20><><EFBFBD><EFBFBD><EFBFBD><E2AEAD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>

57
LABV5.CPP Executable file
View File

@ -0,0 +1,57 @@
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> N LAB5
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC>
// <20><><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#include <stdio.h>
#include<conio.h>
#include<iostream.h>
/*
<EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><EBA7AE> <20>㭪樨 <20> <20><>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Call
<EFBFBD> Assembler. <20><><EFBFBD> <20><20><><EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><EFBFBD><E3ADAA><EFBFBD> <20><><EFBFBD><E0A0AC><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ਭ樯<E0A8AD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IP ᫥<><E1ABA5><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
<EFBFBD><EFBFBD><EFBFBD><20><> Call. (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1A5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> <20><><EFBFBD><EFBFBD><E6A5A4><EFBFBD>)
<EFBFBD><EFBFBD><20><> <20>㭪樨 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A2AB><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> RET.
*/
//<2F><EFBFBD><E3ADAA><EFBFBD>, <20><EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E1ABAE><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><E0A0AC><EFBFBD><EFBFBD> <20><><20><><20>
void addition(long sl_1,long sl_2, long &sum)
{
/* asm{
mov AX,[BP+4] //AX - <20><><EFBFBD><EFBFBD>訥 p<><70>p<EFBFBD><70><EFBFBD> <20><>p<EFBFBD><70><EFBFBD><EFBFBD><><E1ABA0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mov DX,[BP+8] //DX - <20><><EFBFBD><EFBFBD>訥 p<><70>p<EFBFBD><70><EFBFBD> <20><><EFBFBD><EFBFBD><><E1ABA0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mov SI,[BP+12] //SI - <20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<><70>p冷<70>
add AX,DX //᫮<><E1ABAE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<><70>p冷<70>
mov [SI],AX //p<><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E1A2A5><EFBFBD> <20> SI
mov AX,[BP+6] //AX - <20><><EFBFBD>p訥 p<><70>p<EFBFBD><70><EFBFBD> <20><>p<EFBFBD><70><EFBFBD><EFBFBD><><E1ABA0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mov DX,[BP+10] //DX - <20><><EFBFBD><EFBFBD>訥 p<><70>p<EFBFBD><70><EFBFBD> <20><><EFBFBD><EFBFBD><><E1ABA0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//᫮<><E1ABAE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>p<EFBFBD><70><EFBFBD> p<><70>p冷<70>
mov [SI+2],AX //p<><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> SI
}*/
sum=sl_2;
}
void main ( void )
{
long a,b;
long sum;
cout<<"\n <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><><E1ABA0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: ";
cin>>a;
cout<<" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>஥ ᫠<><E1ABA0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: ";
cin>>b;
addition(a,b,sum);
cout<<"a + b = "<<sum;
getch();
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC><><E1ABAE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 32-<2D><><EFBFBD><EFA4AD> <20><><20><> <20><>
// 2 <20><><EFBFBD><EFBFBD><E0ACA8><><E1ABAE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ணࠬ<E0AEA3><E0A0AC><EFBFBD> <20><> <20><><EFBFBD><E1A5AC><EFBFBD><EFBFBD><EFBFBD> (ᬮ<><E1ACAE><EFBFBD> <20><EFBFBD><E0A8AC>)
// 3 <20><EFBFBD><E0AEA2><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1A5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) <20><EFBFBD> <20><><EFBFBD>ணࠬ<E0AEA3><E0A0AC>
// <20><EFBFBD><E0AEA2><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E1A5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> <20><><EFBFBD><EFBFBD>ணࠬ<E0AEA3><E0A0AC> (<28><><EFBFBD><EFBFBD><E6A5A4><EFBFBD>)
// <20><><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Tiny - Large
// <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ?
// 4 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A5A4><EFBFBD> <20><><EFBFBD><E0A0AC><20><>१ ॣ<><E0A5A3><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}

46
LABV6.CPP Executable file
View File

@ -0,0 +1,46 @@
/* LAB6
<09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A0A1><EFBFBD> <20><><>
"<22>ணࠬ<E0AEA3><E0A0AC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD>"
<EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><EBA7AE> <20>㭪樨 - <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> <20><> <20><>, <20><EFBFBD><E1AFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> INT.
<EFBFBD> <20><><20> <20><20><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD>.
<EFBFBD> <20><EFBFBD> <20><><EFBFBD><EFBFBD><E0A0AD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E7A5AD> IP, <20>S (ᥣ<><E1A5A3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>),<2C><> <20><20><><EFBFBD><EFBFBD><EBA2A0><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><E4ABA0>.
<EFBFBD><EFBFBD><20><> INT <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A2AB><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IRet,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><EBADA8><EFBFBD><EFBFBD> <20><> <20><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A5A3><EFBFBD>஢ CS, IP <20><><E4ABA0><EFBFBD>.
<EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><EFBFBD><EBA7AE> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD>,䫠<><E4ABA0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> i <20> t
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> 0, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD>,
<EFBFBD><><E2A0AA> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0AEA2>.
*/
#include<stdio.h>
#include<dos.h>
#include<iostream.h>
#include <conio.h>
void interrupt (*old)(...); // <20><><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> <20><><EFBFBD><EFBFBD><E0A0AD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void interrupt cmp_int(...) // <20> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><E0A0A1>
{
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ";
getch();
}
void main(void)
{ int aa;
aa=1;
old=getvect(0xf0);
disable();
setvect(0xf0,cmp_int);
enable();
// aa=aa/0;
geninterrupt(0xf0);
puts("v1=v2");
setvect(0xf0,old);
return;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC> <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD>
// 2 <20><EFBFBD><EBA7AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> <20><><20><EFBFBD><E0A3A0><EFBFBD><EFBFBD><20><EFBFBD><E1AEA1><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 3 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><EFBFBD><ECA7AE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> int3, <20><><EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20> <20><EFBFBD>. TD
}

41
LABV7.CPP Executable file
View File

@ -0,0 +1,41 @@
/* LAB-7
<09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A0A1><EFBFBD> <20><><>
"<22><>᫠ ᯫ<><E1AFAB><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD>⮩"
*/
#include<stdio.h>
#include<dos.h>
#include<iostream.h>
#include <conio.h>
#include <float.h>
void main(void)
{ int aa;
// <20><><EFBFBD><EFBFBD><EFBFBD><20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><20><> <20><EFBFBD><E0AEA2> <20><>
float bb,ad;
aa=1; bb=5.0;ad=3.1;
bb=aa;
cout<<"\n Ci "<<bb;
// cin>>bb;
getch();
// <20><><EFBFBD><EFBFBD><EFBFBD><20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><20><> <20><EFBFBD><E0AEA2> <20><><EFBFBD><E1A5AC><EFBFBD><EFBFBD><EFBFBD>
asm { finit
fld ad
fld bb
fadd
fstp bb
}
cout<<" Acc "<<bb;
getch();
return;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 1 <20><EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD> <20><><EFBFBD><E1ABA0> <20> <20><> <20><> <20><EFBFBD><E0AEA2> <20><>
// 2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC> <20><> <20><><EFBFBD> (<28><> <20><EFBFBD><E0A8AC>): <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><>᫠,
// <20><><EFBFBD><EFBFBD><EFBFBD><E3A7A8> <20><> <20><><E0A5A3><EFBFBD><EFBFBD><EFBFBD> FPU, <20><><EFBFBD><EFBFBD><EFBFBD><E3ACAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><EFBFBD><EBA2A5><EFBFBD><EFBFBD><><E0A5A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><E1ABA5><EFBFBD><EFBFBD><><E0A0A1><EFBFBD> FPU <20> TD. <20><><EFBFBD> <20><EFBFBD><E1AFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD> FPU ?
// 3 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> FPU <20><><EFBFBD><EFBFBD>᫮ (NaN), <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20> TD. <20><EFBFBD><EBA7AE><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> <20><> <20><EFBFBD> <20><EFBFBD><E1AEA1><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
// 4 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><E0A0A6><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><20> <20><>: x=x/y. <20><EFBFBD><E0AEA2><EFBFBD><EFBFBD><EFBFBD> <20> TD
}

72
LABV9.CPP Executable file
View File

@ -0,0 +1,72 @@
/* Lab: Ass, BIOS and Ci functions
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC> <20><><EFBFBD><><E0A0A1><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A5AC> Labv9
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <><E0A5A6><EFBFBD>
*/
#include <graphics.h>
#include <dos.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>;
union REGS r;
void main()
{
// <20><><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0A5A6><EFBFBD>
int j,i,ii,color=0;
r.h.ah=0x0;
r.h.al=0x13;
//_asm int 0x10;
int86(0x10,&r,&r);
// <20><EFBFBD> 梥⭮<E6A2A5><E2ADAE> <20><><EFBFBD><EFBFBD><EFBFBD>
for( j =1 ; j <319 ; j ++)
{ color=color+1;
_AH=0x0c;
_AL=color;
if(color==256) color=0;
_BH=0;
_DX=50;
_CX=j;
geninterrupt(0x10);
}
getch();
//<2F><>९ணࠬ<E0AEA3><E0A0AC><EFBFBD><E0AEA2><EFBFBD><EFBFBD><><E2A0A1><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ii=clock();
for( i = 0 ; i < 255 ; i++)
{ _AH=0x10;
_AL=0x10;
_BX=i; // <20><><EFBFBD><EFBFBD><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD>
_CH=i; /* G */
_CL=i; /* B */
_DH=i; /* R */
geninterrupt(0x10);
} /* */
color=256;
i=clock()-ii;
// <20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E2AEAD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
for( j =1 ; j <319 ; j ++) /* */
{ color=color-1;
_AH=0x0c;
_AL=color;
if(color==0) color=256;
_BH=0;
_DX=100; // <20><><EFBFBD> <20><EFBFBD><EBA2AE>
_CX=j;
geninterrupt(0x10);
}
// printf("<22><EFBFBD> <20><>९ணࠬ<E0AEA3><E0A0AC><EFBFBD><E0AEA2><EFBFBD><EFBFBD><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : %d",i);
getch();
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E2AEAD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 梥⮬
// 2 <20><EFBFBD><EBA2A5><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <><E0A5A6><EFBFBD> <20><><EFBFBD><><E0A0A1><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC> <20><EFBFBD><EBA2AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><E7A8AD> <20> a0000)
// 3 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> <20><EFBFBD><EBA2AE> <20> <20><>९ணࠬ<E0AEA3><E0A0AC><EFBFBD><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E1AFAE><EFBFBD><EFBFBD><EFBFBD> i=clock()
// 4 <20>ਤ㬠<E0A8A4><E3ACA0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0A0AA><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><EFBFBD><EBA2A5> <20><><EFBFBD>
// 梥⮢<E6A2A5><E2AEA2> <20><><EFBFBD><EFBFBD><20><><E6A8AA><EFBFBD><EFBFBD><20><>९ணࠬ<E0AEA3><E0A0AC><EFBFBD><EFBFBD><EFBFBD><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return;
}

BIN
LOGOW2.BMP Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

17
Lab_asm.asm Executable file
View File

@ -0,0 +1,17 @@
DOSSEG
.MODEL TINY
.STACK 100h
.DATA
Message DB 13,10,'Hi <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>! ',13,10,'$'
.CODE
mov ax,@Data
mov ds,ax ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DS <20><><EFBFBD><EFBFBD><EFBFBD>
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
; <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mov ah,9 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DOS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mov dx,OFFSET Message ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!"
int 21h ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!" <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
mov ah,4ch ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DOS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int 21h ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
END

226
Labv1.cpp Executable file
View File

@ -0,0 +1,226 @@
// <20><EFBFBD><E0A8AC> <20><><EFBFBD><EFBFBD><E0ACAB><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> N 0
// <20><><EFBFBD><EFBFBD><EFBFBD><E0A5AD> <20><EFBFBD><E0A5AC><EFBFBD> <20><EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0A0A3><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC>
// <20><><EFBFBD><E3A4A5><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); // <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20>㭪樨
// <20><><EFBFBD><E3AAAE><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)
{
// <20><><EFBFBD><EFBFBD><EFA2AB><EFBFBD><EFBFBD> <20><><EFBFBD><E0A5AC><EFBFBD><EFBFBD><EFBFBD>
long int lCnt=0; // <20><EFBFBD><E7A5A9> - <20><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0A5AD>
int iA=0x1234; // <20><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> */
// <20><20><><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><EFBFBD><E0A6A8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>ᮬ 0046<34>h
//<2F><><EFBFBD>塞 far-㪠<><E3AAA0><EFBFBD> <20><> <20><><EFBFBD><E0A5AC><EFBFBD><EFBFBD><EFBFBD> <> char <20> <20><><EFBFBD><EFBFBD><E6A8A0><EFBFBD><EFBFBD><EFBFBD>
//<2F><><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>
//<2F><><EFBFBD> <20> <> char *
char far * pT=(char *)0x46C; // (1)
printf ("\n <20><><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 <20><><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(); // <20>ணࠬ<E0AEA3><E0A0AC> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/******************************************\
\* <20><><EFBFBD> <20><> <20><> <20><><EFBFBD><E1ACAE><EFBFBD><EFBFBD><EFBFBD><><EFBFBD><E0A6A8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
// <20><><EFBFBD><><EFBFBD><E0A6A8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>ᮬ 40 <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>㭪樨 <20><>
printf ("\n <20><><EFBFBD><><EFBFBD><E0A6A8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>ᮬ 40 <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>㭪樨 <20><> \n" );
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0.5 <20>
printf ("\n <20><><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) // <20><><EFBFBD><EFBFBD> <20><> <20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
printf (" \n <20><><EFBFBD><EFBFBD>40 = %d ", inp(PortCan0)); //(2)
// <20> <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()
// <20><> <20><EFBFBD><E0AEA2> <20><><EFBFBD><E8A8AD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
delay(500); // <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>ᥪ㭤<E1A5AA> (500 <20><>)
}
getch(); // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/**************************************************************************\
<20><EFBFBD><EFBFBD><E7A0AD>: *
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> printf (...) <20><><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>, *
<20><><E2A0AA> <20><EFBFBD><E0AEA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E2A5AA>. *
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> bioskey(1) <20><><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) <20><><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) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><EBA2A5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> iValue <20> <20><><EFBFBD><EFBFBD> uPort *
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> delay(uTime) <20><EFBFBD><E0A3A0><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> uTime <20><><EFBFBD><EFBFBD><EFBFBD>ᥪ㭤 *
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> getch() <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0> <20><><EFBFBD><EFBFBD><><E1A8AC><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. *
<20> <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> *
\**************************************************************************/
// <20><><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 <20><><EFBFBD><><EFBFBD><E0A6A8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>ᮬ 40 <20><><EFBFBD><E1A5AC><EFBFBD>\n" );
while (bioskey(1) == 0 ) // <20><><EFBFBD><EFBFBD><> <20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
// <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><EFBFBD><E0A8AC><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 // <20><><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; // <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⭠ mov Tmm,al
// !! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TD
asm pop ax // <20><><EFBFBD> ᯮᮡ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><E0AEA5><EFBFBD><EFBFBD> <20><><EFBFBD><E1A5AC><EFBFBD><EFBFBD><EFBFBD>
delay (500);
printf (" \n <20><><EFBFBD><EFBFBD>40 = %d ", Tmm );
// <20><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><> <20><>
}
getch();
printf ("\n <20><><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();
/*************************************************************
<20><><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>
<20><><EFBFBD><E0A5AC><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0046<34> c <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0A5A4><EFBFBD> <20><> */
long far * pTime=(long *)0x46C; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>稪 ⨪<><E2A8AA>
while (bioskey(1) == 0)
{
printf ("\n %ld",*pTime);
delay(1000);
}
getch();
// <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><><EFBFBD><E0A6A8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E2AEA2> <20><><EFBFBD><E0A5AC><EFBFBD><EFBFBD><EFBFBD>
// <20> <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 // <20><><EFBFBD><EFBFBD><E0A0AD> <20><> <20><><EFBFBD> <20><><EFBFBD>砩 ॣ<><E0A5A3><EFBFBD><EFBFBD><EFBFBD>
asm push si
// <20><> <20><><EFBFBD><EFBFBD><E0AEA5><EFBFBD><EFBFBD> <20><><EFBFBD><E1A5AC><EFBFBD><EFBFBD><EFBFBD>
asm mov ax,40h // <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBA2A0> hex-<2D><><EFBFBD><EFBFBD><EFBFBD><E2A0AD> ⠪ ...
asm mov ds,ax
asm mov si,0x6C // ... <20><><EFBFBD>
asm mov ax,[ds:si]
asm mov Time,ax
asm pop si // <20><><E2A5AF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E2A0AD><EFBFBD><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD>
asm pop ds // (<28><> <20><><EFBFBD><EFBFBD><E2A0A9> <20><><EFBFBD><EFBFBD> !!!)
printf ("\n %d",Time);
delay(300);
}
/****************************************************************
<20><EFBFBD><E0A8AC> <20><EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <> <20>
<20><EFBFBD><E0A5A1><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>
(<28> <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>
<20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> )
<20><><EFBFBD><EFBFBD><EFBFBD><E0A5AD> <20><EFBFBD><E0A5AC><EFBFBD> <20><EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0A0A3><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC> */
beep(400,200); // <20><><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); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>⬥砥<E2ACA5> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0A2A0> (5)
}
// <20><EFBFBD><E3ADAA><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();
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD> <20><><EFBFBD> <20><><20><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E2AAA0> a1 <20> a2 <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0AEA2>
// <20><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>
// <20><EFBFBD><E0AEA3> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>७ 5 ࠧ <20> <20><20><EFBFBD><E6A5AD><EFBFBD> <20><EFBFBD><E0A5A4><EFBFBD> <20><><EFBFBD><EFBFBD><E7A5AD> <20>
// <20><EFBFBD><E0A5A4><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>)
// <20><><EFBFBD> <20><><EFBFBD><20><><20><><EFBFBD><EFBFBD>⮪ a1-a2 ࠡ<>⠫. <20><EFBFBD> <20><EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><E2A0A2><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
// ࠢ<><E0A0A2> 10^7, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0A5AC><EFBFBD><><E0A0A2> 4.35 +- 0.3 ᥪ㭤, <20><EFBFBD><E6A5AD> <20><EFBFBD><E0A5AC><EFBFBD>
// <20><EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0.44 +- 0.03 <20><><EFBFBD>.
// <20> <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>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> ᬥ饭<E1ACA5><E9A5AD><EFBFBD> [BP+disp]
/*
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A0A1><EFBFBD> LAB0-0
1. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A0A9><><E2A5AA> <20>ணࠬ<E0AEA3><E0A0AC> <20> <20><EFBFBD><EBA4A5><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFA7AD> <20><><EFBFBD><EFBFBD><EFBFBD>,
<20><><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><>
<20><>, <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>
<20><><EFBFBD><EFBFBD><ECA7AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E2A5AA><EFBFBD><EFBFBD><EFBFBD> Help'<27><>
2. <20><><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. <20><><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>-
<20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><EFBFBD><EFBFBD><E5AEA4>.
4. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><EFBFBD><E1AFAE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E0AEA5><EFBFBD><EFBFBD> <20><EFBFBD>稪 IDE:
<20><EFBFBD><EBAFAE><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.
<20><EFBFBD><E0AEA2><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 (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Alt/F4) <20><><EFBFBD><EFBFBD> Debug/Watches
<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><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. <20><EFBFBD><EFBFBD><E2A2A0> <20><EFBFBD><EFBFBD> TD <20> <20><><EFBFBD><EFBFBD> CPU (<28><EFBFBD> <20><><EFBFBD><EFBFBD> View/CPU) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
- <20><><EFBFBD><EFBFBD><EFBFBD><EEA4A0>/<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><>-
<20><><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><>-
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0A8A2><EFBFBD><EFBFBD> <20> <20><><EFBFBD><E2A0AB><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><ECADAE> <20><EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20>ணࠬ<E0AEA3><E0A0AC><><E0A5A7><EFBFBD><EFBFBD><EFBFBD>⠬)
- <20><><EFBFBD><EFBFBD><EFBFBD><EEA4A0>/<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>ᮬ:
(<28><EFBFBD><E0A5A6>, 祬 <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><>
<20><><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>
<20>ணࠬ<E0AEA3><E0A0AC>), <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><><E4A8A7><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>⢮, ᮮ<>-
<20><><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. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - 0x41A-0x43C
0xD000:0x100
0xFFFF:0xE
- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><EFBFBD><E0AEA8><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>
<20><><EFBFBD><EFBFBD> 0x40 <20><><EFBFBD>쪮 ࠧ - <20><><EFBFBD><EFBFBD><E0AEA1><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E1ADA8> <20><><EFBFBD><EFBFBD><EFBFBD><EEA4A0><EFBFBD><EFBFBD><><E0A5A7><EFBFBD>-
<20><><EFBFBD>; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>᫮ 3 <20> 61 <20><><EFBFBD><EFBFBD>, <20><><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><20><><EFBFBD><EFBFBD>);
6. <20><><EFBFBD><E0A5A4><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>.
*/

87
Labv12.CPP Executable file
View File

@ -0,0 +1,87 @@
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0AEA2><EFBFBD> <20><><EFBFBD><><E4A0A9>
<09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A0A1><EFBFBD> 12
*/
#include <stdio.h>
#include <conio.h>
typedef unsigned int WORD;
typedef unsigned long DWORD;
struct BITMAPFILEHEADER {
WORD bfType;
DWORD bfSize; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E4A0A9>
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
};
struct BITMAPINFOHEADER{
DWORD biSize;
DWORD biWidth;
DWORD biHeight;
WORD biPlanes;
WORD biBitCount; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD>
DWORD biCompression;
DWORD biSizeImage;
DWORD biXPelsPerMeter;
DWORD biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
};
void main(int c,char **a)
{
FILE *in, *out;
highvideo();
BITMAPFILEHEADER bfh;
BITMAPINFOHEADER bih;
/* FILE *po;
if(argc==0) return 0;
if(argc==2) { mode=257;} else mode=atoi(argv[2]);
po=fopen(argv[1],"rb");
fread(&bfh,14,1,po);
fread(&bih,40,1,po);
if(bih.biBitCount!=8) return 1;
if(bih.biClrUsed==0){ cmax=256; }
else cmax=bih.biClrUsed;
*/
cputs("(c) Rex Software'99 Bmp Universal Invertor v1.0");
normvideo();
cputs("");
int n,bpp;
if (c!=2)
{
puts("\nNeeds some bmps");
return ;
}
in = fopen(a[1], "rb");
if ((out = fopen("inversed.bmp", "wb"))== NULL)
{
puts("Cannot open output file"); return ;
}
cprintf("\n");
cputs("Please wait");
for (int i=0;i<54;i++) {
int c=fgetc(in);
fputc(c,out);
if (i==28) bpp=c;}
if (bpp==8)
{
for (i=0;i<1024;i++) fputc(255-fgetc(in),out);
while (!feof(in)) fputc(fgetc(in),out);
}
if (bpp==24)
{ for (int i=0;i<54;i++) fputc(fgetc(in),out);
while (!feof(in)) fputc(255-fgetc(in),out);}
fcloseall();
printf("\n%s is %d bit-per-pixel color depth bitmap\n",a[1],bpp);
puts("Successsfully retrieved to Inversed.bmp");
}
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
1. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC> <20><><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><E0A0A6><EFBFBD><EFBFBD>.
2. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0AEA2><EFBFBD><EFBFBD> <20><EFBFBD><E5AEA4><EFBFBD><EFBFBD><><E4A0A9> (8 - 24 <20><><EFBFBD><EFBFBD>)
<EFBFBD><EFBFBD>易⥫쭮 <20><EFBFBD><E1AFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0AEA2><EFBFBD><EFBFBD>.
*/

175
Labv13.cpp Executable file
View File

@ -0,0 +1,175 @@
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A0A1><EFBFBD> 13
<09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <><E0A5A6><EFBFBD> sVGA, VESA
*/
#include <dos.h>
#include <bios.h>
#include <conio.h>
#include <stdio.h>
#define LOWORD(l) ((int)(1))
#define HIWORD(l) ((int)((l) >> 16))
#define MYMODE1 113h //800x600x32k
#define MYMODE2 101h //640x480x256
#define MYMODE3 105h //1024x768x256
int pattern_ust=1;
int current_b=0;
/* struct Vesainfo {
int attr_m;
char attr_a;
char attr_b;
int h_ust;
int size;
unsigned segm_a;
unsigned segm_b;
void far (*fun)();
int byte_str;
int resx;
int resy;
char xchsize;
char ychsize;
char kolvo;
char bit_pix;
char kolvobank;
char memmod;
char size_bank;
char pages;
char reserved;
char red_mask_s;
char red_mask_p;
char green_mask_s;
char green_mask_p;
char blue_mask_s;
char blue_mask_p;
char reserved_mask_s;
char reserved_mask_p;
char colour_info;
char reserved2[216];
}mine; */
struct SvgaModeInfo
{
unsigned state;
char a_window_state;
char b_window_state;
unsigned window_multiplicity;
unsigned window_size;
unsigned a_window_segment;
unsigned b_window_segment;
void far (*fun)();
unsigned string_width;
unsigned width;
unsigned height;
char symbol_height;
char symbol_width;
char switches_count;
char bits_per_pixel;
char banks_count;
char memory_model;
char bank_size;
char pages_count;
char reserved1;
char red_mask;
char red_bit;
char green_mask;
char green_bit;
char blue_mask;
char blue_bit;
char reserved_mask;
char reserved_bit;
char palette_state;
char lfb[10];
char resrved2[206];
}mine;
void Bank_ust(int begin)
{
if (begin==current_b)
return;
current_b=begin;
begin *= pattern_ust;
asm{
mov ax,4F05h
mov bx,0
mov dx,begin
push dx
int 10h
pop dx
mov bx,1
int 10h
};
}
inline int RGBcolour(int red,int green,int blue)
{
return ((red >> 3)<<10) | ((green >> 3)<<5) | (blue >> 3);
}
void set_text_mode()
{
asm mov ax,0x0003
asm int 0x10
}
void draw(int x,int y,int colour)
{
long ttt;
asm{
mov dx,y //bank number
shr dx,6
mov bx,0
};
mine.fun();
ttt = (y*1024%65536)+x;
_SI = (unsigned int)ttt;
asm{
mov ax,colour
mov bx,0xA000
mov es,bx
mov es:[si],al
};
}
void paint(int begx,int begy,int endx,int endy,int colour)
{
int x,y;
for(y=begy;y<=endy;y++)
for(x=begx;x<=endx;x++)
draw(x,y,colour);
}
void main()
{
int colour,x,y;
asm{
//information
mov cx,MYMODE3
lea di,mine
mov ax,ds
mov es,ax
mov ax,0x4F01
int 10h
};
asm{ //setting of this mode
mov ax,4F02h
mov bx,MYMODE3
int 10h
};
x=0;
y=0;
for(colour=1;colour<255;colour++){
if(x>1024){
x=0;
y=y+48;
}
paint(x,y,x+64,y+48,colour);
x=x+64;
}
getch();
set_text_mode();
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 1. <20><EFBFBD><EBA2A5><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E2AEAD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> 2 <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
// 2. <20><><EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><E1AFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>.
//

184
Labv14.cpp Executable file
View File

@ -0,0 +1,184 @@
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A0A1><EFBFBD> 14
<20><><EFBFBD><EAA5A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><E0A0AB><EFBFBD><EFBFBD><ECADAE> <20><EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
(<28><><EFBFBD><E2A8AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0AEA2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
*/
#include <stdio.h>
#include <conio.h>
void NullProc(void){}
void ExTime(void (*PP)(void))
{
long far* pTime = (long*)0x46C; //<2F><><EFBFBD><EFBFBD>稪 ⨪<><E2A8AA>
long Time0, Time1, Time2, i;
void (*NP)(void);
NP = NullProc;
Time0 = *pTime;
for (i = 1; i<1000000L; i++)
{
NP();
NP();
NP();
NP();
NP();
NP();
NP();
NP();
NP();
NP();
}
Time1 = *pTime;
for (i = 1; i<1000000L; i++)
{
PP();
PP();
PP();
PP();
PP();
PP();
PP();
PP();
PP();
PP();
}
Time2 = *pTime;
Time2 = (((Time2 - Time1) - (Time1 - Time0))*(6553500L/1193180L));
printf("%ld <20><>\n",Time2);
}
void P1(void) //ॣ<><E0A5A3><EFBFBD><EFBFBD><E0AEA2> <20><><EFBFBD><EFBFBD><EFBFBD><E1A8AC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
asm{
mov ax,bx
mov dx,ax
stc
adc bx,cx
stc
sbb dx,ax
add ax,bx
mov cx,ax
sub dx,bx
mov bx,dx
}
}
void P2(void) //ॣ<><E0A5A3><EFBFBD><EFBFBD><E0AEA2> <20><><EFBFBD><EFBFBD><EFBFBD><E1A8AC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E0A0AD><EFBFBD>
{
asm{
}
}
void P3(void) //<2F><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ᯠ७<E1AFA0><E0A5AD><EFBFBD><EFBFBD><EFBFBD>
{
asm{
mov cl,3 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A2A5><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
inc bx
mov cl,3
dec bx
mov cl,3
inc bx
mov cl,3
dec bx
inc bx //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E1A4A2><EFBFBD> <20> cl <20> <20><><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD>
ror ax,cl
dec bx
rol ax,cl
inc dx //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>䨪ᠬ<E4A8AA> <20>. <20>. <20> U - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mov ax,ds:[bx]
mov ax,ss:[bx]
mov ax,es:[bx]
mov ax,cs:[bx]
mov cl,3
mov cl,3
mov cl,3
dec dx
inc dx //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E1A4A2><EFBFBD> <20>. <20>. <20> U - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ror ax,1
rol ax,1
dec dx
}
}
void P4(void) //<2F><><EFBFBD><EFBFBD> <20><>ᯠ७<E1AFA0><E0A5AD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E0A0AD><EFBFBD>
{
asm{
}
}
void main(void)
{
clrscr();
printf("Program1 - ॣ<><E0A5A3><EFBFBD><EFBFBD><E0AEA2> <20><><EFBFBD><EFBFBD><EFBFBD><E1A8AC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
ExTime(P1);
printf("Program2 - ॣ<><E0A5A3><EFBFBD><EFBFBD><E0AEA2> <20><><EFBFBD><EFBFBD><EFBFBD><E1A8AC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E0A0AD><EFBFBD>\n");
ExTime(P2);
printf("Program3 - <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ᯠ७<E1AFA0><E0A5AD><EFBFBD><EFBFBD><EFBFBD>\n");
ExTime(P3);
printf("Program4 - <20><><EFBFBD><EFBFBD> <20><>ᯠ७<E1AFA0><E0A5AD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E0A0AD><EFBFBD>\n");
ExTime(P4);
getch();
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 1. <20><><EFBFBD><EFBFBD><E0A0AD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ᯠ७<E1AFA0><E0A5AD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
// 2. <20><><EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><E1ADA8> <20><EFBFBD> <20><EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0A0A3><EFBFBD><20>ணࠬ<E0AEA3>.
//
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Pentium <20><><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>. <20><><EFBFBD> <20><EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0A5AC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E3A4AE><EFBFBD><EFBFBD><E2A2AE><EFBFBD><EFBFBD><><E1ABA5><EFBFBD><20><EFBFBD><E1ABAE><EFBFBD><EFBFBD>:
-<2D><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFA7A0> <20><><EFBFBD><EFBFBD> <<3C><><EFBFBD><EFBFBD><EFBFBD>묨> <20> <20><><EFBFBD>᫥, <20><><EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
-<2D><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><E0AEA2> <20><><EFBFBD><EFBFBD><EFBFBD><E1A8AC><> <20><EFBFBD><E2A5AD>- <20><>᫥-
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><>᫥-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (read-after-write or write-after-wnte) ,
-<2D><> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><><EFBFBD><E0A6A0> ᬥ饭<E1ACA5><E9A5AD> (displacement) <20>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>;
-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>䨪ᠬ<E4A8AA> (<28><> <20><EFBFBD><EFBFBD><E7A5AD><EFBFBD> OF <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> JCC)
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ⮫쪮 <20> U-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
<20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><E0A0A2><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A2AB><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⭮, <20><><EFBFBD> <20><EFBFBD><EFBFBD><ECA7AE><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A5A0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><>. <20><EFBFBD><EFBFBD><E7A5AD><EFBFBD><><EFA2AB><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ALU mem, reg <20> ALU reg, mem, <20><EFBFBD><E0A5A1><20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> ⠪⮢ <20><><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᮮ⢥<E1AEAE><E2A2A5><EFBFBD><E2A2A5><EFBFBD>. <20><><EFBFBD><EFBFBD><E6A8A0><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0A8A2><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
ᯠ७<EFBFBD>:
-mov reg, reg/mem/imnl
-mov mem, reg/imm (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A5A4><EFBFBD>) ;
-alu reg, reg/mero/imm (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E4ACA5><EFBFBD><EFBFBD><EFBFBD>
- alu meln , reg/ imm <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>権) ;
- inc reg/mem (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E0A5AC><EFBFBD><EFBFBD>,
- dec reg/mem (<28><><EFBFBD><EFBFBD><E0A5AC><EFBFBD><EFBFBD>) ;
-push reg/mem (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E9A5AD>
- pop reg (<28> <20><EFBFBD><E2A5AA><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) ;
-lea reg,mem (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><><E1A5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A5A3><EFBFBD>஢) ;
-jmp/call/jcc near (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A5A4><EFBFBD> <20><><EFBFBD><E0A0A2><EFBFBD><EFBFBD><EFBFBD>) ;
-n<><6E> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) .
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E1ABAE><EFBFBD><EFBFBD> <20> <20><EFBFBD><E1ABAE><EFBFBD><EFBFBD> <20><><EFBFBD><E0A5A4> <20><><EFBFBD><E0A0A2><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>6쥤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>, <20><20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>.
<EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ᯠ७<E1AFA0> <20><><><E1ABA5><EFBFBD><20><><EFBFBD><E1ABA5><EFBFBD><EFBFBD>⥫쭮<E2A5AB> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SHIFT/ROT <20><><><E1A4A2><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><><E0A0A7><EFBFBD> <20> SHIFT <20><> <20><EFBFBD><E0AEA8><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>᫮ ࠧ<><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> ᯠਢ<E1AFA0><E0A8A2><EFBFBD><EFBFBD><EFBFBD> ⮫쪮 <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ( <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>).
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0AEA2> <20><><EFBFBD><EFBFBD><EFBFBD><E1A8AC><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0AEA2> <20><><EFBFBD><EFBFBD><EFBFBD><E1A8AC><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>騥 ᯠਢ<E1AFA0><E0A8A2><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E1A8AC><EFBFBD><EFBFBD> <20><>१ ॣ<><E0A5A3><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><><E4ABA0>, <20><><><E3AAA0><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E1A8AC><20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0AEA2><EFBFBD> <20><>
<EFBFBD> <20><><EFBFBD><EFBFBD>樠権: RAR - "<22><EFBFBD><E2A5AD> <20><><20><EFBFBD><E2A5AD>", WAR - "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><20><EFBFBD><E2A5AD>" <20>
WAW - "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", RAW - "<22><EFBFBD><E2A5AD> <20><><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>". <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E0A0AD><EFBFBD>. RAR, <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>,
ᮮ⢥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E1A8AC>⥩, <20><><EFBFBD><E1AAAE><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><20><><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E7A5AD>. <20><><EFBFBD><EFBFBD>⢨⥫쭮<E2A5AB> <20><><EFBFBD><EFBFBD><EFBFBD><E1A8AC><EFBFBD><EFBFBD><EFBFBD><><EFA2AB><EFBFBD><EFBFBD><EFBFBD>
⮫쪮 "<22><EFBFBD><E2A5AD> <20><><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" (RAW), ⠪ <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E5AEA4><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⥫쭮 <20><><EFBFBD><EFBFBD><EFBFBD><E1A0AD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
<20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E1A8AC><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFA2AB><EFBFBD><EFBFBD><EFBFBD> <20><><E0A5A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
<EFBFBD><EFBFBD><EFBFBD>" (WAR) <20> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" (WAW). <20><><EFBFBD><EFBFBD><EFBFBD><E1A8AC><EFBFBD><EFBFBD> WAR <20><><EFBFBD><EFBFBD> <20>
⮬, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E7A5AD> <20> <20><EFBFBD><E7A5A9> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><><E0A5A3><EFBFBD><EFBFBD>,
<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD><E0AEA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E2A5AD>. <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E1A8AC><EFBFBD><EFBFBD> <20><><EFBFBD><EFA2AB><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E7A8AD>: <20><> <20><><EFBFBD><E2A8AC><EFBFBD><EFBFBD><E0AEA2><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC><EFBFBD><EFBFBD> <20><><EFBFBD>, <20><><EFBFBD><EFBFBD><E7A5AD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⢠ ॣ<><E0A5A3><EFBFBD>஢, <20><><EFBFBD><E0A5AC><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><20>ணࠬ<E0AEA3><E0A0AC><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>.
*/

256
Labv15.cpp Executable file
View File

@ -0,0 +1,256 @@
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A0A1><EFBFBD> 15
Saund Blaster
FM ᨭ⥧
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
1. <20><EFBFBD><EFBFBD><E0A0A9> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><EFBFBD><EBA7AE><EFBFBD><EFBFBD><><E1AFA5><EFBFBD><EFBFBD><E4A5AA>
2. <20><><EFBFBD><EFBFBD><E0A0A9> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
#include <stdio.h>
#include <dos.h>
#include <conio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#define KEYON 0x20 // key-on bit in regs b0 - b8
#define FM 8 // SB (mono) ports (e.g. 228H and 229H)
unsigned IOport=544; // Sound Blaster port address
void mydelay(unsigned long clocks)
// time = clocks / 2386360
{
unsigned long elapsed=0;
unsigned int last,next,ncopy,diff;
/* Read the counter value. */
outp(0x43,0); /* want to read timer 0 */
last=inp(0x40); /* low byte */
last=~((inp(0x40)<< 8) + last); /* high byte */
do {
/* Read the counter value. */
outp(0x43,0); /* want to read timer 0 */
next=inp(0x40); /* low byte */
ncopy=next=~((inp(0x40)<< 8) + next); /* high byte */
next-=last; /* this is now number of elapsed clock pulses since last read */
elapsed += next; /* add to total elapsed clock pulses */
last=ncopy;
} while (elapsed<clocks);
}
void FMoutput(unsigned port, int reg, int val)
/* This outputs a value to a specified FM register at a specified FM port. */
{
outp(port, reg);
mydelay(8); /* need to wait 3.3 microsec */
outp(port+1, val);
mydelay(55); /* need to wait 23 microsec */
}
void fm(int reg, int val)
/* This function outputs a value to a specified FM register at the Sound
* Blaster (mono) port address.
*/
{
FMoutput(IOport+FM, reg, val);
}
void outdsp (unsigned char ch)
{
while (inportb(0x022C)&0x80);
outportb(0x022C,ch);
}
void midimain(void)
{
int i,val1,val2;
int block,b,m,f,fn;
clrscr();
printf("Program compiled for Sound Blaster 1.0 - 2.0 .\n");
fm(1,0); /* must initialize this to zero */
fm(0xC0,1); /* parallel connection */
/***************************************
* Set parameters for the carrier cell *
***************************************/
fm(0x23,0x21); /* no amplitude modulation (D7=0), no vibrato (D6=0),
* sustained envelope type (D5=1), KSR=0 (D4=0),
* frequency multiplier=1 (D4-D0=1)
*/
fm(0x43,0x0); /* no volume decrease with pitch (D7-D6=0),
* no attenuation (D5-D0=0)
*/
fm(0x63,0xff); /* fast attack (D7-D4=0xF) and decay (D3-D0=0xF) */
fm(0x83,0x05); /* high sustain level (D7-D4=0), slow release rate (D3-D0=5) */
/*****************************************
* Set parameters for the modulator cell *
*****************************************/
fm(0x20,0x20); /* sustained envelope type, frequency multiplier=0 */
fm(0x40,0x3f); /* maximum attenuation, no volume decrease with pitch */
/* Since the modulator signal is attenuated as much as possible, these
* next two values shouldn't have any effect.
*/
fm(0x60,0x44); /* slow attack and decay */
fm(0x80,0x05); /* high sustain level, slow release rate */
/*************************************************
* Generate tone from values looked up in table. *
*************************************************/
printf("440 Hz tone, values looked up in table.\n");
fm(0xa0,0x41); /* 440 Hz */
fm(0x20,0x40);
fm(0xb0,0x32); /* 440 Hz, block 0, key on */
getche();
fm(0xb0,0x12); /* key off */
/*********************************************************
* Generate a range of octaves by changing block number. *
*********************************************************/
printf("Range of frequencies created by changing block number.\n");
for (block=0; block<=7; block++) {
printf("f=%5ld Hz (press Enter)\n",(long)440*(1 << block)/16);
fm(0xB0,((fn >> 8) & 0x3) + (block << 2) | KEYON);
getche();
}
/*****************************************************************
* Generate a range of frequencies by changing frequency number. *
*****************************************************************/
printf("Range of frequencies created by changing frequency number.\n");
block=4;
for (fn=0; fn<1024; fn++) {
fm(0xA0,(fn & 0xFF));
fm(0xB0,((fn >> 8) & 0x3) + (block << 2) | KEYON);
delay(1);
}
/*********************************
* Attenuate the signal by 3 dB. *
*********************************/
getche();
fm(0xB0,((fn >> 8) & 0x3) + (block << 2) | KEYON);
printf("Attenuated by 3 dB.\n");
fm(0x43,4); /* attenuate by 3 dB */
getche();
fm(0xB0,((fn >> 8) & 0x3) + (block << 2));
exit(0);
}
unsigned int x;
FILE *fp;
char buf,key;
unsigned long playtime,showtime;
unsigned char gstring[80];
int main ( int argc, char *argv[] )
{
//----------------
// Initialize DSP for Voice
//-------------
outportb(0x0226,0x01);
delay(3);
outportb(0x0226,0x00);
for(x=0;x<100;x++)
{
if(inportb(0x022E)&0x80)
{
if(inportb(0x022A)==0xAA) break;
}
}
if(x==100)
{
printf("Sound Blaster not found at 0220h\n");
exit(1);
}
//------------
// Menu
//-----------------
clrscr();
printf("1) Play original\n2) Play reduced\n3) FM Synth\n4) Exit\n");
key=getch();
if (key=='4') exit(0);
if (key=='3') midimain();
//------------
// Read file & play
//-----------------
clrscr();
printf("Program compiled for Sound Blaster ver. 1.0 (8bit 44100Hz mono).\n\n");
if (key=='1') printf("Normal play.\n");
if (key=='2') printf("Reduced play.\n");
printf("Playing .wav ...\n\n");
if(argc==1)
{
printf(".WAV file not specified\n");
exit(1);
}
strcpy(gstring,argv[1]);
strcat(gstring,".WAV");
if((fp=fopen(gstring,"rb"))==0)
{
strcpy(gstring,argv[1]);
if((fp=fopen(gstring,"rb"))==0)
{
printf("Error opening .WAV file [%s]\n",argv[1]);
exit(1);
}
}
printf("FILE: [%s]\n",gstring);
fseek(fp,36L,SEEK_SET);
while (inportb(0x022C)&0x80);
outdsp(0xD1); //speaker on
playtime=0;
while (fread(&buf,1,1,fp)!=0)
{
if(key=='2') fread(&buf,1,1,fp);
if(key=='2') mydelay(15);
if(key=='2') playtime++;
if(key=='2') showtime=playtime/100000;
if(key=='2') if (showtime*100000== playtime) printf("Time: %u \r",showtime);
outdsp(0x10);
outdsp(buf);
mydelay(15);
playtime++;
showtime=playtime/100000;
if (showtime*100000== playtime) printf("Time: %u r",showtime);
}
outdsp(0xD3); //speaker off
fclose(fp);
return 0;
};

289
Labv2.cpp Executable file
View File

@ -0,0 +1,289 @@
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC> <20><><EFBFBD> <20><><EFBFBD><><E0A0A1><EFBFBD> LAB2
// <20><><EFBFBD><EFBFBD><E7A5AD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#include <stdio.h>
#include <conio.h>
int main (void)
{ int aa;
clrscr();
/*
********************************************************
1 2 3 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>騥 ࠡ<><E0A0A1><EFBFBD><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
1. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> JL.
JL metka.
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A2AB><EFBFBD> <20><><EFBFBD><EFBFBD><20><><><E3AAA0><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>,
<20>᫨ १<><E0A5A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0A5A4><EFBFBD><EFBFBD> <20><EFBFBD><E0A0A2><EFBFBD><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
(<28><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A2AB><EFBFBD><EFBFBD><EFBFBD>, <20>᫨ 䫠<><E4ABA0> SF=0 <20> OF =0)
asm {
cmp ax, 13
JL metka
..... ; <20><><EFBFBD><EFBFBD><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
metka:
...... ; <20><><EFBFBD><EFBFBD><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
};
2. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ROL
Rol ax, 1
Rol bx, cl
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E6A8AA><EFBFBD><EFBFBD><EFBFBD><E1AAAE><><E1A4A2><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.
<20><20><><EFBFBD><20><><EFBFBD><EFBFBD> - CL, <20><> <20><>᫮ ࠧ<><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A2AB><EFBFBD><EFBFBD><EFBFBD><><E1A4A2>, <20><><EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><EFBFBD><E0A6A8><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD> CL.
3. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> LEA.
<20><> <20><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E0A0AD> <20><><EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD> <20><><E0A5A3><EFBFBD><EFBFBD>
<20><><EFBFBD><E0A2AE> <20><><EFBFBD><EFBFBD><E0A0AD>.
lea ax, a;
4. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> NOP
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
5. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> AND
and ax,bx
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1AAAE><><E3ACAD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><><E3ACAD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EEADAA><EFBFBD>) <20><> <20><><EFBFBD>
<><E0A5A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
/*
********************************************************
4 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC> <20><> <20><><EFBFBD><E0AEAA><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MOVS.
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>.
<20><><EFBFBD><EFBFBD><E0A0A2><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E7A5AD><EFBFBD><><E4ABA0> DF - 䫠<><E4ABA0> <20><><EFBFBD><EFBFBD><E0A0A2><EFBFBD><EFBFBD><EFBFBD>.
<20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><20> <20><><EFBFBD><EFBFBD> - MOVSB
<20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><20><><><E1ABAE><EFBFBD><EFBFBD> - MOVSW
<20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E0A0AD><EFBFBD>. <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><><E4ABA0>.
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBABA0> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3A5AC><><E0A5A3><EFBFBD>஬ SI - sourse
<20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3A5AC><><E0A5A3><EFBFBD>஬ DI - destination.
*/
// <20><><EFBFBD><EFBFBD> <20><EFBFBD><E0A8A2><EFBFBD><EFBFBD> <20><EFBFBD><E0A8AC> <20>ணࠬ<E0AEA3><E0A0AC>
int A[10]={2,1,2,3,4,5,6,7,8,9};
int B[10]={1,1,0,0,0,0,0,0,0,0};
asm {
cld //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBA2A0><> <20><><EFBFBD><EFBFBD><E0A0A2><EFBFBD><EFBFBD><EFBFBD>
lea si,A
lea di,B
// mov dx,di
};
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><><EFBFBD><E1AFA5><EFBFBD><E2A0A9> <20><><EFBFBD><EFBFBD><E7A5AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A5A3><EFBFBD>
// <20><> <20><><EFBFBD><E0A5A4><EFBFBD>
// printf ("\n <20><><EFBFBD><EFBFBD><E7A5AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A5A3><EFBFBD>஢ is, di = %x %x ", _SI, _DI);
asm mov cx,1 ; // ????
asm movsb ; // ?????
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><><EFBFBD><E1AFA5><EFBFBD><E2A0A9> <20><><EFBFBD><EFBFBD><E7A5AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A5A3><EFBFBD>
// <20><><20><><EFBFBD><E0A5A4><EFBFBD> <20><><EFBFBD><E0A5A4><EFBFBD> <20><><EFBFBD>諠? <20><><EFBFBD><EFBFBD>쪮 ᫮<> <20><><EFBFBD><E0A5A4><EFBFBD>?
printf ("\n <20><><EFBFBD><EFBFBD><E7A5AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A5A3><EFBFBD>஢ is, di = %x %x ", _SI, _DI);
printf ("\n <20><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><20><><EFBFBD><E0AEAA><EFBFBD><EFBFBD> <20><><EFBFBD><E0A5A4><EFBFBD>");
for (int i=0; i<10; i++)
{
printf (" \n %d ", B[i]);
}
getch();
//********************************************************
// 5 <20>ணࠬ<E0AEA3><E0A0AC> <20><><EFBFBD><20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E1A8AC><EFBFBD><EFBFBD>
printf (" \n <20><><EFBFBD><EFBFBD><EFBFBD><><E1A8AC><EFBFBD><EFBFBD> ");
/* asm
asm
e1: asm {
mov ax, 0xb800
mov es, ax
mov
cmp es:[di],al
jnz e2 };
printf (" \n <20><>諨 ᨬ<><E1A8AC><EFBFBD> ");
e2: asm add di, 2
asm loop e1
printf (" \n <20><> <20><>諨 ᨬ<><E1A8AC><EFBFBD> ");
getch();
*/
// return (0);
//***************** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ******************
//
// 1 <20><EFBFBD><E0AEA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC><EFBFBD><EFBFBD><><E3AAA0><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 2 <20><><EFBFBD><EFBFBD><E1ACAE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 3 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E2A0A1><EFBFBD><EFBFBD>, <20><EFBFBD><E1AFAE><EFBFBD><EFBFBD><EFBFBD> TD. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A2AE><EFBFBD><EFBFBD>
// <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><E0ACA0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
/*
<09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><E2A1A0> <20><><EFBFBD><EFBFBD><E9A5AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E><><EFBFBD><EFBFBD>
<20> <20> <20> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20> <20> <20>
<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><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ
<20> 1 <20>and ax,bx <20> - <20> <20> <20> - <20> - <20>
<20> 2 <20>rep and bx,ax<61> <20> <20> <20> <20> <20>
<20> 3 <20>add ax,16 <20> - <20> <20> <20> - <20> <20>
4 add al,[bx+si]
*/
// 4. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC> <20><> <20><><EFBFBD><E0AEAA><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> 10 <20><><EFBFBD><E0A5A4><EFBFBD><EFBFBD>
// 5. <20><><EFBFBD><EFBFBD><EFBFBD><E2A0A9> <20><><EFBFBD><EFBFBD>-<2D><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC>
// <20><><EFBFBD>᪠ ᨬ<><E1A8AC><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4-<2D> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0A0AD><EFBFBD><EFBFBD>
// 6. <20><EFBFBD><E2A2A5><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0A0AD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 00FF.
// <20><><EFBFBD> <20><EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> LDS BX,PtriA
/*
<20>_<EFBFBD><5F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> i8086
<20>ணࠬ<E0AEA3><E0A0AC><EFBFBD><EFBFBD><EFBFBD> <20><> <20><EFBFBD><E0AEA2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0ADA0><EFBFBD><EFBFBD><EFBFBD><><E0A5A3><EFBFBD>-
஢. <20><><><E3A4AE><EFBFBD><><E0A0A7><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>: 1)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 2)<29><>-
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 3)ᥣ<><E1A5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4)㪠<><E3AAA0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><E0A5A3><EFBFBD><EFBFBD><><E4ABA0><EFBFBD><EFBFBD>(<28><EFBFBD><E0A8A7>-
<EFBFBD><EFBFBD><EFBFBD>).
1) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EBA2A0><><E0A5A3><EFBFBD><EFBFBD> <20><><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7A5AD>). <20><><EFBFBD><EFBFBD><E0A0AD> <20> <20><><EFBFBD><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><><E1ABAE><20>
<20><><EFBFBD><EFBFBD><EFBFBD>. <20><20><><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><><E3AAA0><EFBFBD><EFBFBD> <20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<><E0A5A3><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>㭪樨 <20><EFBFBD><E2A4A5><EFBFBD><EFBFBD><EFBFBD><><E0A5A3><EFBFBD>
ᯥ樠<E1AFA5><E6A8A0><EFBFBD><EFBFBD><EFBFBD><E0AEA2><EFBFBD> (<28><>.⠡<>.)
2) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD>, <20><EFBFBD><E1AFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
<20><EFBFBD><E0A0AD><EFBFBD><EFBFBD> 16-ࠧ<><EFBFBD><EFA4AD> <20><><EFBFBD><EFBFBD>ᮢ). <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<><E2A0AA> ᯥ樠<E1AFA5><E6A8A0><EFBFBD><EFBFBD><EFBFBD><E0AEA2><EFBFBD> (<28><>.⠡<>.)
3) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD> (㪠<><EFBFBD><EBA2A0> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E1A5A3><EFBFBD>⮢ - <20><><EFBFBD><EFBFBD><EFBFBD>
<20><> 64 <20> <20><><EFBFBD><EFBFBD> <20> 1<> <20><><EFBFBD>: ᥣ<><E1A5A3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CS, ᥣ<><E1A5A3><EFBFBD><EFBFBD> <20><EFBFBD> SS <20> <20><><EFBFBD>
<><E1A5A3><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - DS <20> ES extra)
4) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><E0A5A3><EFBFBD><EFBFBD><><E4ABA0><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><E6A8A0><EFBFBD><EFBFBD><EFBFBD> <20>㭪樨 ॣ<><E0A5A3><EFBFBD>஢ 8086
AX <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>-<2D><EFBFBD><>
AL <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><>) <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>-<2D><EFBFBD> <20><><EFBFBD>
AH <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><>) <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
BX <20><><EFBFBD><EFBFBD> <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A5A3><EFBFBD><EFBFBD>, <20><EFBFBD><EFBFBD><E0A0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (?)
CX <20><><EFBFBD><EFBFBD><09><><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><E7AAA0>, 横<><E6A8AA>
CL <20><><EFBFBD><EFBFBD>稪 (<28><>) <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E1A4A2><EFBFBD> <20> <20><><EFBFBD><EFBFBD>
DX <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><>,
<09><><EFBFBD><E1A2A5><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>-<2D><EFBFBD>
SP <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> <09><EFBFBD><E2A5AA><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
BP <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A5A3><EFBFBD><EFBFBD>
SI <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E7ADA8> <09><><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><E7AAA0>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A5A3><EFBFBD><EFBFBD>
DI <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <09><><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><E7AAA0>,
<20>_<EFBFBD><5F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E4ABA0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
<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>Ĵ
OF DF IF TF SF ZF AF PF CF
CF ( Carry Flag ) - 䫠<> <20><><EFBFBD><E0A5AD><EFBFBD>;
PF ( Parity Flag ) - 䫠<> <20><><EFBFBD><E2ADAE><EFBFBD>;
AF ( Auxiliary Carry Flag ) - 䫠<> <20><EFBFBD><E1AFAE><EFBFBD><EFBFBD>⥫쭮<E2A5AB><ECADAE> <20><><EFBFBD><E0A5AD><EFBFBD>;
ZF ( Zero Flag ) - 䫠<> <20><><EFBFBD><EFBFBD>;
SF ( Sign Flag ) - 䫠<> <20><><EFBFBD><EFBFBD><EFBFBD>;
TF ( Trap Flag ) - 䫠<> <20><><EFBFBD><EFBFBD>誨;
IF ( Interrupt-Enable Flag ) - 䫠<><><E0A0A7><EFBFBD><E8A5AD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD>;
DF ( Direction Flag ) - 䫠<> <20><><EFBFBD><EFBFBD><E0A0A2><EFBFBD><EFBFBD><EFBFBD>;
OF ( Overflow Flag ) - 䫠<> <20><><EFBFBD><E0A5AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
- 5 -
<20>_<EFBFBD><EFBFBD><E0A3A0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3A5AC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⢮) <20><EFBFBD><EFBFBD><E2A0A2><EFBFBD><EFBFBD><><E1AEA1>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 1<> <20><><EFBFBD><EFBFBD>(<28><><EFBFBD> <><E0A5A6><EFBFBD><><E0A0A1><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><E0AEAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
i80286 <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>). <20><><EFBFBD><><E1ACA5><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A0A7><EFBFBD><><E1ABAE>. <20><><EFBFBD><EFBFBD>ᮬ ᫮<><E1ABAE>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>. <20><> 8086 <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0> <20><><EFBFBD><EFBFBD><EFBFBD><E0ACA0><EFBFBD> <20><>
<EFBFBD><EFBFBD><EFBFBD> 16 <20><><EFBFBD>.᫮<><E1ABAE><EFBFBD><EFBFBD>, <20><><EFBFBD><E7A8AD><EFBFBD><E9A8AC><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ᮢ, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><><E1ABAE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><E1AFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> <20> <20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> 20 <20><><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>-
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><E0A5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> 16 <20><><EFBFBD>. <20><><EFBFBD> <20><>ନ-
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E4A8A7><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><20><EFBFBD><E1AFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E5A0AD><EFBFBD><><E1A5A3><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD>-
<EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1 <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>१ 4 "<22><><EFBFBD><EFBFBD>"
(ᥣ<><E1A5A3><EFBFBD><EFBFBD><EFBFBD>) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A0A7>஬ 64 <20> <20><><EFBFBD><EFBFBD>. <20><><EFBFBD><E7A0AB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᥣ-
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><EFBFBD><E0A6A8><EFBFBD> <20> <20><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E1A5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A5A3><EFBFBD>஢. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><20><><E1ABAE><EFBFBD> <20> <20><EFBFBD><E0A5A4><EFBFBD><EFBFBD><><E1A5A3><EFBFBD>⮢, <20><EFBFBD><E1AFAE><EFBFBD><EFBFBD><EFBFBD> <20>⭮-
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1A5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) <20><><EFBFBD><EFBFBD><EFBFBD>.
<20>_<EFBFBD><5F><20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E1ABA5><EFBFBD>騩:
[<5B><><EFBFBD><EFBFBD>] <20><><EFBFBD> [<5B><><EFBFBD><EFBFBD><E2A1A0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>樨] [ᬥ饭<E1ACA5><E9A5AD>] [<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E><><EFBFBD><EFBFBD>]
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E1AAAE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A2AE><EFBFBD><EFBFBD>.
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7A5AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
<EFBFBD>_<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.. <20><><EFBFBD><EFBFBD><EFBFBD> 1 <20><><EFBFBD><EFBFBD>.
<20>)<29><><EFBFBD><EFBFBD> <20><><EFBFBD><E0A5AD><EFBFBD><EFBFBD><EFBFBD><E7A5AD><><E1A5A3><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A5AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E1A5A3><EFBFBD><EFBFBD>
<20><><EFBFBD>, <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><EFBFBD><E5AEA4> <20><><EFBFBD><EFBFBD><EFBFBD><E9A5AD>.<2E><20><><EFBFBD><EFBFBD> <20><><EFBFBD><E0A5AD><EFBFBD><EFBFBD><EFBFBD><E7A5AD>
<><E1A5A3><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, ᥣ<><E1A5A3><EFBFBD><EFBFBD> <20>롨ࠥ<EBA1A8><E0A0A5><EFBFBD> <20><><><EFBFBD><E7A0AD>.
<20>)<29><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0A5AD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><E0AEAA><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>_<EFBFBD><EFBFBD><EFBFBD><EFBFBD>. - <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>樨. <20><><EFBFBD><EFBFBD><EFBFBD> 1 <20><><EFBFBD><EFBFBD>. 0-<2D> <20><><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><> <20><> <20><> <20><><EFBFBD><EFBFBD>)
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBA2A0>, <20><EFBFBD><E0AEA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><><E1ABAE><EFBFBD> ( =1) <20><><EFBFBD> <20>
<20><><EFBFBD>⮬ ( =0). 1-<2D> <20><><EFBFBD> <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD><E5A0A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><EFBFBD><EBA2A0>, <20><><EFBFBD><EFBFBD><EFBFBD>
<20><> <20><><EFBFBD><EFBFBD><E0A0AD><EFBFBD><><EFA2AB><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0A8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
<EFBFBD>_<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.. <20><><EFBFBD><EFBFBD><EFBFBD> 1 <20><><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><E2A1A0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBA2A0>, <20><><EFBFBD>
<20><><EFBFBD><E5AEA4><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E0A0AD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><> 8086 <20>
<20><><EFBFBD><EFBFBD><EFBFBD><E0A0AD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E1A8AC><EFBFBD><EFBFBD><EFBFBD>筠. <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><E0A0AD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) <20><><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD> <20><><EFBFBD><E1AFAE><EFBFBD><EFBFBD><EFBFBD> <20><><E0A5A3><EFBFBD><EFBFBD><EFBFBD> (ॣ<><E0A5A3><EFBFBD><EFBFBD><E0AEA2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) <20><><EFBFBD> <20> <20><EFBFBD><E0AEA8><EFBFBD><EFBFBD><EFBFBD>
<20><EFBFBD><E7A5A9> <20><><EFBFBD> (<28><><EFBFBD> ᯮᮡ<E1AFAE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A2A5><EFBFBD><EFBFBD>).
<20><><EFBFBD><20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E5AEA4><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A2A5><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) <20><><EFBFBD> <20><><E0A5A3><EFBFBD><EFBFBD><EFBFBD> (ॣ<><E0A5A3><EFBFBD><EFBFBD><E0AEA2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>). <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
<20><><EFBFBD><EFBFBD><E0A0AD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E7ADA8><EFBFBD><20> <20><EFBFBD><E0A8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><> <20><EFBFBD><EFBFBD><E7A5AD><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A2A5><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>樨: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A2A5><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
⮫쪮 <20><><EFBFBD><EFBFBD><EFBFBD><E7ADA8><EFBFBD>). <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E2A1A0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>樨 ᫥<><E1ABA5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
7 6 5 4 3 2 1 0
! mod ! reg ! r/m !
!-----!-----!-----!-----!-----!-----!-----!----!
<20><><EFBFBD><EFBFBD> mod <20> r/m <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E1AFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A2AE> <20><><EFBFBD><EFBFBD><E0A0AD> (<28><><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><E2A2A5><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>). <20><><EFBFBD><EFBFBD> reg <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E0A0AD> <20> <20><><EFBFBD><EFBFBD><E5A0A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><EFBFBD><E1AFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0A5AD> <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
<09><><EFBFBD><EFBFBD><E7A5AD> <20><><EFBFBD><EFBFBD> mod:
11 - <20><><EFBFBD><EFBFBD> <20><><E0A5A3><EFBFBD><EFBFBD><EFBFBD>
(<28><><EFBFBD> <20><><EFBFBD><E2A0AB><EFBFBD><EFBFBD> mod <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD>, <20><><E0A5A3><EFBFBD><EFBFBD><EFBFBD>, <20><>
<09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><EFBFBD><EBA2A0> <20><><EFBFBD><EFBFBD> mod <20> r/m, ᮤ<><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E0A0AD>)
10 - ᬥ饭<E1ACA5><E9A5AD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>)
- 6 -
01 - ᬥ饭<E1ACA5><E9A5AD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
00 - ᬥ饭<E1ACA5><E9A5AD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><E7A5AD> <20><><EFBFBD><EFBFBD> reg <20><><E2A0AA> <20><><EFBFBD><EFBFBD> r/m <20><><EFBFBD> mod=0 (<28>.<2E>. <20><><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><E0AEA2>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>樨 ᫥<><E1ABA5><EFBFBD>騥:
reg <20><><EFBFBD> r/m <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
000 AL AX
001 CL CX
010 DL DX
011 BL BX
100 AH SP
101 CH BP
110 DH SI
111 BH DI
<20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E7A5AD> mod <20> r/m <20><><EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD> ᯮᮡ
<20><><EFBFBD><EFBFBD><EFBFBD><E1ABA5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E1ABA5><EFBFBD><20><><EFBFBD><E0A0A7>:
r/m mod=00 mod=01 <20><><EFBFBD> 10
000 BX+SI BX+SI+ᬥ饭<E1ACA5><E9A5AD>
001 BX+DI BX+DI+ᬥ饭<E1ACA5><E9A5AD>
010 BP+SI BP+DI+ᬥ饭<E1ACA5><E9A5AD>
011 BP+DI BP+DI+ᬥ饭<E1ACA5><E9A5AD>
100 SI SI+ᬥ饭<E1ACA5><E9A5AD>
101 DI DI+ᬥ饭<E1ACA5><E9A5AD>
110 direct BP+ᬥ饭<E1ACA5><E9A5AD>
111 BX BX+ᬥ饭<E1ACA5><E9A5AD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD> 1 <20><><EFBFBD><EFBFBD> (<28><><EFBFBD> mod-01) <20><><EFBFBD> 2 <20><><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD> mod=10).
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD> 1 <20><><EFBFBD> 2 <20><><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A0A7>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><EFBFBD><E0A5A4><EFBFBD><EFBFBD> <20><> 1 <20><> 7 <20><><EFBFBD>⮢.
*/
};

69
Labv3.cpp Executable file
View File

@ -0,0 +1,69 @@
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> LAB3
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC>
// <20><><EFBFBD><EFBFBD> <20> ᯮᮡ<E1AFAE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><>४⨢<E0A5AA> <20><EFBFBD><E0A5AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><E7A5AD><><E4A0A9><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>-権
// <20><><E6A5AB><><EFBFBD><E9A5AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <><E2A8AF> <20>-権 <20> <20><> <20><><EFBFBD><EFBFBD><E3ACA5><EFBFBD><EFBFBD>
#include <dos.h>
#include <bios.h>
#include <stdio.h>
#include <conio.h>
// #pragma inline // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7A5AD> <20><><EFBFBD><EFBFBD><E0AEA5><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E1A5AC><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFA2AB><EFBFBD><EFBFBD> <20><><EFBFBD><E0A5AC><EFBFBD><EFBFBD><EFBFBD>
int iB=0x1234;
int A[90]={0,1,2,3,4,5,6,7,8,9};
// <20><EFBFBD><E1ADAE><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC> - <20><EFBFBD><E3ADAA><EFBFBD>
// void - <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E7A5AD>
void main(void)
{
// <20><><EFBFBD><EFBFBD><EFA2AB><EFBFBD><EFBFBD> <20><><EFBFBD><E0A5AC><EFBFBD><EFBFBD><EFBFBD>
int iA=0x5678;
clrscr();
printf ("\n <20>ணࠬ<E0AEA3><E0A0AC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> \n");
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><20><> <20><EFBFBD><E0AEA2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
for (int i=0; i<10; i++)
{
// ??????? <20><><EFBFBD><E2A0A2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
printf (" \n %d ", A[i]);
}
getch();
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><20><> <20><><EFBFBD><E1A5AC><EFBFBD><EFBFBD><EFBFBD>
asm mov si,0
e2:
asm {
lea bx,A
mov cx,10
mov ax,0
};
e1: asm mov [bx],ax // ???? <20><EFBFBD><EBA1A5><EFBFBD><EFBFBD> ᯮᮡ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
asm add bx,2
asm loop e1
// ??? <20><EFBFBD><EBA2A5><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
asm add si,10 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD>
asm mov ax,100
asm cmp ax,si
asm ja e2
// ??? <20><EFBFBD><EBA2A5><EFBFBD><EFBFBD> <20><><EFBFBD><E3ACA5><EFBFBD><EFBFBD> <20><><EFBFBD>
for (i=0; i<20; i=i+4)
{ printf (" \n ");
for (int j=0; j<4; j++)
{ printf (" "); // ???? <20><><EFBFBD><E2A0A2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
}
getch();
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 1. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0ADAE> <20><><EFBFBD><EFBFBD> <20><> <20><> <20> <20><><EFBFBD>
// <20><EFBFBD><EBA2A5><EFBFBD><EFBFBD> <20><> <20><><20><><EFBFBD><EFBFBD><E7A5AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD>
// 2. <20><><EFBFBD><EFBFBD><E2A0A9> <20><><EFBFBD><20><><EFBFBD><E3ACA5><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>,
// <20><EFBFBD><E1AFAE><EFBFBD><EFBFBD><EFBFBD><><E0A0A7><EFBFBD> ᯮᮡ<E1AFAE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// - <20><><EFBFBD><E1A2A5><EFBFBD>-ॣ<><E0A5A3><EFBFBD><EFBFBD><E0AEA2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><EFBFBD><E0A0A2><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> ᯮᮡ<E1AFAE><E1AEA1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>樨.
// 3. <20><><EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><E1A5A3><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><EFBFBD><EFBFBD>. TD
// 4. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><><E0A0A7><EFBFBD><><E0A5A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><E0A0A7><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.

141
Labv4.cpp Executable file
View File

@ -0,0 +1,141 @@
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Lab 4
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><E0A5AD> <20><EFBFBD><E0A5AC><EFBFBD>. <20><><EFBFBD><EFBFBD>
//
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
void main()
{
long int cl2,cl1,c1,c2;
unsigned long int t1,t2,t3;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E2A0AD> <20><><EFBFBD><EFBFBD><EFBFBD>
/* asm{
mov ax,00110110B // 00 11 011 0
out 43h,ax
mov ax,0000000000000000B
out 40h,al
mov al,ah
out 40h,al
}
*/
// <20><><EFBFBD><EFBFBD><EFBFBD><E0A5AD> <20><EFBFBD><E0A5AC><EFBFBD> <20><EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E2AEA2> <20>ணࠬ<E0AEA3><E0A0AC> 1
// <20><><E2A8AA> (<28> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD><EFBFBD> <20><> 0-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E2A0A9><EFBFBD><EFBFBD>)
// <20><><EFBFBD><EFBFBD>稪 ⨪<><E2A8AA> <20><EFBFBD><E7A5A9> 46<34> - <20><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
asm{
mov ax,0x46
mov es,ax
mov bx,0xC
mov ax,[es:bx]
mov cx,[es:(bx+2)]
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>砫쭮<E7A0AB> <20><><EFBFBD><EFBFBD><E7A5AD> <20><><EFBFBD><EFBFBD><20> <20><><EFBFBD><EFBFBD>襥 ???
// cl2= ; cl1= ;
c1=cl2+cl1*0x10000;
//<2F><><EFBFBD><EFBFBD><E2AEA2> <20>ணࠬ<E0AEA3><E0A0AC> 1
asm mov cx,1000
met1: asm {
push cx
mov cx,1000
}
met2: asm {
loop met2
pop cx
loop met1
}
//
asm{
mov ax,0x46
mov es,ax
mov bx,0xC
mov ax,[es:bx]
mov cx,[es:(bx+2)]
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E7A5AD> ???
// cl2=_AX; cl1= ;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E6A5AB> -
c2=cl2+cl1*0x10000;
// clrscr();
// printf("\n<><6E><EFBFBD> - %d\n",c1);
// printf("<22><><EFBFBD>஥ - %d\n",c2);
cout<<"\n<EFBFBD><EFBFBD> <20><EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E2AEA2> <20>ணࠬ<E0AEA3><E0A0AC> 1\n";
cout<<"COUNTs: "<<c2-c1<<"\n";
printf("\n <20><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD>ᥪ㭤 ??");
getch();
// <20><><EFBFBD><EFBFBD><EFBFBD><E0A5AD> <20><EFBFBD><E0A5AC><EFBFBD> <20><EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E2AEA2> <20>ணࠬ<E0AEA3><E0A0AC>
// <20><><><EFBFBD><E0A6A8><EFBFBD><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD><><E2A0A9><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD> 43h - <20><><EFBFBD><EFBFBD> <20><><EFBFBD><E0A0A2><EFBFBD><EFBFBD><EFBFBD><><E2A0A9>
// <20><><EFBFBD><EFBFBD> 40h - <20><><EFBFBD><EFBFBD><><E2A0A9><EFBFBD><EFBFBD>
asm{
mov ax,00000110B // 00 00 011 0
out 43h,ax // <20><><EFBFBD> <20><><EFBFBD><EFBFBD>訩, <20><><20><><EFBFBD><EFBFBD>
in al,40h
// mov bl,al
in al,40h
// mov ah,al
// mov al,bl
}
t1=_AX;
//<2F><><EFBFBD><EFBFBD><E2AEA2> <20>ணࠬ<E0AEA3><E0A0AC> 2
asm mov cx,1
met11: asm {
push cx
mov cx,1000
}
met22: asm {
loop met22
pop cx
loop met11
}
asm{
mov ax,00000110B // 00 00 011 0
out 43h,ax // <20><><EFBFBD> <20><><EFBFBD><EFBFBD>訩, <20><><20><><EFBFBD><EFBFBD>
in al,40h
// mov bl,al
in al,40h
// mov ah,al
// mov al,bl
}
t2=_AX;
t3=t1; // ????
clrscr();
printf("\n<EFBFBD><EFBFBD><EFBFBD> - %d \n",t1);
printf("<EFBFBD><EFBFBD><EFBFBD>஥ - %d\n",t2);
cout<<"\n<EFBFBD><EFBFBD> <20><EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E2AEA2> <20>ணࠬ<E0AEA3><E0A0AC> 2\n";
printf("%x\n",t3);
cout<<"CLOCKs: "<<t3<<"\n";
printf("\n <20><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD>ᥪ㭤 ??");
getch();
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 1 <20><><EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0A5AC><EFBFBD><><E0A0A1><EFBFBD> <20><><EFBFBD><EFBFBD><E2AEA2> <20>ணࠬ<E0AEA3> 1 <20> 2
// 2 <20><>९ணࠬ<E0AEA3><E0A0AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E2A0A9><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><20>ண1 <20><><EFBFBD><EFBFBD><EFBFBD> <20><>
// 3 <20><><EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
//<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><E6A5A4><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><EFBFBD><E0A8A7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A0A9> <20><><EFBFBD><EFBFBD><E1A0AD> <20><EFBFBD><E0A0A9><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20>ணࠬ<E0AEA3><E0A0AC> Asmous.cpp.
void ReadMouse ()
{
asm mov ax, 0x3
asm int 0x33
asm mov MouseB, bx
asm mov MouseX, cx
asm mov MouseY, dx
}
}

68
Labv8.cpp Executable file
View File

@ -0,0 +1,68 @@
/* Labv8: Ass, and Ci functions
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC> <20><><EFBFBD><><E0A0A1><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A5AC>
<20><><EFBFBD><EFBFBD><EFBFBD><E2AEA2> <><E0A5A6>
*/
#include <dos.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <iostream.h>
void page(char a) // <20><><EFBFBD><E2A0AD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E2A8A2><EFBFBD> <20><><EFBFBD><E1AFAB><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>.
{
asm {
mov ah,0x05
mov al,a
int 0x10
}
}
void main()
{
// <20><><EFBFBD><E2A0AD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0A5A6><EFBFBD>
asm{
mov al,02h
mov ah,00h
int 10h
} page(0);
clrscr();
// <20><EFBFBD><><E2A5AA><EFBFBD> <20><EFBFBD><EFBFBD><E2A2A0> <20><>
for(char n = 1; n <= 100; n++)
// -- <20><><EFBFBD><EFBFBD><EFBFBD><20><EFBFBD> -
// <20>뮤 ⥪<><E2A5AA><EFBFBD> <20> <><E0A5A6><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0A5A4><EFBFBD><><E0A0A1><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
page(0);
asm mov cx,1000 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⢮ ᨬ<><E1A8AC><EFBFBD><EFBFBD><EFBFBD>
asm mov di,0 // <20><><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
e1: asm { add di, 2
mov ax, 0xb800 // <20><><EFBFBD><E0A5A4><20><><EFBFBD><E7A0AB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
mov es, ax
mov al, cl
mov es: [di],al // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBABA0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mov al, 4
mov es: [di+1],al // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBABA0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><20><><EFBFBD><EFBFBD>
};
asm loop e1
getch();
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 1 <20><EFBFBD><EBA2A5><EFBFBD><EFBFBD><><E2A5AA> <20> <20><EFBFBD><E1AFAE><EFBFBD> <20><>.
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 梥⮬ <20> <20><EFBFBD><EFBFBD><ECA7AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>.
// <20><><EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> <20><EFBFBD><EBA2AE> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A0A7><EFBFBD><><EFBFBD><E2AEA2> <20><><EFBFBD><E1AFAB><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A0AD><EFBFBD>.(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20>ணࠬ<E0AEA3><E0A0AC> <20><> <20><><EFBFBD> <20><EFBFBD><EBA2AE><><E1A8AC><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> <20> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E1AFAB><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A0AD><EFBFBD>)
// 3 <20><EFBFBD><EBA2A5><EFBFBD><EFBFBD><><E2A5AA> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><E0A0AD><EFBFBD>
// 4 <20><EFBFBD><E0A3A0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A5AA><EFBFBD><E7A5AD> <20><><EFBFBD><E0A0AD>
/* while (bioskey(1) == 0)
{
page(0); delay(1000);
} */
return;
}

166
MTASK.CPP Executable file
View File

@ -0,0 +1,166 @@
#include <stdio.h>
#include <dos.h>
#include <mem.h>
#include <conio.h>
struct ProcStats //struktura soderjashaya kontext zadachi
{
unsigned int rax, rbx, rcx, rdx; // 0 2 4 6
unsigned int rsi, rdi, rbp, rsp; // 8 10 12 14
unsigned int rcs, rds, res, rss; //16 18 20 22
unsigned int rip, rflags, a, b; //24 26 28 30
} Stats[3]; //massiv iz treh takih struktur
unsigned int current_proc; //nomer tekushey zadachi
unsigned int stats_offset; //adres konteksta zadachi
void interrupt (*oldHandler)(...); //ukazatel na staryi obrabotchik preryvaniya
void interrupt IntHandler(...) //svoy obrabotchik
{
asm {
mov si, [current_proc]; //nomer procedury
mov cl, 5 //umnojaem nar 32 (razmer struktury)
shl si, cl
//mov ax, offset Stats
mov ax, [stats_offset] //pribavlyaem adres nachala massiva struktur
add si, ax //poluchaem adres nujnogo konteksta
pop ax //zapisyvaem v nego registry
mov [si+12], ax //bp
pop ax
mov [si+10], ax //di
pop ax
mov [si+ 8], ax //si
pop ax
mov [si+18], ax //ds
pop ax
mov [si+20], ax //es
pop ax
mov [si+ 6], ax //dx
pop ax
mov [si+ 4], ax //cx
pop ax
mov [si+ 2], ax //bx
pop ax
mov [si+ 0], ax //ax
pop ax
mov [si+24], ax //ip
pop ax
mov [si+16], ax //cs
pop ax
mov [si+26], ax //flags
mov ax, sp
mov [si+14], ax //sp
mov ax, ss
mov [si+22], ax //ss
mov ax, [current_proc] //perehodim k sleduyushey zadache
inc ax
cmp ax, 3
jb label1
mov ax, 0
}
label1:
asm {
mov [current_proc], ax //vychislyaem adres eyo konteksta
mov si, ax
mov cl, 5
shl si, cl
//mov ax, offset Stats
mov ax, [stats_offset]
add si, ax //zagrujaem registry
mov ax, [si+22] //ss
mov ss, ax
mov ax, [si+14] //sp
mov sp, ax
mov ax, [si+26] //flags
push ax
mov ax, [si+16] //cs
push ax
mov ax, [si+24] //ip
push ax
mov ax, [si+ 0] //ax
push ax
mov ax, [si+ 2] //bx
push ax
mov ax, [si+ 4] //cx
push ax
mov ax, [si+ 6] //dx
push ax
mov ax, [si+20] //es
push ax
mov ax, [si+18] //ds
push ax
mov ax, [si+ 8] //si
push ax
mov ax, [si+10] //di
push ax
mov ax, [si+12] //bp
push ax
}
oldHandler(); //vyzyvaem staryi obrabotchik
}
void Proc1(void);
void Proc2(void);
void Proc3(void);
int main(void)
{
unsigned int i, rd, rc, re, rs, ri0, ri1, ri2, f;
for(i=0;i<3;i++)
memset(&Stats[i],0,sizeof(ProcStats));
asm { //zapisyvaem registry vo vremennye peremennye
mov ax, cs
mov [rc], ax
mov ax, ds
mov [rd], ax
mov ax, es
mov [re], ax
mov ax, ss
mov [rs], ax
mov [ri0], offset Proc1 //adresa nachala procedur
mov [ri1], offset Proc2
mov [ri2], offset Proc3
pushf
pop ax
mov [f], ax
}
for(i=0;i<3;i++) //zapisyvaem znacheniya segmentnyh registrov,
{ //flagov
Stats[i].rcs = rc; //i adresa nacha procedur
Stats[i].rds = rd; //v sootvetstvuyushye konteksty
Stats[i].res = re;
Stats[i].rss = rs;
Stats[i].rflags = f;
}
Stats[0].rip = ri0;
Stats[1].rip = ri1;
Stats[2].rip = ri2;
current_proc = 0; //tekushaya procedura - pervaya
stats_offset = (unsigned)&Stats; //adres nachala massiva
oldHandler = getvect(0x9); //perekluchaemsya po najatiyu klavishy
setvect(0x9,IntHandler);
Proc1();
setvect(0x9,oldHandler);
return 0;
}
void Proc1(void)
{
while(1)
printf("Proc1 is working %d\n",current_proc);
}
void Proc2(void)
{
while(1)
printf("Proc2 is working %d\n",current_proc);
}
void Proc3(void)
{
while(1)
printf("Proc3 is working %d\n",current_proc);
}

BIN
Opisan Executable file

Binary file not shown.

BIN
Protect/PM_INT8.9/DPMI16BI.OVL Executable file

Binary file not shown.

BIN
Protect/PM_INT8.9/DPMILOAD.EXE Executable file

Binary file not shown.

BIN
Protect/PM_INT8.9/DPMIMEM.DLL Executable file

Binary file not shown.

23
Protect/PM_INT8.9/ERRMSG Executable file
View File

@ -0,0 +1,23 @@
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC> <20><><EFBFBD><><E0A0A1><EFBFBD> <20> Protected Mode
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><> pm.asm
___________________
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> obj 䠩<><E4A0A9>...
tasm /m2 pm.asm
Turbo Assembler Version 3.1 Copyright (c) 1988, 1992 Borland International
Assembling file: pm.asm
Error messages: None
Warning messages: None
Passes: 2
Remaining memory: 411k
obj 䠩<> <20>ᯥ譮 ᮧ<><E1AEA7><EFBFBD>
___________________
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><EBA2AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><>࠭ (ECHO): <20>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> exe 䠩<><E4A0A9>...
tlink /x /3 pm.obj
Turbo Link Version 5.1 Copyright (c) 1992 Borland International
exe 䠩<> <20>ᯥ譮 ᮧ<><E1AEA7><EFBFBD>
___________________
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><20>ᯥ譮
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><> pm.exe

2
Protect/PM_INT8.9/MK.BAT Executable file
View File

@ -0,0 +1,2 @@
@del errmsg
@mk2.bat %1 errmsg

43
Protect/PM_INT8.9/MK2.BAT Executable file
View File

@ -0,0 +1,43 @@
@ECHO OFF
ECHO <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC> <20><><EFBFBD><><E0A0A1><EFBFBD> <20> Protected Mode >> %2
ECHO <20><EFBFBD><E5AEA4><EFBFBD><> %1.asm >> %2
ECHO ___________________ >> %2
ECHO <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> obj 䠩<><E4A0A9>... >> %2
ECHO tasm /m2 %1.asm >> %2
tasm /m2 %1.asm >> %2 >> %2
if errorlevel = 1 goto asmerror
ECHO obj 䠩<> <20>ᯥ譮 ᮧ<><E1AEA7><EFBFBD> >> %2
ECHO ___________________ >> %2
ECHO >> %2
ECHO <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> exe 䠩<><E4A0A9>... >> %2
ECHO tlink /x /3 %1.obj >> %2
tlink /x /3 %1.obj >> %2
if errorlevel = 1 goto exeerror
ECHO exe 䠩<> <20>ᯥ譮 ᮧ<><E1AEA7><EFBFBD> >> %2
goto okend
:exeerror
ECHO ___________________ >> %2
ECHO <20><EFBFBD><E8A8A1><><E1AEA7><EFBFBD><EFBFBD><EFBFBD> exe 䠩<><E4A0A9>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><> >> %2
ECHO %1.obj ᮧ<><E1AEA7><EFBFBD> <20> <20><EFBFBD><E8A8A1><EFBFBD><EFBFBD> >> %2
goto errorend
:asmerror
ECHO <20><EFBFBD><E8A8A1><><E1AEA7><EFBFBD><EFBFBD><EFBFBD> obj 䠩<><E4A0A9>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><E4A0A9> >> %2
ECHO %1.asm <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3A6A5> <20><EFBFBD><E8A8A1> >> %2
goto errorend
:errorend
ECHO ___________________ >> %2
ECHO <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3A6A5> <20><EFBFBD><E8A8A1>, >> %2
ECHO ᮧ<><E1AEA7><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E1AAA0><EFBFBD><EFBFBD><EFBFBD>(exe) 䠩<><E4A0A9> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. >> %2
goto end
:okend
ECHO ___________________ >> %2
ECHO <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><20>ᯥ譮 >> %2
ECHO <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><> %1.exe >> %2
:end
@type %2

1
Protect/PM_INT8.9/MKPM.BAT Executable file
View File

@ -0,0 +1 @@
@mk.bat pm

BIN
Protect/PM_INT8.9/NOSOUND.EXE Executable file

Binary file not shown.

446
Protect/PM_INT8.9/PM.ASM Executable file
View File

@ -0,0 +1,446 @@
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E3A4A5><EFBFBD> <20><><EFBFBD> 2084/3
; <20><><EFBFBD><EFBFBD><EFBFBD><E0A5AD> <20><><EFBFBD>
; <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
; <20>ணࠬ<E0AEA3><E0A0AC>, <20><EFBFBD><E0AEA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><20> Protrcted Mode,
; <20><>९ணࠬ<E0AEA3><E0A0AC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0AEAB><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> <20> <20><EFBFBD><E0AEA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><EFBFBD><E0A0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᬥ饭<E1ACA5><E9A5AD> <20><> 32-<2D> <20><><EFBFBD><E2ADAE><><E1A5A3><EFBFBD><EFBFBD><EFBFBD> <20> 16-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A5AC><EFBFBD><EFBFBD><EFBFBD>
so equ small offset
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>. <20><> <20><EFBFBD> - <20><><EFBFBD><EFBFBD><E7A5AD> <20><><EFBFBD><E0A5AC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> (<28> <20><><EFBFBD>).
delay macro time
local ext,iter
push ecx
mov ecx,time
ext: push ecx
mov cx,5000 ;<3B><><EFBFBD> <20><><EFBFBD><EFBFBD><E7A5AD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><> <20><EFBFBD><E0AEA8><EFBFBD><EFBFBD><EFBFBD>⥫쭮<E2A5AB><ECADAE><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
iter: loop iter
pop ecx
loop ext
pop ecx
endm
.386p
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Real Mode, 16 <20><><EFBFBD>
RM_seg segment para public "CODE" use16
assume cs: RM_seg, ds: PM_seg, ss: Stack_seg
start:
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
mov ax, 3
int 10h
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2AEA2><EFBFBD><><E1A5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD>
push PM_seg
pop ds
; <20><EFBFBD><E0AEA2><EFBFBD><EFBFBD><EFBFBD> <><E0A5A6> (PM <20><><EFBFBD> <20><><EFBFBD>)
mov eax, cr0
test al, 1
jz no_V86
; <20>᫨ 㦥 <20> PM - ᮮ<><E1AEAE><EFBFBD><EFBFBD><EFBFBD> <20><> <20><EFBFBD><E8A8A1> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
mov dx, so v86_msg
err_exit:
mov ah, 9
int 21h
mov ah, 4Ch
int 21h
; <20><EFBFBD><E0AEA2><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Windows
no_V86:
mov ax, 1600h
int 2Fh
test al, al
jz no_Windows
; <20><20><><EFBFBD> Wondows - ᮮ<><E1AEAE><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
mov dx, so win_msg
jmp short err_exit
; *****************************************
; <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC>
no_Windows:
; <20><><EFBFBD><EFBFBD><EFBFBD><E1ABA8> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD><E1AFAE><EFBFBD><EFBFBD><E3A5AC> <20><><EFBFBD><EFBFBD><EFBFBD><E0A8AF>஢ ᥣ<><E1A5A3><EFBFBD>
xor eax, eax
mov ax, RM_seg ; <20><><EFBFBD><EFBFBD><EFBFBD> 16bitCS <20><EFBFBD> RM_seg
shl eax, 4
mov word ptr GDT_16bitCS+2, ax ; <20><><EFBFBD><EFBFBD> 15-0
shr eax, 16
mov byte ptr GDT_16bitCS+4, al ; <20><><EFBFBD><EFBFBD> 23-16
mov ax, PM_seg
shl eax, 4
mov word ptr GDT_32bitCS+2, ax ; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 32bit* <20><EFBFBD>
mov word ptr GDT_32bitSS+2, ax ; PM_seg
mov word ptr GDT_32bitDS+2, ax
shr eax, 16
mov byte ptr GDT_32bitCS+4, al
mov byte ptr GDT_32bitSS+4, al
mov byte ptr GDT_32bitDS+4, al
; <20><><EFBFBD><EFBFBD><EFBFBD><E1ABA8> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> GDT
xor eax, eax
mov ax, PM_seg
shl eax, 4
push eax
add eax, offset GDT
mov dword ptr gdtr+2, eax
; <20><><EFBFBD><EFBFBD><EFBFBD><E3A7A8> GDT
lgdt fword ptr gdtr
; <20><><EFBFBD><EFBFBD><EFBFBD><E1ABA8> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> IDT
pop eax
add eax, offset IDT
mov dword ptr idtr+2, eax
; <20><><EFBFBD><EFBFBD><EFBFBD><E3A7A8> IDT
lidt fword ptr idtr
; <20>.<2E>. ᮡ<><EFBFBD><E0A0A5><EFBFBD><><E0A0A1><EFBFBD><EFBFBD><EFBFBD> <20> 32-<2D> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> A20
in al, 70h
or al, 2
out 92h, al
; <20><EFBFBD><E2AAAB><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD>
cli
; <20><EFBFBD><E2AAAB><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3A5AC> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> (NMI)
in al, 70h
or al, 80h
out 70h, al
; <20><><EFBFBD><E0A5A9> <20> <20><><EFBFBD><EFBFBD><EFBFBD><E9A5AD><EFBFBD> <><E0A5A6>
mov eax, cr0
or al, 1
mov cr0, eax
; <20><><EFBFBD><EFBFBD><EFBFBD><E3A7A8> SEL_32bitCS <20> CS
db 66h ; <20><><EFBFBD><EFBFBD> <20><EFBFBD><EFBFBD><E0A0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><EFBFBD><EFA4AD><EFBFBD><EFBFBD>
db 0EAh ; <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
dd offset PM_entry
dw Sel_32bitCS
RM_return:
; <20><><EFBFBD><E0A5A9> <20> Real Mode
mov eax, cr0
and al, 0FEh
mov cr0, eax
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><E3A7A8> CS ॠ<><E0A5A0><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
db 0EAh
dw $+4
dw RM_seg
; <20><><EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><><E0A0A1><EFBFBD> <20><><EFBFBD> <><E0A5A6><EFBFBD>
mov ax, PM_seg
mov ds, ax
mov es, ax
mov ax, Stack_seg
mov bx, stack_l
mov ss, ax
mov sp, bx
; <20><><EFBFBD><EFBFBD><EFBFBD><E3A7A8> IDTR <20><><EFBFBD> RM
mov ax, PM_seg
mov ds, ax
lidt fword ptr idtr_real
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> NMI
in al, 70h
and al, 07Fh
out 70h, al
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD>
sti
; <20> <20><><EFBFBD><EFBFBD><EFBFBD>
mov ah, 4Ch
int 21h
RM_seg ends
; 32-<2D> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E1A5A3><EFBFBD><EFBFBD>
PM_seg segment para "CODE" use32
assume cs: PM_seg
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> GDT <20> IDT <20>.<2E>. <20><><EFBFBD><E0AEA2><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><><E0A0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><><E1A5A3><EFBFBD><EFBFBD><EFBFBD>
GDT label byte
db 8 dup(0)
; 32-x <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4-<2D> <20><><><E1A5A3><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> =0
GTD_flatDS db 0FFh,0FFh,0,0,0,10010010b,11001111b,0
; 16-<2D> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 64-<2D> <20><><><E1A5A3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> RM_seg
GDT_16bitCS db 0FFh,0FFh,0,0,0,10011010b,0,0
; 32-x <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4-<2D> <20><><><E1A5A3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> PM_seg
GDT_32bitCS db 0FFh,0FFh,0,0,0,10011010b,11001111b,0
; 32-x <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4-<2D> <20><><><E1A5A3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> PM_seg
GDT_32bitDS db 0FFh,0FFh,0,0,0,10010010b,11001111b,0
; 32-x <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4-<2D> <20><><><E1A5A3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> Stack_seg
GDT_32bitSS db 0FFh,0FFh,0,0,0,10010010b,11001111b,0
gdt_size = $-GDT
gdtr dw gdt_size-1 ; <20><EFBFBD><E0A5A4> GDT
dd ? ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> GDT
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E1A5AB><EFBFBD><EFBFBD>
SEL_flatDS equ 001000b
SEL_16bitCS equ 010000b
SEL_32bitCS equ 011000b
SEL_32bitDS equ 100000b
SEL_32bitSS equ 101000b
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0A8AF><20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> IDT
IDT label byte
; <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0A8AF><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> 0Eh - 32-<2D> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD>
; INT 00-07
dw 8 dup(so int_handler, SEL_32bitCS, 8E00h,0)
; INT 08(irq0)
; dw so irq0_7_handler,SEL_32bitCS,8E00h,0
dw so timer_handler,SEL_32bitCS,8E00h,0
; INT 09(irq1)
dw so irq1_handler,SEL_32bitCS,8E00h,0
; INT 0Ah-0Fh (IRQ2-IRQ8)
dw 6 dup(so irq0_7_handler,SEL_32bitCS,8E00h,0)
; INT 10h-6Fh
dw 97 dup(so int_handler,SEL_32bitCS,8E00h,0)
; INT 70h-78h (IRQ8-IRQ15)
dw 8 dup(so irq8_15_handler,SEL_32bitCS,8E00h,0)
; INT 79h-FFh
dw 135 dup(so int_handler,SEL_32bitCS,8E00h,0)
idt_size = $-IDT
idtr dw idt_size-1 ; <20><EFBFBD><E0A5A4> IDT
dd ? ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> IDT
; <20><><EFBFBD><EFBFBD><EFBFBD><E0A6A8><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD> IDTR <20><><EFBFBD> <><E0A5A6><EFBFBD>
idtr_real dw 3FFh,0,0
; <20><><EFBFBD><EFBFBD><EFBFBD><E9A5AD> <20><> <20><EFBFBD><E8A8A1><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
v86_msg db "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <><E0A5A6><EFBFBD> v86 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A5AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> PM$"
win_msg db "<22>ணࠬ<E0AEA3><E0A0AC> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> Windows$"
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><E0A5A2><EFBFBD> OE ᪠<>-<2D><><EFBFBD><EFBFBD><EFBFBD> <20> ASCII
scan2ascii db 0,1Bh,'1','2','3','4','5','6','7','8','9','0','-','=',8
db 0,'Q','W','E','R','T','Y','U','I','O','P','[',']',0
DB 0,'A','S','D','F','G','H','J','K','L',';',27h,'`',0 ; LShift
db '\','Z','X','C','V','B','N','M',',','.','/',0 ; RShift
db '0','0',' ' ; SP
screen_addr dd 0 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>
N dd 64 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> MUS
NM dd 1 ; <20><><EFBFBD><EFBFBD><20><><EFBFBD>⥫쭮<E2A5AB><ECADAE><EFBFBD>
; <20><><EFBFBD><20><><EFBFBD> <20><><EFBFBD><EFBFBD><E7A0AD>: 1-<2D> <20><>᫮ - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 2-<2D> - <20><><EFBFBD>⥫쭮<E2A5AB><ECADAE><EFBFBD>
MUS dw 1218,10, 767,10, 813,10, 912,10, 966,10, 912,30
dw 1218,10, 609,10, 678,10, 767,10, 813,10, 767,30
dw 912,10, 574,15, 609,5, 678,15, 767,5, 813,5
dw 767,5, 678,20, 574,10, 609,10, 678,10, 767,10
dw 678,10, 813,30, 1218,10, 767,10, 813,10, 912,10
dw 966,10, 912,30, 1218,10, 609,10, 678,10, 767,10
dw 813,10, 767,30, 912,10, 574,15, 609,5, 678,15
dw 767,5, 813,5, 767,5, 678,20, 574,10, 609,10
dw 678,10, 767,10, 678,10, 813,30, 0,2, 609,10
dw 609,10, 912,10, 724,10, 609,10, 609,5, 678,5
dw 724,5, 678,5, 574,15, 678,5, 678,10, 1024,10
dw 813,10, 678,10, 678,5, 767,5, 813,5, 724,5
dw 609,20, 678,5, 609,5, 574,5, 456,5, 342,5
dw 384,5, 406,5, 456,5, 456,20, 483,20, 678,5
dw 609,5, 574,5, 456,5, 342,5, 384,5, 406,5
dw 456,5, 456,10, 483,10, 456,20, 0,2, 456,5
dw 456,10, 483,10, 456,20, 0,30
;MC = ($-MUS)/4; Music Count - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD>
MC = 100
; <20><><20><EFBFBD> <20> 32-<2D> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E9A5AD><EFBFBD> <><E0A5A6>
PM_entry:
; <20><><EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD> 32-<2D> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><20> <20><><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD>
mov ax, SEL_flatDS
mov ds, ax
mov es, ax
mov ax, SEL_32bitSS
mov ebx, stack_l
mov ss, ax
mov esp, ebx
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD>
sti
; <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><>
jmp short $
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;! <20><><EFBFBD><E0A0A1><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> !
;! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><E0A5AA><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E1AAA0> <20><EFBFBD><E8A8A1> !
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
; <20><><EFBFBD><E0A0A1><20><><EFBFBD><EFBFBD><E7ADAE> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD>
int_handler:
iretd
; <20><><EFBFBD><E0A0A1><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2ADAE> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> IRQ0-IRQ7
irq0_7_handler:
push eax
mov al, 20h
out 20h, al
pop eax
iretd
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
; <20><><EFBFBD><E0A0A1><20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> <20><><><E2A0A9><EFBFBD><EFBFBD> (int8) !
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
timer_handler:
; <20><><EFBFBD><EFBFBD><E0A0AD><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD>
push eax
push ebx
push es
push ds
mov bx, SEL_32bitDS ; <20><><EFBFBD><EFBFBD><EFBFBD><E3A7A8><><E1A5A3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mov ds, bx
dec NM ; <20><><EFBFBD><EFBFBD><20><EFBFBD> <20><><EFBFBD><EFBFBD><E7A0AD>
mov eax, NM ; <20><20><> <20><><EFBFBD><E2A5AA>,
cmp eax, 0
jnz contin_mus ; <20><> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD>
; <20><EFBFBD><EBAAAB><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
in al, 61h
and al, 0FCh
out 61h, al
delay 1 ; <20><>
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E1ABA5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
inc N ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><>.
mov eax, N ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mov ebx, 4 ; ! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mul ebx ; <20><><EFBFBD><EFBFBD><E9A5AD> <20><><EFBFBD><EFBFBD>, <20><EFBFBD><E2ADAE>⥫쭮 <20><><EFBFBD> <20><><EFBFBD><EFBFBD>
add eax, offset MUS ; <20><><EFBFBD><EFBFBD><EFBFBD>
push eax ; <20><><EFBFBD><EFBFBD><E0A0AD><EFBFBD>
; xor eax, eax
mov ax, [eax] ; <20> AX - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E7A0AD>
mov ebx, eax ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2AEA2>
shr ebx, 8 ; <20><><EFBFBD><E0A0AC><20><><EFBFBD>
and ax, 00FFh ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
push eax
mov ax, 0B6h ; \
out 43h, ax ; _\outportb(0x43, 0xB6)
pop eax ; EAX = <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> & 0x00FF
out 42h, ax
xchg ax, bx ; ax = <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> >> 8
out 42h, ax
in al, 61h
or al, 03h
out 61h, al
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>⥫쭮<E2A5AB><ECADAE><EFBFBD>
pop ebx ; EBX = <20><><EFBFBD><EFBFBD><EFBFBD><><20><><EFBFBD><EFBFBD>
xor eax, eax
mov ax, word ptr [ebx+2] ; EAX = <20><><EFBFBD>⥫쭮<E2A5AB><ECADAE><EFBFBD>
mov NM, eax
cmp N, MC ; <20><20><> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
jb contin_mus ; <20><> <20><><EFBFBD>,
mov N, 0 ; <20><><EFBFBD><EFBFBD><EFBFBD> - <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>
contin_mus:
; mov NM, eax ; <20><><EFBFBD><EFBFBD><E0A0AD><EFBFBD><><20><EFBFBD> <20><><EFBFBD><EFBFBD><E7A0AD>
; <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><E0AEAB><EFBFBD><EFBFBD>
mov al, 20h
out 20h, al
; <20><><EFBFBD><EFBFBD><EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD>
pop ds
pop es
pop ebx
pop eax
iretd
; <20><><EFBFBD><E0A0A1><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2ADAE> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> IRQ8-IRQ15
irq8_15_handler:
push eax
mov al, 20h
out 0A1h, al
pop eax
iretd
; <20><><EFBFBD><E0A0A1>稪 IRQ1 - <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
irq1_handler:
push eax ; <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> -
push ebx ; <20><><EFBFBD><EFBFBD><E0A0AD><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD>
push edx
push es
push ds
in al, 60h ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><>-<2D><><EFBFBD> <20><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
; cmp al, 0Eh ; <20><20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 祬 <20><><EFBFBD><EFBFBD><EFBFBD><E3A6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
cmp al, 39h ; <20><20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 祬 <20><><EFBFBD><EFBFBD><EFBFBD><E3A6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ja skip_translate ; <20><><EFBFBD><EFBFBD>, - <20><> <20><><EFBFBD><E0A0A1><EFBFBD><EBA2A0>
cmp al, 1 ; <20><20><><EFBFBD> ESC,
je esc_pressed ; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><E0A5A0><EFBFBD><EFBFBD><EFBFBD> <><E0A5A6>
mov bx, SEL_32bitDS ; <20><><EFBFBD><EFBFBD><EFBFBD>:
mov ds, bx ; DS:EBX - ⠡<><E2A0A1><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><E0A5A2><EFBFBD>
mov ebx, offset scan2ascii ; ᪠<>-<2D><><EFBFBD><EFBFBD> <20> ASCII
xlatb ; <20><EFBFBD><EFBFBD><E0A0A7><EFBFBD><EFBFBD><EFBFBD>
mov bx, SEL_flatDS
mov es, bx ; ES:EBX - <20><><EFBFBD><EFBFBD><EFBFBD><>
mov ebx, screen_addr ; <20><><EFBFBD><EFBFBD><20><> <20><><EFBFBD>
cmp al, 8 ; <20><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BkSpace
je bs_pressed ; <20><> ᮮ⢥<E1AEAE><E2A2A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><E0A0A1>
cmp al, 0 ;
je skip_translate ;
mov es:[ebx+0B8000h], al ; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E1ABA0><><E1A8AC><EFBFBD> <20><> <20><>
add dword ptr screen_addr, 2; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><20><> 2
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mov ebx, screen_addr
shr ebx, 1
;! mov eax, ebx
;! mov ebx, 2
;!!! div ebx
; mov ebx, eax
; mov ebx, screen_addr
; inc ebx
xor edx, edx
xor eax, eax
mov dx, 03D4h ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0AEAB><EFBFBD><EFBFBD> CRT
mov al, 0Fh ; <20><><EFBFBD><EFBFBD><EFBFBD><E9A5AD> <20><><E0A5A3><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
mov ah, bl
out dx, ax
mov al, 0Eh ; <20> ॣ. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
mov ah, bh
out dx, ax
jmp short skip_translate
bs_pressed: ; <20><><EFBFBD><EFBFBD><EFBFBD> BkSpace:
mov al,' ' ; <20><EFBFBD><EBA2A5><EFBFBD> <20><EFBFBD><E0AEA1>
sub ebx, 2 ; <20> <20><><EFBFBD><EFBFBD><20><EFBFBD><E0A5A4><EFBFBD><EFBFBD><><E1A8AC><EFBFBD><EFBFBD>
mov es:[ebx+0B8000h], al
mov screen_addr, ebx ; <20> <20><><EFBFBD><EFBFBD><E0A0AD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A5A4><><E1A8AC><EFBFBD><EFBFBD>,
; <20><><EFBFBD><>
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
shr ebx, 1
;! mov eax, ebx
;! mov ebx, 2
;!!! div ebx
; mov ebx, eax
; mov ebx, screen_addr
; inc ebx
xor edx, edx
xor eax, eax
mov dx, 03D4h ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0AEAB><EFBFBD><EFBFBD> CRT
mov al, 0Fh ; <20><><EFBFBD><EFBFBD><EFBFBD><E9A5AD> <20><><E0A5A3><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
mov ah, bl
out dx, ax
mov al, 0Eh ; <20> ॣ. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
mov ah, bh
out dx, ax
skip_translate:
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A0A1><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
in al, 61h
or al, 80h
out 61h, al
; <20><><EFBFBD><E1ABA0> EOI <20><><EFBFBD><EFBFBD><EFBFBD><E0AEAB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD>
mov al, 20h
out 20h, al
; <20><><EFBFBD><EFBFBD><EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
pop ds
pop es
pop edx
pop ebx
pop eax
iretd
; *******************
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ESC
esc_pressed:
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A0A1><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><E1ABA0> EOI <20> <20><><EFBFBD><EFBFBD><EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD>
in al, 61h
or al, 80h
out 61h, al
mov al, 20h
out 20h, al
cli
; <20><EFBFBD><E2AAAB><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
in al, 61h
and al, 0FCh
out 61h, al
pop ds
pop es
pop edx
pop ebx
pop eax
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><E0A5A0><EFBFBD><EFBFBD><EFBFBD> <><E0A5A6>
db 0EAh
dd offset RM_return
dw SEL_16bitCS
PM_seg ends
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD>, <20><EFBFBD><E1AFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> 16-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> 16-<2D><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC> <20> <20><><EFBFBD>
; 32-<2D> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><>१ ᥫ<><E1A5AB><EFBFBD><EFBFBD><EFBFBD> SEL_32bitSS) <20> 32-<2D> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
Stack_seg segment para stack "STACK"
stack_start db 100h dup(?)
stack_l = $-stack_start ; <20><><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><E6A8A0><EFBFBD><EFBFBD>樨 ESP
Stack_seg ends
end start

BIN
Protect/PM_INT8.9/PM.EXE Executable file

Binary file not shown.

BIN
Protect/PM_INT8.9/PM.OBJ Executable file

Binary file not shown.

293
Protect/PM_INT8.9/PM1.ASM Executable file
View File

@ -0,0 +1,293 @@
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E3A4A5><EFBFBD> <20><><EFBFBD> 2084/3
; <20><><EFBFBD><EFBFBD><EFBFBD><E0A5AD> <20><><EFBFBD>
; <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
; <20>ணࠬ<E0AEA3><E0A0AC>, <20><EFBFBD><E0AEA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><20> Protrcted Mode,
; <20><>९ணࠬ<E0AEA3><E0A0AC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0AEAB><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> <20> <20><EFBFBD><E0AEA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><EFBFBD><E0A0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᬥ饭<E1ACA5><E9A5AD> <20><> 32-<2D> <20><><EFBFBD><E2ADAE><><E1A5A3><EFBFBD><EFBFBD><EFBFBD> <20> 16-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A5AC><EFBFBD><EFBFBD><EFBFBD>
so equ small offset
.386p
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Real Mode, 16 <20><><EFBFBD>
RM_seg segment para public "CODE" use16
assume cs: RM_seg, ds: PM_seg, ss: Stack_seg
start:
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
mov ax, 3
int 10h
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2AEA2><EFBFBD><><E1A5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD>
push PM_seg
pop ds
; <20><EFBFBD><E0AEA2><EFBFBD><EFBFBD><EFBFBD> <><E0A5A6> (PM <20><><EFBFBD> <20><><EFBFBD>)
mov eax, cr0
test al, 1
jz no_V86
; <20>᫨ 㦥 <20> PM - ᮮ<><E1AEAE><EFBFBD><EFBFBD><EFBFBD> <20><> <20><EFBFBD><E8A8A1> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
mov dx, so v86_msg
err_exit:
mov ah, 9
int 21h
mov ah, 4Ch
int 21h
; <20><EFBFBD><E0AEA2><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Windows
no_V86:
mov ax, 1600h
int 2Fh
test al, al
jz no_Windows
; <20><20><><EFBFBD> Wondows - ᮮ<><E1AEAE><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
mov dx, so win_msg
jmp short err_exit
; *****************************************
; <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC>
no_Windows:
; <20><><EFBFBD><EFBFBD><EFBFBD><E1ABA8> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD><E1AFAE><EFBFBD><EFBFBD><E3A5AC> <20><><EFBFBD><EFBFBD><EFBFBD><E0A8AF>஢ ᥣ<><E1A5A3><EFBFBD>
xor eax, eax
mov ax, RM_seg ; <20><><EFBFBD><EFBFBD><EFBFBD> 16bitCS <20><EFBFBD> RM_seg
shl eax, 4
mov word ptr GDT_16bitCS+2, ax ; <20><><EFBFBD><EFBFBD> 15-0
shr eax, 16
mov byte ptr GDT_16bitCS+4, al ; <20><><EFBFBD><EFBFBD> 23-16
mov ax, PM_seg
shl eax, 4
mov word ptr GDT_32bitCS+2, ax ; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 32bit* <20><EFBFBD>
mov word ptr GDT_32bitSS+2, ax ; PM_seg
mov word ptr GDT_32bitDS+2, ax
shr eax, 16
mov byte ptr GDT_32bitCS+4, al
mov byte ptr GDT_32bitSS+4, al
mov byte ptr GDT_32bitDS+4, al
; <20><><EFBFBD><EFBFBD><EFBFBD><E1ABA8> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> GDT
xor eax, eax
mov ax, PM_seg
shl eax, 4
push eax
add eax, offset GDT
mov dword ptr gdtr+2, eax
; <20><><EFBFBD><EFBFBD><EFBFBD><E3A7A8> GDT
lgdt fword ptr gdtr
; <20><><EFBFBD><EFBFBD><EFBFBD><E1ABA8> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> IDT
pop eax
add eax, offset IDT
mov dword ptr idtr+2, eax
; <20><><EFBFBD><EFBFBD><EFBFBD><E3A7A8> IDT
lidt fword ptr idtr
; <20>.<2E>. ᮡ<><EFBFBD><E0A0A5><EFBFBD><><E0A0A1><EFBFBD><EFBFBD><EFBFBD> <20> 32-<2D> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> A20
in al, 70h
or al, 2
out 92h, al
; <20><EFBFBD><E2AAAB><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD>
cli
; <20><EFBFBD><E2AAAB><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3A5AC> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> (NMI)
in al, 70h
or al, 80h
out 70h, al
; <20><><EFBFBD><E0A5A9> <20> <20><><EFBFBD><EFBFBD><EFBFBD><E9A5AD><EFBFBD> <><E0A5A6>
mov eax, cr0
or al, 1
mov cr0, eax
; <20><><EFBFBD><EFBFBD><EFBFBD><E3A7A8> SEL_32bitCS <20> CS
db 66h ; <20><><EFBFBD><EFBFBD> <20><EFBFBD><EFBFBD><E0A0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><EFBFBD><EFA4AD><EFBFBD><EFBFBD>
db 0EAh ; <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
dd offset PM_entry
dw Sel_32bitCS
RM_return:
; <20><><EFBFBD><E0A5A9> <20> Real Mode
mov eax, cr0
and al, 0FEh
mov cr0, eax
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><E3A7A8> CS ॠ<><E0A5A0><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
db 0EAh
dw $+4
dw RM_seg
; <20><><EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><><E0A0A1><EFBFBD> <20><><EFBFBD> <><E0A5A6><EFBFBD>
mov ax, PM_seg
mov ds, ax
mov es, ax
mov ax, Stack_seg
mov bx, stack_l
mov ss, ax
mov sp, bx
; <20><><EFBFBD><EFBFBD><EFBFBD><E3A7A8> IDTR <20><><EFBFBD> RM
mov ax, PM_seg
mov ds, ax
lidt fword ptr idtr_real
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> NMI
in al, 70h
and al, 07Fh
out 70h, al
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD>
sti
; <20> <20><><EFBFBD><EFBFBD><EFBFBD>
mov ah, 4Ch
int 21h
RM_seg ends
; 32-<2D> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E1A5A3><EFBFBD><EFBFBD>
PM_seg segment para "CODE" use32
assume cs: PM_seg
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> GDT <20> IDT <20>.<2E>. <20><><EFBFBD><E0AEA2><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><><E0A0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><><E1A5A3><EFBFBD><EFBFBD><EFBFBD>
GDT label byte
db 8 dup(0)
; 32-x <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4-<2D> <20><><><E1A5A3><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> =0
GTD_flatDS db 0FFh,0FFh,0,0,0,10010010b,11001111b,0
; 16-<2D> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 64-<2D> <20><><><E1A5A3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> RM_seg
GDT_16bitCS db 0FFh,0FFh,0,0,0,10011010b,0,0
; 32-x <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4-<2D> <20><><><E1A5A3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> PM_seg
GDT_32bitCS db 0FFh,0FFh,0,0,0,10011010b,11001111b,0
; 32-x <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4-<2D> <20><><><E1A5A3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> PM_seg
GDT_32bitDS db 0FFh,0FFh,0,0,0,10010010b,11001111b,0
; 32-x <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4-<2D> <20><><><E1A5A3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> Stack_seg
GDT_32bitSS db 0FFh,0FFh,0,0,0,10010010b,11001111b,0
gdt_size = $-GDT
gdtr dw gdt_size-1 ; <20><EFBFBD><E0A5A4> GDT
dd ? ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> GDT
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E1A5AB><EFBFBD><EFBFBD>
SEL_flatDS equ 001000b
SEL_16bitCS equ 010000b
SEL_32bitCS equ 011000b
SEL_32bitDS equ 100000b
SEL_32bitSS equ 101000b
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0A8AF><20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> IDT
IDT label byte
; <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0A8AF><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> 0Eh - 32-<2D> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD>
; INT 00-07
dw 8 dup(so int_handler, SEL_32bitCS, 8E00h,0)
; INT 08(irq0)
dw so irq0_7_handler,SEL_32bitCS,8E00h,0
; INT 09(irq1)
dw so irq1_handler,SEL_32bitCS,8E00h,0
; INT 0Ah-0Fh (IRQ2-IRQ8)
dw 6 dup(so irq0_7_handler,SEL_32bitCS,8E00h,0)
; INT 10h-6Fh
dw 97 dup(so int_handler,SEL_32bitCS,8E00h,0)
; INT 70h-78h (IRQ8-IRQ15)
dw 8 dup(so irq8_15_handler,SEL_32bitCS,8E00h,0)
; INT 79h-FFh
dw 135 dup(so int_handler,SEL_32bitCS,8E00h,0)
idt_size = $-IDT
idtr dw idt_size-1 ; <20><EFBFBD><E0A5A4> IDT
dd ? ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> IDT
; <20><><EFBFBD><EFBFBD><EFBFBD><E0A6A8><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD> IDTR <20><><EFBFBD> <><E0A5A6><EFBFBD>
idtr_real dw 3FFh,0,0
; <20><><EFBFBD><EFBFBD><EFBFBD><E9A5AD> <20><> <20><EFBFBD><E8A8A1><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
v86_msg db "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <><E0A5A6><EFBFBD> v86 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A5AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> PM$"
win_msg db "<22>ணࠬ<E0AEA3><E0A0AC> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> Windows$"
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><E0A5A2><EFBFBD> OE ᪠<>-<2D><><EFBFBD><EFBFBD><EFBFBD> <20> ASCII
scan2ascii db 0,1Bh,'1','2','3','4','5','6','7','8','9','0','-','=',8
screen_addr dd 0 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>
; <20><><20><EFBFBD> <20> 32-<2D> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E9A5AD><EFBFBD> <><E0A5A6>
PM_entry:
; <20><><EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD> 32-<2D> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><20> <20><><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD>
mov ax, SEL_flatDS
mov ds, ax
mov es, ax
mov ax, SEL_32bitSS
mov ebx, stack_l
mov ss, ax
mov esp, ebx
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD>
sti
; <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><>
jmp short $
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;! <20><><EFBFBD><E0A0A1><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> !
;! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><E0A5AA><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E1AAA0> <20><EFBFBD><E8A8A1> !
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
; <20><><EFBFBD><E0A0A1><20><><EFBFBD><EFBFBD><E7ADAE> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD>
int_handler:
iretd
; <20><><EFBFBD><E0A0A1><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2ADAE> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> IRQ0-IRQ7
irq0_7_handler:
push eax
mov al, 20h
out 20h, al
pop eax
iretd
; <20><><EFBFBD><E0A0A1><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2ADAE> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> IRQ8-IRQ15
irq8_15_handler:
push eax
mov al, 20h
out 0A1h, al
pop eax
iretd
; <20><><EFBFBD><E0A0A1>稪 IRQ1 - <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
irq1_handler:
push eax ; <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> -
push ebx ; <20><><EFBFBD><EFBFBD><E0A0AD><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD>
push es
push ds
in al, 60h ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><>-<2D><><EFBFBD> <20><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
cmp al, 0Eh ; <20><20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 祬 <20><><EFBFBD><EFBFBD><EFBFBD><E3A6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ja skip_translate ; <20><><EFBFBD><EFBFBD>, - <20><> <20><><EFBFBD><E0A0A1><EFBFBD><EBA2A0>
cmp al, 1 ; <20><20><><EFBFBD> ESC,
je esc_pressed ; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><E0A5A0><EFBFBD><EFBFBD><EFBFBD> <><E0A5A6>
mov bx, SEL_32bitDS ; <20><><EFBFBD><EFBFBD><EFBFBD>:
mov ds, bx ; DS:EBX - ⠡<><E2A0A1><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><E0A5A2><EFBFBD>
mov ebx, offset scan2ascii ; ᪠<>-<2D><><EFBFBD><EFBFBD> <20> ASCII
xlatb ; <20><EFBFBD><EFBFBD><E0A0A7><EFBFBD><EFBFBD><EFBFBD>
mov bx, SEL_flatDS
mov es, bx ; ES:EBX - <20><><EFBFBD><EFBFBD><EFBFBD><>
mov ebx, screen_addr ; <20><><EFBFBD><EFBFBD><20><> <20><><EFBFBD>
cmp al, 8 ; <20><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BkSpace
je bs_pressed ; <20><> ᮮ⢥<E1AEAE><E2A2A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><E0A0A1>
mov es:[ebx+0B8000h], al ; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E1ABA0><><E1A8AC><EFBFBD> <20><> <20><>
add dword ptr screen_addr, 2; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><20><> 2
jmp short skip_translate
bs_pressed: ; <20><><EFBFBD><EFBFBD><EFBFBD> BkSpace:
mov al,' ' ; <20><EFBFBD><EBA2A5><EFBFBD> <20><EFBFBD><E0AEA1>
sub ebx, 2 ; <20> <20><><EFBFBD><EFBFBD><20><EFBFBD><E0A5A4><EFBFBD><EFBFBD><><E1A8AC><EFBFBD><EFBFBD>
mov es:[ebx+0B8000h], al
mov screen_addr, ebx ; <20> <20><><EFBFBD><EFBFBD><E0A0AD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A5A4><><E1A8AC><EFBFBD><EFBFBD>,
; <20><><EFBFBD><>
skip_translate:
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A0A1><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
in al, 61h
or al, 80h
out 61h, al
; <20><><EFBFBD><E1ABA0> EOI <20><><EFBFBD><EFBFBD><EFBFBD><E0AEAB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD>
mov al, 20h
out 20h, al
; <20><><EFBFBD><EFBFBD><EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
pop ds
pop es
pop ebx
pop eax
iretd
; *******************
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ESC
esc_pressed:
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A0A1><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><E1ABA0> EOI <20> <20><><EFBFBD><EFBFBD><EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD>
in al, 61h
or al, 80h
out 61h, al
mov al, 20h
out 20h, al
pop ds
pop es
pop ebx
pop eax
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><E0A5A0><EFBFBD><EFBFBD><EFBFBD> <><E0A5A6>
cli
db 0EAh
dd offset RM_return
dw SEL_16bitCS
PM_seg ends
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD>, <20><EFBFBD><E1AFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> 16-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> 16-<2D><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC> <20> <20><><EFBFBD>
; 32-<2D> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><>१ ᥫ<><E1A5AB><EFBFBD><EFBFBD><EFBFBD> SEL_32bitSS) <20> 32-<2D> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
Stack_seg segment para stack "STACK"
stack_start db 100h dup(?)
stack_l = $-stack_start ; <20><><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><E6A8A0><EFBFBD><EFBFBD>樨 ESP
Stack_seg ends
end start

400
Protect/PM_INT8.9/PM2.ASM Executable file
View File

@ -0,0 +1,400 @@
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E3A4A5><EFBFBD> <20><><EFBFBD> 2084/3
; <20><><EFBFBD><EFBFBD><EFBFBD><E0A5AD> <20><><EFBFBD>
; <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
; <20>ணࠬ<E0AEA3><E0A0AC>, <20><EFBFBD><E0AEA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><20> Protrcted Mode,
; <20><>९ணࠬ<E0AEA3><E0A0AC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0AEAB><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> <20> <20><EFBFBD><E0AEA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><EFBFBD><E0A0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᬥ饭<E1ACA5><E9A5AD> <20><> 32-<2D> <20><><EFBFBD><E2ADAE><><E1A5A3><EFBFBD><EFBFBD><EFBFBD> <20> 16-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A5AC><EFBFBD><EFBFBD><EFBFBD>
so equ small offset
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>. <20><> <20><EFBFBD> - <20><><EFBFBD><EFBFBD><E7A5AD> <20><><EFBFBD><E0A5AC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> (<28> <20><><EFBFBD>).
delay macro time
local ext,iter
push ecx
mov ecx,time
ext: push ecx
mov cx,5000 ;<3B><><EFBFBD> <20><><EFBFBD><EFBFBD><E7A5AD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><> <20><EFBFBD><E0AEA8><EFBFBD><EFBFBD><EFBFBD>⥫쭮<E2A5AB><ECADAE><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
iter: loop iter
pop ecx
loop ext
pop ecx
endm
.386p
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Real Mode, 16 <20><><EFBFBD>
RM_seg segment para public "CODE" use16
assume cs: RM_seg, ds: PM_seg, ss: Stack_seg
start:
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
mov ax, 3
int 10h
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2AEA2><EFBFBD><><E1A5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD>
push PM_seg
pop ds
; <20><EFBFBD><E0AEA2><EFBFBD><EFBFBD><EFBFBD> <><E0A5A6> (PM <20><><EFBFBD> <20><><EFBFBD>)
mov eax, cr0
test al, 1
jz no_V86
; <20>᫨ 㦥 <20> PM - ᮮ<><E1AEAE><EFBFBD><EFBFBD><EFBFBD> <20><> <20><EFBFBD><E8A8A1> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
mov dx, so v86_msg
err_exit:
mov ah, 9
int 21h
mov ah, 4Ch
int 21h
; <20><EFBFBD><E0AEA2><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Windows
no_V86:
mov ax, 1600h
int 2Fh
test al, al
jz no_Windows
; <20><20><><EFBFBD> Wondows - ᮮ<><E1AEAE><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
mov dx, so win_msg
jmp short err_exit
; *****************************************
; <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC>
no_Windows:
; <20><><EFBFBD><EFBFBD><EFBFBD><E1ABA8> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD><E1AFAE><EFBFBD><EFBFBD><E3A5AC> <20><><EFBFBD><EFBFBD><EFBFBD><E0A8AF>஢ ᥣ<><E1A5A3><EFBFBD>
xor eax, eax
mov ax, RM_seg ; <20><><EFBFBD><EFBFBD><EFBFBD> 16bitCS <20><EFBFBD> RM_seg
shl eax, 4
mov word ptr GDT_16bitCS+2, ax ; <20><><EFBFBD><EFBFBD> 15-0
shr eax, 16
mov byte ptr GDT_16bitCS+4, al ; <20><><EFBFBD><EFBFBD> 23-16
mov ax, PM_seg
shl eax, 4
mov word ptr GDT_32bitCS+2, ax ; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 32bit* <20><EFBFBD>
mov word ptr GDT_32bitSS+2, ax ; PM_seg
mov word ptr GDT_32bitDS+2, ax
shr eax, 16
mov byte ptr GDT_32bitCS+4, al
mov byte ptr GDT_32bitSS+4, al
mov byte ptr GDT_32bitDS+4, al
; <20><><EFBFBD><EFBFBD><EFBFBD><E1ABA8> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> GDT
xor eax, eax
mov ax, PM_seg
shl eax, 4
push eax
add eax, offset GDT
mov dword ptr gdtr+2, eax
; <20><><EFBFBD><EFBFBD><EFBFBD><E3A7A8> GDT
lgdt fword ptr gdtr
; <20><><EFBFBD><EFBFBD><EFBFBD><E1ABA8> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> IDT
pop eax
add eax, offset IDT
mov dword ptr idtr+2, eax
; <20><><EFBFBD><EFBFBD><EFBFBD><E3A7A8> IDT
lidt fword ptr idtr
; <20>.<2E>. ᮡ<><EFBFBD><E0A0A5><EFBFBD><><E0A0A1><EFBFBD><EFBFBD><EFBFBD> <20> 32-<2D> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> A20
in al, 70h
or al, 2
out 92h, al
; <20><EFBFBD><E2AAAB><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD>
cli
; <20><EFBFBD><E2AAAB><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3A5AC> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> (NMI)
in al, 70h
or al, 80h
out 70h, al
; <20><><EFBFBD><E0A5A9> <20> <20><><EFBFBD><EFBFBD><EFBFBD><E9A5AD><EFBFBD> <><E0A5A6>
mov eax, cr0
or al, 1
mov cr0, eax
; <20><><EFBFBD><EFBFBD><EFBFBD><E3A7A8> SEL_32bitCS <20> CS
db 66h ; <20><><EFBFBD><EFBFBD> <20><EFBFBD><EFBFBD><E0A0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><EFBFBD><EFA4AD><EFBFBD><EFBFBD>
db 0EAh ; <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
dd offset PM_entry
dw Sel_32bitCS
RM_return:
; <20><><EFBFBD><E0A5A9> <20> Real Mode
mov eax, cr0
and al, 0FEh
mov cr0, eax
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><E3A7A8> CS ॠ<><E0A5A0><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
db 0EAh
dw $+4
dw RM_seg
; <20><><EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><><E0A0A1><EFBFBD> <20><><EFBFBD> <><E0A5A6><EFBFBD>
mov ax, PM_seg
mov ds, ax
mov es, ax
mov ax, Stack_seg
mov bx, stack_l
mov ss, ax
mov sp, bx
; <20><><EFBFBD><EFBFBD><EFBFBD><E3A7A8> IDTR <20><><EFBFBD> RM
mov ax, PM_seg
mov ds, ax
lidt fword ptr idtr_real
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> NMI
in al, 70h
and al, 07Fh
out 70h, al
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD>
sti
; <20> <20><><EFBFBD><EFBFBD><EFBFBD>
mov ah, 4Ch
int 21h
RM_seg ends
; 32-<2D> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E1A5A3><EFBFBD><EFBFBD>
PM_seg segment para "CODE" use32
assume cs: PM_seg
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> GDT <20> IDT <20>.<2E>. <20><><EFBFBD><E0AEA2><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><><E0A0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><><E1A5A3><EFBFBD><EFBFBD><EFBFBD>
GDT label byte
db 8 dup(0)
; 32-x <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4-<2D> <20><><><E1A5A3><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> =0
GTD_flatDS db 0FFh,0FFh,0,0,0,10010010b,11001111b,0
; 16-<2D> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 64-<2D> <20><><><E1A5A3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> RM_seg
GDT_16bitCS db 0FFh,0FFh,0,0,0,10011010b,0,0
; 32-x <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4-<2D> <20><><><E1A5A3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> PM_seg
GDT_32bitCS db 0FFh,0FFh,0,0,0,10011010b,11001111b,0
; 32-x <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4-<2D> <20><><><E1A5A3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> PM_seg
GDT_32bitDS db 0FFh,0FFh,0,0,0,10010010b,11001111b,0
; 32-x <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4-<2D> <20><><><E1A5A3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> Stack_seg
GDT_32bitSS db 0FFh,0FFh,0,0,0,10010010b,11001111b,0
gdt_size = $-GDT
gdtr dw gdt_size-1 ; <20><EFBFBD><E0A5A4> GDT
dd ? ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> GDT
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E1A5AB><EFBFBD><EFBFBD>
SEL_flatDS equ 001000b
SEL_16bitCS equ 010000b
SEL_32bitCS equ 011000b
SEL_32bitDS equ 100000b
SEL_32bitSS equ 101000b
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0A8AF><20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> IDT
IDT label byte
; <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0A8AF><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> 0Eh - 32-<2D> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD>
; INT 00-07
dw 8 dup(so int_handler, SEL_32bitCS, 8E00h,0)
; INT 08(irq0)
; dw so irq0_7_handler,SEL_32bitCS,8E00h,0
dw so timer_handler,SEL_32bitCS,8E00h,0
; INT 09(irq1)
dw so irq1_handler,SEL_32bitCS,8E00h,0
; INT 0Ah-0Fh (IRQ2-IRQ8)
dw 6 dup(so irq0_7_handler,SEL_32bitCS,8E00h,0)
; INT 10h-6Fh
dw 97 dup(so int_handler,SEL_32bitCS,8E00h,0)
; INT 70h-78h (IRQ8-IRQ15)
dw 8 dup(so irq8_15_handler,SEL_32bitCS,8E00h,0)
; INT 79h-FFh
dw 135 dup(so int_handler,SEL_32bitCS,8E00h,0)
idt_size = $-IDT
idtr dw idt_size-1 ; <20><EFBFBD><E0A5A4> IDT
dd ? ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> IDT
; <20><><EFBFBD><EFBFBD><EFBFBD><E0A6A8><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD> IDTR <20><><EFBFBD> <><E0A5A6><EFBFBD>
idtr_real dw 3FFh,0,0
; <20><><EFBFBD><EFBFBD><EFBFBD><E9A5AD> <20><> <20><EFBFBD><E8A8A1><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
v86_msg db "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <><E0A5A6><EFBFBD> v86 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A5AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> PM$"
win_msg db "<22>ணࠬ<E0AEA3><E0A0AC> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> Windows$"
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><E0A5A2><EFBFBD> OE ᪠<>-<2D><><EFBFBD><EFBFBD><EFBFBD> <20> ASCII
scan2ascii db 0,1Bh,'1','2','3','4','5','6','7','8','9','0','-','=',8
screen_addr dd 0 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>
N dd 64 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> MUS
NM dd 1 ; <20><><EFBFBD><EFBFBD><20><><EFBFBD>⥫쭮<E2A5AB><ECADAE><EFBFBD>
; <20><><EFBFBD><20><><EFBFBD> <20><><EFBFBD><EFBFBD><E7A0AD>: 1-<2D> <20><>᫮ - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 2-<2D> - <20><><EFBFBD>⥫쭮<E2A5AB><ECADAE><EFBFBD>
MUS dw 1218,10, 767,10, 813,10, 912,10, 966,10, 912,30
dw 1218,10, 609,10, 678,10, 767,10, 813,10, 767,30
dw 912,10, 574,15, 609,5, 678,15, 767,5, 813,5
dw 767,5, 678,20, 574,10, 609,10, 678,10, 767,10
dw 678,10, 813,30, 1218,10, 767,10, 813,10, 912,10
dw 966,10, 912,30, 1218,10, 609,10, 678,10, 767,10
dw 813,10, 767,30, 912,10, 574,15, 609,5, 678,15
dw 767,5, 813,5, 767,5, 678,20, 574,10, 609,10
dw 678,10, 767,10, 678,10, 813,30, 0,2, 609,10
dw 609,10, 912,10, 724,10, 609,10, 609,5, 678,5
dw 724,5, 678,5, 574,15, 678,5, 678,10, 1024,10
dw 813,10, 678,10, 678,5, 767,5, 813,5, 724,5
dw 609,20, 678,5, 609,5, 574,5, 456,5, 342,5
dw 384,5, 406,5, 456,5, 456,20, 483,20, 678,5
dw 609,5, 574,5, 456,5, 342,5, 384,5, 406,5
dw 456,5, 456,10, 483,10, 456,20, 0,2, 456,5
dw 456,10, 483,10, 456,20, 0,30
;MC = ($-MUS)/4; Music Count - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD>
MC = 100
; <20><><20><EFBFBD> <20> 32-<2D> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E9A5AD><EFBFBD> <><E0A5A6>
PM_entry:
; <20><><EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD> 32-<2D> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><20> <20><><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD>
mov ax, SEL_flatDS
mov ds, ax
mov es, ax
mov ax, SEL_32bitSS
mov ebx, stack_l
mov ss, ax
mov esp, ebx
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD>
sti
; <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><>
jmp short $
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;! <20><><EFBFBD><E0A0A1><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> !
;! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><E0A5AA><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E1AAA0> <20><EFBFBD><E8A8A1> !
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
; <20><><EFBFBD><E0A0A1><20><><EFBFBD><EFBFBD><E7ADAE> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD>
int_handler:
iretd
; <20><><EFBFBD><E0A0A1><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2ADAE> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> IRQ0-IRQ7
irq0_7_handler:
push eax
mov al, 20h
out 20h, al
pop eax
iretd
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
; <20><><EFBFBD><E0A0A1><20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> <20><><><E2A0A9><EFBFBD><EFBFBD> (int8) !
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
timer_handler:
; <20><><EFBFBD><EFBFBD><E0A0AD><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD>
push eax
push ebx
push es
push ds
mov bx, SEL_32bitDS ; <20><><EFBFBD><EFBFBD><EFBFBD><E3A7A8><><E1A5A3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mov ds, bx
dec NM ; <20><><EFBFBD><EFBFBD><20><EFBFBD> <20><><EFBFBD><EFBFBD><E7A0AD>
mov eax, NM ; <20><20><> <20><><EFBFBD><E2A5AA>,
cmp eax, 0
jnz contin_mus ; <20><> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD>
; <20><EFBFBD><EBAAAB><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
in al, 61h
and al, 0FCh
out 61h, al
delay 1 ; <20><>
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E1ABA5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
inc N ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><>.
mov eax, N ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mov ebx, 4 ; ! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mul ebx ; <20><><EFBFBD><EFBFBD><E9A5AD> <20><><EFBFBD><EFBFBD>, <20><EFBFBD><E2ADAE>⥫쭮 <20><><EFBFBD> <20><><EFBFBD><EFBFBD>
add eax, offset MUS ; <20><><EFBFBD><EFBFBD><EFBFBD>
push eax ; <20><><EFBFBD><EFBFBD><E0A0AD><EFBFBD>
; xor eax, eax
mov ax, [eax] ; <20> AX - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E7A0AD>
mov ebx, eax ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2AEA2>
shr ebx, 8 ; <20><><EFBFBD><E0A0AC><20><><EFBFBD>
and ax, 00FFh ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
push eax
mov ax, 0B6h ; \
out 43h, ax ; _\outportb(0x43, 0xB6)
pop eax ; EAX = <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> & 0x00FF
out 42h, ax
xchg ax, bx ; ax = <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> >> 8
out 42h, ax
in al, 61h
or al, 03h
out 61h, al
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>⥫쭮<E2A5AB><ECADAE><EFBFBD>
pop ebx ; EBX = <20><><EFBFBD><EFBFBD><EFBFBD><><20><><EFBFBD><EFBFBD>
xor eax, eax
mov ax, word ptr [ebx+2] ; EAX = <20><><EFBFBD>⥫쭮<E2A5AB><ECADAE><EFBFBD>
mov NM, eax
cmp N, MC ; <20><20><> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
jb contin_mus ; <20><> <20><><EFBFBD>,
mov N, 0 ; <20><><EFBFBD><EFBFBD><EFBFBD> - <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>
contin_mus:
; mov NM, eax ; <20><><EFBFBD><EFBFBD><E0A0AD><EFBFBD><><20><EFBFBD> <20><><EFBFBD><EFBFBD><E7A0AD>
; <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><E0AEAB><EFBFBD><EFBFBD>
mov al, 20h
out 20h, al
; <20><><EFBFBD><EFBFBD><EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD>
pop ds
pop es
pop ebx
pop eax
iretd
; <20><><EFBFBD><E0A0A1><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2ADAE> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> IRQ8-IRQ15
irq8_15_handler:
push eax
mov al, 20h
out 0A1h, al
pop eax
iretd
; <20><><EFBFBD><E0A0A1>稪 IRQ1 - <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
irq1_handler:
push eax ; <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> -
push ebx ; <20><><EFBFBD><EFBFBD><E0A0AD><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD>
push es
push ds
in al, 60h ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><>-<2D><><EFBFBD> <20><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
cmp al, 0Eh ; <20><20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 祬 <20><><EFBFBD><EFBFBD><EFBFBD><E3A6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ja skip_translate ; <20><><EFBFBD><EFBFBD>, - <20><> <20><><EFBFBD><E0A0A1><EFBFBD><EBA2A0>
cmp al, 1 ; <20><20><><EFBFBD> ESC,
je esc_pressed ; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><E0A5A0><EFBFBD><EFBFBD><EFBFBD> <><E0A5A6>
mov bx, SEL_32bitDS ; <20><><EFBFBD><EFBFBD><EFBFBD>:
mov ds, bx ; DS:EBX - ⠡<><E2A0A1><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><E0A5A2><EFBFBD>
mov ebx, offset scan2ascii ; ᪠<>-<2D><><EFBFBD><EFBFBD> <20> ASCII
xlatb ; <20><EFBFBD><EFBFBD><E0A0A7><EFBFBD><EFBFBD><EFBFBD>
mov bx, SEL_flatDS
mov es, bx ; ES:EBX - <20><><EFBFBD><EFBFBD><EFBFBD><>
mov ebx, screen_addr ; <20><><EFBFBD><EFBFBD><20><> <20><><EFBFBD>
cmp al, 8 ; <20><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BkSpace
je bs_pressed ; <20><> ᮮ⢥<E1AEAE><E2A2A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><E0A0A1>
mov es:[ebx+0B8000h], al ; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E1ABA0><><E1A8AC><EFBFBD> <20><> <20><>
add dword ptr screen_addr, 2; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><20><> 2
jmp short skip_translate
bs_pressed: ; <20><><EFBFBD><EFBFBD><EFBFBD> BkSpace:
mov al,' ' ; <20><EFBFBD><EBA2A5><EFBFBD> <20><EFBFBD><E0AEA1>
sub ebx, 2 ; <20> <20><><EFBFBD><EFBFBD><20><EFBFBD><E0A5A4><EFBFBD><EFBFBD><><E1A8AC><EFBFBD><EFBFBD>
mov es:[ebx+0B8000h], al
mov screen_addr, ebx ; <20> <20><><EFBFBD><EFBFBD><E0A0AD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A5A4><><E1A8AC><EFBFBD><EFBFBD>,
; <20><><EFBFBD><>
skip_translate:
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A0A1><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
in al, 61h
or al, 80h
out 61h, al
; <20><><EFBFBD><E1ABA0> EOI <20><><EFBFBD><EFBFBD><EFBFBD><E0AEAB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD>
mov al, 20h
out 20h, al
; <20><><EFBFBD><EFBFBD><EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
pop ds
pop es
pop ebx
pop eax
iretd
; *******************
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ESC
esc_pressed:
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A0A1><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><E1ABA0> EOI <20> <20><><EFBFBD><EFBFBD><EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD>
in al, 61h
or al, 80h
out 61h, al
mov al, 20h
out 20h, al
cli
; <20><EFBFBD><E2AAAB><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
in al, 61h
and al, 0FCh
out 61h, al
pop ds
pop es
pop ebx
pop eax
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><E0A5A0><EFBFBD><EFBFBD><EFBFBD> <><E0A5A6>
db 0EAh
dd offset RM_return
dw SEL_16bitCS
PM_seg ends
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD>, <20><EFBFBD><E1AFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> 16-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> 16-<2D><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC> <20> <20><><EFBFBD>
; 32-<2D> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><>१ ᥫ<><E1A5AB><EFBFBD><EFBFBD><EFBFBD> SEL_32bitSS) <20> 32-<2D> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
Stack_seg segment para stack "STACK"
stack_start db 100h dup(?)
stack_l = $-stack_start ; <20><><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><E6A8A0><EFBFBD><EFBFBD>樨 ESP
Stack_seg ends
end start

446
Protect/PM_INT8.9/PM3.ASM Executable file
View File

@ -0,0 +1,446 @@
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E3A4A5><EFBFBD> <20><><EFBFBD> 2084/3
; <20><><EFBFBD><EFBFBD><EFBFBD><E0A5AD> <20><><EFBFBD>
; <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
; <20>ணࠬ<E0AEA3><E0A0AC>, <20><EFBFBD><E0AEA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><20> Protrcted Mode,
; <20><>९ணࠬ<E0AEA3><E0A0AC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0AEAB><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> <20> <20><EFBFBD><E0AEA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><EFBFBD><E0A0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᬥ饭<E1ACA5><E9A5AD> <20><> 32-<2D> <20><><EFBFBD><E2ADAE><><E1A5A3><EFBFBD><EFBFBD><EFBFBD> <20> 16-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A5AC><EFBFBD><EFBFBD><EFBFBD>
so equ small offset
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>. <20><> <20><EFBFBD> - <20><><EFBFBD><EFBFBD><E7A5AD> <20><><EFBFBD><E0A5AC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> (<28> <20><><EFBFBD>).
delay macro time
local ext,iter
push ecx
mov ecx,time
ext: push ecx
mov cx,5000 ;<3B><><EFBFBD> <20><><EFBFBD><EFBFBD><E7A5AD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><> <20><EFBFBD><E0AEA8><EFBFBD><EFBFBD><EFBFBD>⥫쭮<E2A5AB><ECADAE><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
iter: loop iter
pop ecx
loop ext
pop ecx
endm
.386p
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Real Mode, 16 <20><><EFBFBD>
RM_seg segment para public "CODE" use16
assume cs: RM_seg, ds: PM_seg, ss: Stack_seg
start:
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
mov ax, 3
int 10h
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2AEA2><EFBFBD><><E1A5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD>
push PM_seg
pop ds
; <20><EFBFBD><E0AEA2><EFBFBD><EFBFBD><EFBFBD> <><E0A5A6> (PM <20><><EFBFBD> <20><><EFBFBD>)
mov eax, cr0
test al, 1
jz no_V86
; <20>᫨ 㦥 <20> PM - ᮮ<><E1AEAE><EFBFBD><EFBFBD><EFBFBD> <20><> <20><EFBFBD><E8A8A1> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
mov dx, so v86_msg
err_exit:
mov ah, 9
int 21h
mov ah, 4Ch
int 21h
; <20><EFBFBD><E0AEA2><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Windows
no_V86:
mov ax, 1600h
int 2Fh
test al, al
jz no_Windows
; <20><20><><EFBFBD> Wondows - ᮮ<><E1AEAE><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
mov dx, so win_msg
jmp short err_exit
; *****************************************
; <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC>
no_Windows:
; <20><><EFBFBD><EFBFBD><EFBFBD><E1ABA8> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD><E1AFAE><EFBFBD><EFBFBD><E3A5AC> <20><><EFBFBD><EFBFBD><EFBFBD><E0A8AF>஢ ᥣ<><E1A5A3><EFBFBD>
xor eax, eax
mov ax, RM_seg ; <20><><EFBFBD><EFBFBD><EFBFBD> 16bitCS <20><EFBFBD> RM_seg
shl eax, 4
mov word ptr GDT_16bitCS+2, ax ; <20><><EFBFBD><EFBFBD> 15-0
shr eax, 16
mov byte ptr GDT_16bitCS+4, al ; <20><><EFBFBD><EFBFBD> 23-16
mov ax, PM_seg
shl eax, 4
mov word ptr GDT_32bitCS+2, ax ; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 32bit* <20><EFBFBD>
mov word ptr GDT_32bitSS+2, ax ; PM_seg
mov word ptr GDT_32bitDS+2, ax
shr eax, 16
mov byte ptr GDT_32bitCS+4, al
mov byte ptr GDT_32bitSS+4, al
mov byte ptr GDT_32bitDS+4, al
; <20><><EFBFBD><EFBFBD><EFBFBD><E1ABA8> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> GDT
xor eax, eax
mov ax, PM_seg
shl eax, 4
push eax
add eax, offset GDT
mov dword ptr gdtr+2, eax
; <20><><EFBFBD><EFBFBD><EFBFBD><E3A7A8> GDT
lgdt fword ptr gdtr
; <20><><EFBFBD><EFBFBD><EFBFBD><E1ABA8> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> IDT
pop eax
add eax, offset IDT
mov dword ptr idtr+2, eax
; <20><><EFBFBD><EFBFBD><EFBFBD><E3A7A8> IDT
lidt fword ptr idtr
; <20>.<2E>. ᮡ<><EFBFBD><E0A0A5><EFBFBD><><E0A0A1><EFBFBD><EFBFBD><EFBFBD> <20> 32-<2D> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> A20
in al, 70h
or al, 2
out 92h, al
; <20><EFBFBD><E2AAAB><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD>
cli
; <20><EFBFBD><E2AAAB><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3A5AC> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> (NMI)
in al, 70h
or al, 80h
out 70h, al
; <20><><EFBFBD><E0A5A9> <20> <20><><EFBFBD><EFBFBD><EFBFBD><E9A5AD><EFBFBD> <><E0A5A6>
mov eax, cr0
or al, 1
mov cr0, eax
; <20><><EFBFBD><EFBFBD><EFBFBD><E3A7A8> SEL_32bitCS <20> CS
db 66h ; <20><><EFBFBD><EFBFBD> <20><EFBFBD><EFBFBD><E0A0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><EFBFBD><EFA4AD><EFBFBD><EFBFBD>
db 0EAh ; <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
dd offset PM_entry
dw Sel_32bitCS
RM_return:
; <20><><EFBFBD><E0A5A9> <20> Real Mode
mov eax, cr0
and al, 0FEh
mov cr0, eax
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><E3A7A8> CS ॠ<><E0A5A0><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
db 0EAh
dw $+4
dw RM_seg
; <20><><EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><><E0A0A1><EFBFBD> <20><><EFBFBD> <><E0A5A6><EFBFBD>
mov ax, PM_seg
mov ds, ax
mov es, ax
mov ax, Stack_seg
mov bx, stack_l
mov ss, ax
mov sp, bx
; <20><><EFBFBD><EFBFBD><EFBFBD><E3A7A8> IDTR <20><><EFBFBD> RM
mov ax, PM_seg
mov ds, ax
lidt fword ptr idtr_real
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> NMI
in al, 70h
and al, 07Fh
out 70h, al
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD>
sti
; <20> <20><><EFBFBD><EFBFBD><EFBFBD>
mov ah, 4Ch
int 21h
RM_seg ends
; 32-<2D> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E1A5A3><EFBFBD><EFBFBD>
PM_seg segment para "CODE" use32
assume cs: PM_seg
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> GDT <20> IDT <20>.<2E>. <20><><EFBFBD><E0AEA2><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><><E0A0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><><E1A5A3><EFBFBD><EFBFBD><EFBFBD>
GDT label byte
db 8 dup(0)
; 32-x <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4-<2D> <20><><><E1A5A3><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> =0
GTD_flatDS db 0FFh,0FFh,0,0,0,10010010b,11001111b,0
; 16-<2D> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 64-<2D> <20><><><E1A5A3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> RM_seg
GDT_16bitCS db 0FFh,0FFh,0,0,0,10011010b,0,0
; 32-x <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4-<2D> <20><><><E1A5A3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> PM_seg
GDT_32bitCS db 0FFh,0FFh,0,0,0,10011010b,11001111b,0
; 32-x <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4-<2D> <20><><><E1A5A3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> PM_seg
GDT_32bitDS db 0FFh,0FFh,0,0,0,10010010b,11001111b,0
; 32-x <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4-<2D> <20><><><E1A5A3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> Stack_seg
GDT_32bitSS db 0FFh,0FFh,0,0,0,10010010b,11001111b,0
gdt_size = $-GDT
gdtr dw gdt_size-1 ; <20><EFBFBD><E0A5A4> GDT
dd ? ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> GDT
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E1A5AB><EFBFBD><EFBFBD>
SEL_flatDS equ 001000b
SEL_16bitCS equ 010000b
SEL_32bitCS equ 011000b
SEL_32bitDS equ 100000b
SEL_32bitSS equ 101000b
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0A8AF><20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> IDT
IDT label byte
; <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0A8AF><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> 0Eh - 32-<2D> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD>
; INT 00-07
dw 8 dup(so int_handler, SEL_32bitCS, 8E00h,0)
; INT 08(irq0)
; dw so irq0_7_handler,SEL_32bitCS,8E00h,0
dw so timer_handler,SEL_32bitCS,8E00h,0
; INT 09(irq1)
dw so irq1_handler,SEL_32bitCS,8E00h,0
; INT 0Ah-0Fh (IRQ2-IRQ8)
dw 6 dup(so irq0_7_handler,SEL_32bitCS,8E00h,0)
; INT 10h-6Fh
dw 97 dup(so int_handler,SEL_32bitCS,8E00h,0)
; INT 70h-78h (IRQ8-IRQ15)
dw 8 dup(so irq8_15_handler,SEL_32bitCS,8E00h,0)
; INT 79h-FFh
dw 135 dup(so int_handler,SEL_32bitCS,8E00h,0)
idt_size = $-IDT
idtr dw idt_size-1 ; <20><EFBFBD><E0A5A4> IDT
dd ? ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> IDT
; <20><><EFBFBD><EFBFBD><EFBFBD><E0A6A8><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD> IDTR <20><><EFBFBD> <><E0A5A6><EFBFBD>
idtr_real dw 3FFh,0,0
; <20><><EFBFBD><EFBFBD><EFBFBD><E9A5AD> <20><> <20><EFBFBD><E8A8A1><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
v86_msg db "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <><E0A5A6><EFBFBD> v86 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A5AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> PM$"
win_msg db "<22>ணࠬ<E0AEA3><E0A0AC> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> Windows$"
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><E0A5A2><EFBFBD> OE ᪠<>-<2D><><EFBFBD><EFBFBD><EFBFBD> <20> ASCII
scan2ascii db 0,1Bh,'1','2','3','4','5','6','7','8','9','0','-','=',8
db 0,'Q','W','E','R','T','Y','U','I','O','P','[',']',0
DB 0,'A','S','D','F','G','H','J','K','L',';',27h,'`',0 ; LShift
db '\','Z','X','C','V','B','N','M',',','.','/',0 ; RShift
db '0','0',' ' ; SP
screen_addr dd 0 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>
N dd 64 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> MUS
NM dd 1 ; <20><><EFBFBD><EFBFBD><20><><EFBFBD>⥫쭮<E2A5AB><ECADAE><EFBFBD>
; <20><><EFBFBD><20><><EFBFBD> <20><><EFBFBD><EFBFBD><E7A0AD>: 1-<2D> <20><>᫮ - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 2-<2D> - <20><><EFBFBD>⥫쭮<E2A5AB><ECADAE><EFBFBD>
MUS dw 1218,10, 767,10, 813,10, 912,10, 966,10, 912,30
dw 1218,10, 609,10, 678,10, 767,10, 813,10, 767,30
dw 912,10, 574,15, 609,5, 678,15, 767,5, 813,5
dw 767,5, 678,20, 574,10, 609,10, 678,10, 767,10
dw 678,10, 813,30, 1218,10, 767,10, 813,10, 912,10
dw 966,10, 912,30, 1218,10, 609,10, 678,10, 767,10
dw 813,10, 767,30, 912,10, 574,15, 609,5, 678,15
dw 767,5, 813,5, 767,5, 678,20, 574,10, 609,10
dw 678,10, 767,10, 678,10, 813,30, 0,2, 609,10
dw 609,10, 912,10, 724,10, 609,10, 609,5, 678,5
dw 724,5, 678,5, 574,15, 678,5, 678,10, 1024,10
dw 813,10, 678,10, 678,5, 767,5, 813,5, 724,5
dw 609,20, 678,5, 609,5, 574,5, 456,5, 342,5
dw 384,5, 406,5, 456,5, 456,20, 483,20, 678,5
dw 609,5, 574,5, 456,5, 342,5, 384,5, 406,5
dw 456,5, 456,10, 483,10, 456,20, 0,2, 456,5
dw 456,10, 483,10, 456,20, 0,30
;MC = ($-MUS)/4; Music Count - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD>
MC = 100
; <20><><20><EFBFBD> <20> 32-<2D> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E9A5AD><EFBFBD> <><E0A5A6>
PM_entry:
; <20><><EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD> 32-<2D> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><20> <20><><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD>
mov ax, SEL_flatDS
mov ds, ax
mov es, ax
mov ax, SEL_32bitSS
mov ebx, stack_l
mov ss, ax
mov esp, ebx
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD>
sti
; <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><>
jmp short $
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;! <20><><EFBFBD><E0A0A1><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> !
;! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><E0A5AA><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E1AAA0> <20><EFBFBD><E8A8A1> !
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
; <20><><EFBFBD><E0A0A1><20><><EFBFBD><EFBFBD><E7ADAE> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD>
int_handler:
iretd
; <20><><EFBFBD><E0A0A1><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2ADAE> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> IRQ0-IRQ7
irq0_7_handler:
push eax
mov al, 20h
out 20h, al
pop eax
iretd
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
; <20><><EFBFBD><E0A0A1><20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> <20><><><E2A0A9><EFBFBD><EFBFBD> (int8) !
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
timer_handler:
; <20><><EFBFBD><EFBFBD><E0A0AD><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD>
push eax
push ebx
push es
push ds
mov bx, SEL_32bitDS ; <20><><EFBFBD><EFBFBD><EFBFBD><E3A7A8><><E1A5A3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mov ds, bx
dec NM ; <20><><EFBFBD><EFBFBD><20><EFBFBD> <20><><EFBFBD><EFBFBD><E7A0AD>
mov eax, NM ; <20><20><> <20><><EFBFBD><E2A5AA>,
cmp eax, 0
jnz contin_mus ; <20><> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD>
; <20><EFBFBD><EBAAAB><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
in al, 61h
and al, 0FCh
out 61h, al
delay 1 ; <20><>
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E1ABA5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
inc N ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><>.
mov eax, N ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mov ebx, 4 ; ! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mul ebx ; <20><><EFBFBD><EFBFBD><E9A5AD> <20><><EFBFBD><EFBFBD>, <20><EFBFBD><E2ADAE>⥫쭮 <20><><EFBFBD> <20><><EFBFBD><EFBFBD>
add eax, offset MUS ; <20><><EFBFBD><EFBFBD><EFBFBD>
push eax ; <20><><EFBFBD><EFBFBD><E0A0AD><EFBFBD>
; xor eax, eax
mov ax, [eax] ; <20> AX - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E7A0AD>
mov ebx, eax ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2AEA2>
shr ebx, 8 ; <20><><EFBFBD><E0A0AC><20><><EFBFBD>
and ax, 00FFh ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
push eax
mov ax, 0B6h ; \
out 43h, ax ; _\outportb(0x43, 0xB6)
pop eax ; EAX = <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> & 0x00FF
out 42h, ax
xchg ax, bx ; ax = <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> >> 8
out 42h, ax
in al, 61h
or al, 03h
out 61h, al
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>⥫쭮<E2A5AB><ECADAE><EFBFBD>
pop ebx ; EBX = <20><><EFBFBD><EFBFBD><EFBFBD><><20><><EFBFBD><EFBFBD>
xor eax, eax
mov ax, word ptr [ebx+2] ; EAX = <20><><EFBFBD>⥫쭮<E2A5AB><ECADAE><EFBFBD>
mov NM, eax
cmp N, MC ; <20><20><> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
jb contin_mus ; <20><> <20><><EFBFBD>,
mov N, 0 ; <20><><EFBFBD><EFBFBD><EFBFBD> - <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>
contin_mus:
; mov NM, eax ; <20><><EFBFBD><EFBFBD><E0A0AD><EFBFBD><><20><EFBFBD> <20><><EFBFBD><EFBFBD><E7A0AD>
; <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><E0AEAB><EFBFBD><EFBFBD>
mov al, 20h
out 20h, al
; <20><><EFBFBD><EFBFBD><EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD>
pop ds
pop es
pop ebx
pop eax
iretd
; <20><><EFBFBD><E0A0A1><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2ADAE> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> IRQ8-IRQ15
irq8_15_handler:
push eax
mov al, 20h
out 0A1h, al
pop eax
iretd
; <20><><EFBFBD><E0A0A1>稪 IRQ1 - <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
irq1_handler:
push eax ; <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> -
push ebx ; <20><><EFBFBD><EFBFBD><E0A0AD><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD>
push edx
push es
push ds
in al, 60h ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><>-<2D><><EFBFBD> <20><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
; cmp al, 0Eh ; <20><20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 祬 <20><><EFBFBD><EFBFBD><EFBFBD><E3A6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
cmp al, 39h ; <20><20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 祬 <20><><EFBFBD><EFBFBD><EFBFBD><E3A6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ja skip_translate ; <20><><EFBFBD><EFBFBD>, - <20><> <20><><EFBFBD><E0A0A1><EFBFBD><EBA2A0>
cmp al, 1 ; <20><20><><EFBFBD> ESC,
je esc_pressed ; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><E0A5A0><EFBFBD><EFBFBD><EFBFBD> <><E0A5A6>
mov bx, SEL_32bitDS ; <20><><EFBFBD><EFBFBD><EFBFBD>:
mov ds, bx ; DS:EBX - ⠡<><E2A0A1><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><E0A5A2><EFBFBD>
mov ebx, offset scan2ascii ; ᪠<>-<2D><><EFBFBD><EFBFBD> <20> ASCII
xlatb ; <20><EFBFBD><EFBFBD><E0A0A7><EFBFBD><EFBFBD><EFBFBD>
mov bx, SEL_flatDS
mov es, bx ; ES:EBX - <20><><EFBFBD><EFBFBD><EFBFBD><>
mov ebx, screen_addr ; <20><><EFBFBD><EFBFBD><20><> <20><><EFBFBD>
cmp al, 8 ; <20><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BkSpace
je bs_pressed ; <20><> ᮮ⢥<E1AEAE><E2A2A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><E0A0A1>
cmp al, 0 ;
je skip_translate ;
mov es:[ebx+0B8000h], al ; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E1ABA0><><E1A8AC><EFBFBD> <20><> <20><>
add dword ptr screen_addr, 2; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><20><> 2
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mov ebx, screen_addr
shr ebx, 1
;! mov eax, ebx
;! mov ebx, 2
;!!! div ebx
; mov ebx, eax
; mov ebx, screen_addr
; inc ebx
xor edx, edx
xor eax, eax
mov dx, 03D4h ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0AEAB><EFBFBD><EFBFBD> CRT
mov al, 0Fh ; <20><><EFBFBD><EFBFBD><EFBFBD><E9A5AD> <20><><E0A5A3><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
mov ah, bl
out dx, ax
mov al, 0Eh ; <20> ॣ. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
mov ah, bh
out dx, ax
jmp short skip_translate
bs_pressed: ; <20><><EFBFBD><EFBFBD><EFBFBD> BkSpace:
mov al,' ' ; <20><EFBFBD><EBA2A5><EFBFBD> <20><EFBFBD><E0AEA1>
sub ebx, 2 ; <20> <20><><EFBFBD><EFBFBD><20><EFBFBD><E0A5A4><EFBFBD><EFBFBD><><E1A8AC><EFBFBD><EFBFBD>
mov es:[ebx+0B8000h], al
mov screen_addr, ebx ; <20> <20><><EFBFBD><EFBFBD><E0A0AD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A5A4><><E1A8AC><EFBFBD><EFBFBD>,
; <20><><EFBFBD><>
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
shr ebx, 1
;! mov eax, ebx
;! mov ebx, 2
;!!! div ebx
; mov ebx, eax
; mov ebx, screen_addr
; inc ebx
xor edx, edx
xor eax, eax
mov dx, 03D4h ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0AEAB><EFBFBD><EFBFBD> CRT
mov al, 0Fh ; <20><><EFBFBD><EFBFBD><EFBFBD><E9A5AD> <20><><E0A5A3><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
mov ah, bl
out dx, ax
mov al, 0Eh ; <20> ॣ. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
mov ah, bh
out dx, ax
skip_translate:
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A0A1><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
in al, 61h
or al, 80h
out 61h, al
; <20><><EFBFBD><E1ABA0> EOI <20><><EFBFBD><EFBFBD><EFBFBD><E0AEAB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD>
mov al, 20h
out 20h, al
; <20><><EFBFBD><EFBFBD><EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
pop ds
pop es
pop edx
pop ebx
pop eax
iretd
; *******************
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ESC
esc_pressed:
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A0A1><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><E1ABA0> EOI <20> <20><><EFBFBD><EFBFBD><EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD>
in al, 61h
or al, 80h
out 61h, al
mov al, 20h
out 20h, al
cli
; <20><EFBFBD><E2AAAB><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
in al, 61h
and al, 0FCh
out 61h, al
pop ds
pop es
pop edx
pop ebx
pop eax
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><E0A5A0><EFBFBD><EFBFBD><EFBFBD> <><E0A5A6>
db 0EAh
dd offset RM_return
dw SEL_16bitCS
PM_seg ends
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD>, <20><EFBFBD><E1AFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> 16-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> 16-<2D><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC> <20> <20><><EFBFBD>
; 32-<2D> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><>१ ᥫ<><E1A5AB><EFBFBD><EFBFBD><EFBFBD> SEL_32bitSS) <20> 32-<2D> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
Stack_seg segment para stack "STACK"
stack_start db 100h dup(?)
stack_l = $-stack_start ; <20><><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><E6A8A0><EFBFBD><EFBFBD>樨 ESP
Stack_seg ends
end start

30
Protect/PM_INT8.9/ReadMe.txt Executable file
View File

@ -0,0 +1,30 @@
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>, 2084/3
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
<09><><EFBFBD><EFBFBD><20> <20><><EFBFBD><EFBFBD><EFBFBD><E9ADAD><EFBFBD> <><E0A5A6>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> <20><><><E2A0A9><EFBFBD><EFBFBD>(int8) <20> <20><><EFBFBD>-
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(int9). <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>⭮-<2D><><EFBFBD><EFBFBD><E0AEA2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20>⮡ࠧ<E2AEA1><E0A0A7><EFBFBD> <20><>
<EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><E0A0AB><EFBFBD><20><EFBFBD><EBA2A5><EFBFBD> <20><> PC Speaker <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
<09><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><EFBFBD><E0AEA5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><> mkpm.bat.
<EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A0A6><EFBFBD><EFBFBD><EFBFBD> <20><><E4A0A9>
errmsg.
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>:
pm.asm - 䠩<> <20><EFBFBD><E1ADAE><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0AEA5><EFBFBD>
pm.exe - <20><><EFBFBD><EFBFBD><EFBFBD><E1AAA0><EFBFBD><EFBFBD><> <20><EFBFBD><E0AEA5><EFBFBD>
pm1.asm - 䠩<> <20><><EFBFBD> <20><><EFBFBD><20><EFBFBD><E0AEA5><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> ⮫쪮 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>
<09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1..+, BS.
pm2.asm - 䠩<> <20><><EFBFBD><20><><EFBFBD>ᨨ, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD><><E2A0A9><EFBFBD><EFBFBD>, <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD>
<09><>㪠.
pm3.asm - ࠡ<><E0A0A1><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0AEA5><EFBFBD>.
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><><E4A0A9><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mk.bat c <20><><EFBFBD><E0A0AC>஬ pm1, pm2,
pm3, ᮮ⢥<E1AEAE><E2A2A5><EFBFBD><E2A2A5><EFBFBD>.
nosound.exe - <20><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E7A0AD>, <20> <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD>४⭮<E0A5AA><><E0A0A1><EFBFBD>.
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E4A0A9> - 䠩<><E4A0A9> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.

BIN
Protect/PM_INT8.9/TASM.EXE Executable file

Binary file not shown.

BIN
Protect/PM_INT8.9/TLINK.EXE Executable file

Binary file not shown.

BIN
SCANCODE.COM Executable file

Binary file not shown.

3
asm/A.BAT Executable file
View File

@ -0,0 +1,3 @@
tasm.exe vga.asm
tlink.exe /t/x vga.obj
vga.com

1
asm/CMD.BAT Executable file
View File

@ -0,0 +1 @@
%SystemRoot%\system32\cmd.exe

BIN
asm/DPMILOAD.EXE Executable file

Binary file not shown.

BIN
asm/DPMIMEM.DLL Executable file

Binary file not shown.

BIN
asm/P_2.EXE Executable file

Binary file not shown.

9
asm/P_2.MAP Executable file
View File

@ -0,0 +1,9 @@
Start Stop Length Name Class
00000H 000BFH 000C0H _TEXT CODE
000C0H 000D8H 00019H _DATA DATA
000E0H 001DFH 00100H STACK STACK
Program entry point at 0000:0000

BIN
asm/P_2.OBJ Executable file

Binary file not shown.

1
asm/T.bat Executable file
View File

@ -0,0 +1 @@
td.exe vga.com

BIN
asm/TASM.EXE Executable file

Binary file not shown.

BIN
asm/TD.EXE Executable file

Binary file not shown.

BIN
asm/TLINK.EXE Executable file

Binary file not shown.

2
asm/file.txt Executable file
View File

@ -0,0 +1,2 @@
Hello World sss dddd
dfs

BIN
asm/file2.txt Executable file

Binary file not shown.

139
asm/p_2.asm Executable file
View File

@ -0,0 +1,139 @@
MASM
MODEL small
STACK 256
.data
buffer dw 1
Handle dw 0
Handle2 dw 0
filename db 'file.txt', 0
filename2 db 'file2.txt', 0
.code
ASSUME ds:@data,es:@data
main:
mov ax,@data
mov ds,ax
mov es,0b:8000h
;------------------<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>-------------
mov di,30h
xor cx,cx ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
mov bx,2 ;<3B><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mov dx,1 ;<3B><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>. <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mov dx,offset filename ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
mov ah,3dh ;<3B><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DOS
int 21h ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
mov [Handle], ax ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
mov bx,ax
jnc read ;<3B><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
jc ex ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
read: mov ah, 3Fh
mov cx,1
mov dx, buffer
int 21h
cmp ax, cx ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> EOF
jne eof ; <20><><EFBFBD><EFBFBD> EOF, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
push ax
push bx
mov bx,dx
mov al,[bx]
mov [di],ax
pop bx
pop ax
inc di
; cmp [buffer], 13 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 13-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
; je read
; cmp [buffer], 10 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
; je exit
jmp read
eof: mov bx, Handle ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
mov ah, 3Eh
int 21h
cld
sub di,30h
mov ax,di
mov cl,al
mov ah,al
mov al,' '
mov di,30h
jmp first
ex: jmp exit
first:
mov al,'$'
cmp [di],al
mov al,' '
je write;exit
cmp [di],al
je found
inc di
loop first
faild: jmp write
found: mov bx,di
inc di
cmp [di],al
je found2
jmp first
found2:
lea si,[di+1]
mov ah, cl
rep movsb
dec ah
mov cl,ah
mov di,bx
jmp found
write: ; xor cx,cx ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
; mov bx,1 ;<3B><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
; mov dx,1
; mov dx,offset filename2 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
; mov cx,5
; mov ah,5bh ;<3B><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DOS
; int 21h ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
; mov [Handle2], ax ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
; mov bx,ax
xor cx,cx ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
mov bx,0002h ;<3B><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mov dx,1 ;<3B><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>. <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mov dx,offset filename2 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
mov al,0001h
mov ah,3dh ;<3B><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DOS
int 21h ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
mov [Handle2], ax ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
mov bx,ax
mov di,30h
; mov bx,
xor ax,ax
mov ah, 40h
mov cx,30
mov dx, di
int 21h
mov ah,0dh
int 21h
cmp ax, cx ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> EOF
mov bx, Handle2 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
mov ah, 3Eh
int 21h
jc exit ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
exit:
mov ax,4c00h
int 21h
end main