Program of the automatic functioning(working) the computer through device, connected to serial ports COM1, COM2, COM3 or COM4

How do you do, expensive user! You greet the program AUTOROBOT, which is intended that computer in operating system Windows, realized the automatic work with parallery port COM and LPT, without direct participation of the user. This can be useful, for functioning(working) parallers device, connected to computer through these ports. Presently, your computer begin, work in automatic mode. Our program beforehand, writes information in íàñòðîå÷íûé file AUTOMULT.INI, but then depending on that, what given in he is found, such actions she and will execute. Given program is modified with ïðåæäíåé äîñîâñêîé to similar version (the files ROBOT.BAS and ROBOT2.BAS), for following compiling and linkings of the performed module, in ambience of the programming Microsoft Visual Basic, versions 6.0 for Windows Presently, your computer will begin, work in automatic mode. Our program beforehand, writes information in file AUTOMULT.INI, but then depending on that, what given in he is found, such actions she and will execute. If on one or another reason, you want to come out of program, that in operation in system Windows, press the combination hot keys + , but then close the window of the program cursor mouse.

ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð //øüòþûû úþòþðûõ üû óñõððõü: MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ ôòþø÷ýþóþ ñøüòþûð, //òûø÷ýþóþ, þò óúð÷ðýýûõ. JNE FunctObr101 //ñûø ò úþôõ þôýø, òþûüúþ ýòø ÿøúñõûû. JE FunctObr101 //ýð÷õ, õñûø ýðøûøñü ø ôðóóøõ. //õÿõðü, ò ÷ðòøñøüþñòø þò òþóþ, úðúøõ úþôû //þôõðöðòñÿ ò ýòþü ôðùûõ, òðúøõ ôõùñòòøÿ ø //óôõò òûÿþûýÿòü ýðøð ÿðþóððüüð. //ñððñðòûòðõüûù úþô - ÿøúñõûû ASCII þò 28 ôþ 127//ø //ò 128 ôþ 255. ×ðñòü ÿõðòþù ø òòþððÿ ÿþûþòøýð //ðùòþòþù òðñûøöû, ø÷ ÷ýðúþóõýõððòþðð òøôõþðôðÿòõðð // ôõøøôððòþðþò ROM BIOS. FunctObr101: MOV AL, 28 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt101 //ñûø þý, õñòü. JNE FunctObr102 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt101: MOV EAX, 00h MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL INTERRUP1 //NT 1h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr102: MOV AL, 29 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt102 //ñûø þý, õñòü. JNE FunctObr103 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt102: MOV EAX, 00h MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL INTERRUP2 //NT 2h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr103: MOV AL, 30 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt103 //ñûø þý, õñòü. JNE FunctObr104 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt103: MOV EAX, 00h MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL INTERRUP3 //NT 3h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr104: MOV AL, 31 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt104 //ñûø þý, õñòü. JNE FunctObr105 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt104: MOV EAX, 00h MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL INTERRUP4 //NT 4h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr105: MOV AL, 32 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt105 //ñûø þý, õñòü. JNE FunctObr106 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt105: MOV EAX, 00h MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL INTERRUP5 //NT 5h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr106: MOV AL, 33 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt106 //ñûø þý, õñòü. JNE FunctObr107 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt106: MOV EAX, 00h MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL INTERRUP6 //NT 6h //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr107: MOV AL, 34 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt107 //ñûø þý, õñòü. JNE FunctObr108 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt107: MOV EAX, 00h MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL INTERRUP7 //NT 7h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr108: MOV AL, 35 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt108 //ñûø þý, õñòü. JNE FunctObr109 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt108: MOV EAX, 0101h MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL FONTS //NT 10h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr109: MOV AL, 36 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt109 //ñûø þý, õñòü. JNE FunctObr110 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt109: MOV EAX, 0202h MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL FONTS //NT 10h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr110: MOV AL, 37 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt110 //ñûø þý, õñòü. JNE FunctObr111 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt110: MOV EAX, 0303h MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL FONTS //NT 10h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr111: MOV AL, 38 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt111 //ñûø þý, õñòü. JNE FunctObr112 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt111: MOV EAX, 0404h MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL FONTS //NT 10h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr112: MOV AL, 39 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt112 //ñûø þý, õñòü. JNE FunctObr113 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt112: MOV EAX, 0505h MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL FONTS //NT 10h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr113: MOV AL, 40 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt113 //ñûø þý, õñòü. JNE FunctObr114 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt113: MOV EAX, 0606h MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL FONTS //NT 10h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr114: MOV AL, 41 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt114 //ñûø þý, õñòü. JNE FunctObr115 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt114: MOV AH, 00h //0h - Óñòðýþòúð òøôõþðõöøüð MOV AL, 12h //2h - óððôø÷õñúøù 640 x 480 MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL FONTS //NT 10h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr115: MOV AL, 42 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt115 //ñûø þý, õñòü. JNE FunctObr116 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt115: MOV EAX, 00h MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL POWER //NT 11h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr116: MOV AL, 43 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt116 //ñûø þý, õñòü. JNE FunctObr117 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt116: MOV EAX, 00h MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL MEMORY //NT 12h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr117: MOV AL, 44 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt117 //ñûø þý, õñòü. JNE FunctObr118 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt117: MOV EAX, 00h MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL ReadDisk //NT 13h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr118: MOV AL, 45 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt118 //ñûø þý, õñòü. JNE FunctObr119 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt118: MOV EAX, 00h MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL ReadPort //NT 14h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr119: MOV AL, 46 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt119 //ñûø þý, õñòü. JNE FunctObr120 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt119: MOV EAX, 0000h MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL MOUSE //NT 15h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr120: MOV AL, 47 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt120 //ñûø þý, õñòü. JNE FunctObr121 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt120: MOV EAX, 00h MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL PRINT //NT 17h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr121: MOV AL, 48 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt121 //ñûø þý, õñòü. JNE FunctObr122 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt121: MOV EAX, 00h MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL CMOS //NT 1Ah //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr122: MOV AL, 49 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt122 //ñûø þý, õñòü. JNE FunctObr123 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt122: MOV EAX, 00h MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL BREAK_ //NT 1Bh //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr123: MOV AL, 50 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt123 //ñûø þý, õñòü. JNE FunctObr124 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt123: MOV EAX, 00h MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL MELODY //NT 1Ch //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr124: MOV AL, 51 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt124 //ñûø þý, õñòü. JNE FunctObr125 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt124: MOV EAX, 00h MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL GRFPARM //NT 1Dh //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr125: MOV AL, 52 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt125 //ñûø þý, õñòü. JNE FunctObr126 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt125: MOV EAX, 00h MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL FLOPPY2 //NT 1Eh //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr126: MOV AL, 53 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt126 //ñûø þý, õñòü. JNE FunctObr133 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt126: MOV EAX, 00h MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL SCREEN2 //NT 1Fh //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr133: MOV AL, 60 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt133 //ñûø þý, õñòü. JNE FunctObr195 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt133: MOV EAX, OFFSET Sym MOV DS, EAX // PUSH 0 // PUSH OFFSET Mes2 // PUSH OFFSET Mes2 // PUSH 0 // CALL _imp__MessageBoxA@16 MOV EAX, 0B800h //ôðõñ òøôõþñóôõðð MOV ES, EAX MOV EBX, OFFSET Mes2 //ôðõñ ñòðþúø MOV EDI, 12*80*2+33*2 // öõýòðõ ýúððýð MOV ECX, 0038H //es2Len //ûøýð ñòðþúø REP MOVSB //ûòþô ýð ýúððý ADD EDX, OFFSET Offs //ôòøó ÿþ ýúððýó INC EDX //þôøôøúðöøÿ úþýñòðýòû, ò ÿðþóððüüõ //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr195: MOV AL, 122 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt195 //ñûø þý, õñòü. JNE FunctObr196 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt195: MOV EAX, 0101h MOV EBX, 01h MOV ECX, 0512 MOV EDX, 0001h CALL MOUSE //NT 15h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr196: MOV AL, 123 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt196 //ñûø þý, õñòü. JNE FunctObr197 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt196: MOV EAX, 0202h MOV EBX, 01h MOV ECX, 0512 MOV EDX, 0001h CALL MOUSE //NT 15h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr197: MOV AL, 124 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt197 //ñûø þý, õñòü. JNE FunctObr198 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt197: MOV EAX, 0303 MOV EBX, 01h MOV ECX, 0512 MOV EDX, 0001h CALL MOUSE //NT 15h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr198: MOV AL, 125 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt198 //ñûø þý, õñòü. JNE FunctObr199 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt198: MOV EAX, 0404 MOV EBX, 01h MOV ECX, 0512 MOV EDX, 0001h CALL MOUSE //NT 15h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr199: MOV AL, 126 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt199 //ñûø þý, õñòü. JNE FunctObr200 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt199: MOV EAX, 0505 MOV EBX, 01h MOV ECX, 0512 MOV EDX, 0001h CALL MOUSE //NT 15h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr200: MOV AL, 227 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt200 //ñûø þý, õñòü. JNE FunctObr201 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt200: MOV EAX, 0606h MOV EBX, 01h MOV ECX, 0512 MOV EDX, 0001h CALL MOUSE //NT 15h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr201: MOV AL, 228 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt201 //ñûø þý, õñòü. JNE FunctObr202 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt201: MOV EAX, 0707h MOV EBX, 01h MOV ECX, 0512 MOV EDX, 0001h CALL FONTS //NT 10h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr202: MOV AL, 229 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt202 //ñûø þý, õñòü. JNE FunctObr1 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt202: MOV EAX, 0808h MOV EBX, 01h MOV ECX, 0512 MOV EDX, 0001h CALL FONTS //NT 10h //ðõðûòðýøõ ROM BIOS FunctObr1: MOV AL, 128 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt1 //ñûø þý, õñòü. JNE FunctObr2 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt1: MOV EAX, 0909h MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL FONTS //NT 10h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr2: MOV AL, 129 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt2 //ñûø þý, õñòü. JNE FunctObr3 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt2: MOV EAX, 1010h MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL FONTS //NT 10h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr3: MOV AL, 130 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt3 //ñûø þý, õñòü. JNE FunctObr4 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt3: MOV EAX, 1111h MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL FONTS //NT 10h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr4: MOV AL, 131 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt4 //ñûø þý, õñòü. JNE FunctObr5 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt4: MOV EAX, 1212h MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL FONTS //NT 10h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr5: MOV AL, 132 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt5 //ñûø þý, õñòü. JNE FunctObr6 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt5: MOV EAX, 1313 MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL FONTS //NT 10h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr6: MOV AL, 133 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt6 //ñûø þý, õñòü. JNE FunctObr7 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt6: MOV EAX, 1414h MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL FONTS //NT 10h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr7: MOV AL, 134 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt7 //ñûø þý, õñòü. JNE FunctObr8 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt7: MOV EAX, 1515 MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL FONTS //NT 10h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr8: MOV AL, 135 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt8 //ñûø þý, õñòü. JNE FunctObr9 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt8: MOV EAX, 0000h MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL ReadPort //NT 14h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr9: MOV AL, 136 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt9 //ñûø þý, õñòü. JNE FunctObr10 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt9: MOV EAX, 0101h MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL ReadPort //NT 14h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr10: MOV AL, 137 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt10 //ñûø þý, õñòü. JNE FunctObr11 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt10: MOV EAX, 0202h MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL ReadPort //NT 14h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr11: MOV AL, 138 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt11 //ñûø þý, õñòü. JNE FunctObr12 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt11: MOV EAX, 0303 MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL ReadPort //NT 14h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr12: MOV AL, 139 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt12 //ñûø þý, õñòü. JNE FunctObr13 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt12: MOV EAX, 0404h MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL ReadPort //NT 14h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr13: MOV AL, 140 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt13 //ñûø þý, õñòü. JNE FunctObr14 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt13: MOV EAX, 0505 MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL ReadPort //NT 14h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr14: MOV AL, 141 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt14 //ñûø þý, õñòü. JNE FunctObr15 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt14: MOV AH, 00h //0h - Óñòðýþòúð òøôõþðõöøüð MOV AL, 12h //2h - óððôø÷õñúøù 640 x 480 MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL FONTS //NT 10h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr15: MOV AL, 142 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt15 //ñûø þý, õñòü. JNE FunctObr16 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt15: MOV EAX, 0101h MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL POWER //NT 11h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr16: MOV AL, 143 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt16 //ñûø þý, õñòü. JNE FunctObr17 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt16: MOV EAX, 00h MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL MEMORY //NT 12h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr17: MOV AL, 144 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt17 //ñûø þý, õñòü. JNE FunctObr18 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt17: MOV EAX, 00h MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL ReadDisk //NT 13h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr18: MOV AL, 145 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt18 //ñûø þý, õñòü. JNE FunctObr19 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt18: MOV EAX, 00h MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL ReadPort //NT 14h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr19: MOV AL, 146 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt19 //ñûø þý, õñòü. JNE FunctObr20 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt19: MOV EAX, 00h MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL MOUSE //NT 15h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr20: MOV AL, 147 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt20 //ñûø þý, õñòü. JNE FunctObr21 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt20: MOV EAX, 00h MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL PRINT //NT 17h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr21: MOV AL, 148 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt21 //ñûø þý, õñòü. JNE FunctObr22 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt21: MOV EAX, 0000h MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL MOUSE //NT 15h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr22: MOV AL, 149 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt22 //ñûø þý, õñòü. JNE FunctObr23 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt22: MOV EAX, 0101 MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL MOUSE //NT 15h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr23: MOV AL, 150 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt23 //ñûø þý, õñòü. JNE FunctObr24 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt23: MOV EAX, 0202 MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL MOUSE //NT 15h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr24: MOV AL, 151 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt24 //ñûø þý, õñòü. JNE FunctObr25 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt24: MOV EAX, 0303 MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL MOUSE //NT 15h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr25: MOV AL, 152 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt25 //ñûø þý, õñòü. JNE FunctObr26 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt25: MOV EAX, 0404h MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL MOUSE //NT 15h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr26: MOV AL, 153 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt26 //ñûø þý, õñòü. JNE FunctObr33 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt26: MOV EAX, 0505 MOV EBX, 01h MOV ECX, 0512 MOV EDX, Str2 CALL MOUSE //NT 15h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr33: MOV AL, 60 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt33 //ñûø þý, õñòü. JNE FunctObr95 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. FunctInt33: MOV EAX, OFFSET Sym MOV DS,EAX // PUSH 0 // PUSH OFFSET Mes2 // PUSH OFFSET Mes2 // PUSH 0 // CALL _imp__MessageBoxA@16 MOV EAX, 0B800h //ôðõñ òøôõþñóôõðð MOV ES,EAX MOV EBX, OFFSET Mes2 //ôðõñ ñòðþúø MOV EDI, 12*80*2+33*2 // öõýòðõ ýúððýð MOV ECX, 0038H //es2Len //ûøýð ñòðþúø REP MOVSB //ûòþô ýð ýúððý ADD EDX, OFFSET Offs //ôòøó ÿþ ýúððýó INC EDX //þôøôøúðöøÿ úþýñòðýòû, ò ÿðþóððüüõ //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr95: MOV AL, 222 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt95 //ñûø þý, õñòü. JNE FunctObr96 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt95: MOV EAX, 0606 MOV EBX, 01h MOV ECX, 0512 MOV EDX, 0001h CALL MOUSE //NT 15h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr96: MOV AL, 223 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt96 //ñûø þý, õñòü. JNE FunctObr97 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt96: MOV EAX, 0000h MOV EBX, 01h MOV ECX, 0512 MOV EDX, 0001h CALL ReadPort //NT 14h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr97: MOV AL, 224 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt97 //ñûø þý, õñòü. JNE FunctObr98 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt97: MOV AH, 0101 MOV EBX, 01h MOV ECX, 0512 MOV EDX, 0001h CALL ReadPort //NT 14h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr98: MOV AL, 225 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt98 //ñûø þý, õñòü. JNE FunctObr99 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt98: MOV EAX, 0202h MOV EBX, 01h MOV ECX, 0512 MOV EDX, 0001h CALL ReadPort //NT 14h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr99: MOV AL, 226 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt99 //ñûø þý, õñòü. JNE FunctObr100 //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt99: MOV EAX, 0303 MOV EBX, 01h MOV ECX, 0512 MOV EDX, 0001h CALL ReadPort //NT 14h //ðõðûòðýøõ ROM BIOS //óúöøÿ ÿþøñúð ò ñòðþúõ ÷ðôðýýþóþ ñøüòþûð. FunctObr100: MOV AL, 227 //þô ñøüòþûð, úþòþðûù üû øùõü. PUSH DS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð POP ES //ð ðôðõñ ñòðþúø. CLD //þøñú òÿõð¸ô ÿþ ñòðþúõ. MOV ESI, Str2 //S:ESI --> ñòðþúð øñòþ÷ýøúð MOV EDI, Bufin //S:EDI --> ñòðþúð ÿðø¸üýøúð MOV ECX, 0512 //ûøýð ñòðþúø ñøüòþûþò ôðùûõ. REPNE SCASB //þøñú ÿõðòþóþ òðúþóþ ÿøúñõûð ò ñòðþúõ. JE FunctInt100 //ñûø þý, õñòü. JNE FilExit //ñûø òðúþóþ ñøüòþûð ò ñòðþúõ ýõò. //ûÿþûýõýøõ ÿþ ôðýýþüó úþôó, ñþþòòõòñòòóþùõù ôóúöøø. FunctInt100: MOV EAX, 0404h MOV EBX, 01h MOV ECX, 0512 MOV EDX, 0001h CALL ReadPort //NT 14h //ðõðûòðýøõ ROM BIOS //þ þúþý÷ðýøø ððñþòû ñ ôðùûþü þñòþñþôøòü, //ðýÿòûù ðõóøñòð. FilExit: POP DS //occòðýþòøü òðñûøöó ÿðððüõòðþò ôøñúõòû MOV EBX, OFFSET dpt2 //eóüõýò òðñûøöû //OV BYTE PTR ES:[DI + 3], 2 //oô ðð÷üõðð ñõúòþðð //còþñþôøòü òñõ ððýõõõ ÷ðýÿòûõ ðõóøñòðû POPF //þñòðýþòøòü ñõóüõýòýûù ðôðõñ ýð÷ðûð ÿðþóððüüû MOV EAX, 0000h MOV DS,EAX //õðõùòø ýð ýþòûù öøúû òûÿþûýõýøÿ ÿðþóððüüû JMP Start //Êþýõö þñýþòýþù ÿðþóððüüû AUTO_IOS ENDP //ûþú ñøñòõüýûõ ÿþôÿðþóððüü üûðôøõù òðñûøöû ÿðõðûòðýøù ñ ðôðõñðüø //NT 00h - 07h ø 10h - 20h, ÷ðóðóöðõüûõ ñøñòõüýþù ÿðþóððüüþù ò //ÿõððòøòýóþ ÿðüÿòü ÿþ ÷ðôðýýûü ðôðõñðü, ôûÿ òûÿþûýõýøÿ ñþþòòõòñòòóþùøõ //óýúöøù ò þÿõððöøþýýþù ñøñòõüõ. //øñòõüýþù ÿðþóððüüð INT 0h INTRRUP0: db 0, 0 db 0, 0 db 0, 0 db 0, 0 db 0, 0 db 0, 0 db 0, 0 db 0, 0 db 0, 0 RET //ûùòø ø÷ þñððñþò÷øúð ÿðõðûòðýøù //ntr00h = $-Intr00h //þýõö ÿþôÿðþóððüüû þñððñþò÷øúð INT 0h //øñòõüýðÿ ÿðþóððüüð INT 1h INTERRUP1: CLI //ðÿðõòøòü ÿðõðûòðýøÿ dw 0 //UB BYTE PTR CS:[21A8h],4D //UB WORD PTR [BP+DI+06],EAX PUSH EDI //ORD PTR [BP-10] PUSH ESI MOV EAX, 00B8h PUSH SS PUSH EAX ADD ESP,08 PUSH DS PUSH CS //ORD PTR [BP+06] MOV EAX,EBP PUSH SS PUSH EAX ADD ESP,08 PUSH ECX PUSH DS POP ES MOV EAX,EBP PUSH EAX ADD ESP,08 SUB AH,AH MOV EAX,EBP OR EAX,EAX MOV ES,[BP-10] MOV EBX,ESI MOV EBX,EAX AND AL,02 CMP AL,01 SBB AL,AL INC AL MOV EBP, 01 MOV ESP, 5Ch MOV AL, 01 MOV DL, 5Eh PUSH EAX PUSH EBX ADD ESP,06 CMP EBP,2Eh MOV EDX, 004Fh CMP EBP, 2Eh PUSH EBP MOV EAX,00B8h PUSH EAX CMP EBP, 01 CMP EBP, 14 ADC BH,BH MOV EAX,EBP PUSH EAX ADD ESP,04 MOV EAX,EBP PUSH EAX PUSH EDX ADD ESP,04 MOV EBP,06 MOV ES,[BP-10] MOV EBX,ESI MOV EBX,2Eh CMP EDI,57 PUSH EBP PUSH ESI ADD ESP,04 INC EAX MOV EAX,022Eh ADD ESI,EAX CMP EBP,06 INC EBP MOV EBP,04 //EC EBP,04 OR EAX,EAX STI //ð÷ðõøøòü ÿðõðûòðýøÿ RET //ðòõðøøòü öøúû ðõ÷øôõýòýþóþ þñððñþò÷øúð //ntr01hLen = $ - Intr01h //þýõö ÿþôÿðþóððüüû þñððñþò÷øúð INT 1h //øñòõüýðÿ ÿðþóððüüð INT 2h INTERRUP2: CLI //OV ESI,WORD PTR [BP-80] CMP ESI,14 MOV EDX, 444Fh //USH WORD PTR ES:[2E7Ah] //USH WORD PTR ES:[782Eh] ADD ESP,04 //USH WORD PTR [BP-08] POP EBX CMP ESI,14 MOV EAX,012Eh DEC ESI //OV EBX,WORD PTR ES:[722Eh] //OV EDI,WORD PTR [BX+0786] //OV EBX,WORD PTR ES:[722Eh] //OV EDI,WORD PTR [BX+0790] PUSH ESI PUSH EDI //USH WORD PTR [BX+021Eh] MOV EAX,EBP PUSH EAX MOV EAX, 1099 CBW PUSH EAX ADD ESP,8Bh INC ESI //EG BYTE PTR [BP+5Fh] CLD REP STOSB PUSH EDI PUSH ESI //OV ESI,WORD PTR [1097] MOV EAX, 404Fh MOV EBX, 02B4h MOV ECX, 334Fh //OV EBX,WORD PTR ES:[722Eh] PUSH DS //USH WORD PTR [BX+076Ch] //USH WORD PTR [BX+078Eh] NOP PUSH CS ADD ESP,06 MOV EDX, 444Fh MOV EAX, 782Eh MOV EDX, 222Eh MOV EAX,EDX //R EAX,WORD PTR ES:[782Eh] XOR EAX,EAX PUSH EAX POP EBX //OV WORD PTR [BP-02],EAX //OV EDI,WORD PTR [BP-80] //OV ESI,WORD PTR [BP+40] CMP EDI,14 CMP EDI,01 SBB EAX,EAX NEG EAX PUSH EAX PUSH EDX //USH WORD PTR [BP+06] PUSH EDX ADD ESP,08 MOV EDX, 575Ch //OV AL,BYTE PTR [SI+01] IN AL,50 //OV AL,BYTE PTR [BX+SI] //DD BYTE PTR [BX+SI],AL STI //ð÷ðõøøòü ÿðõðûòðýøÿ RET //ðòõðøøòü öøúû ðõ÷øôõýòýþóþ þñððñþò÷øúð //NTERRUP2 ENDP //ntr02hLen = $ - Intr02h //þýõö ÿþôÿðþóððüüû þñððñþò÷øúð INT 2h //øñòõüýðÿ ÿðþóððüüð INT 3h INTERRUP3: CLI //ðÿðõòøòü ÿðõðûòðýøÿ INC ESP POP ESI PUSH EAX PUSH EBX ADD ESP,06 //USH WORD PTR [BP+08] //USH WORD PTR [BP+04] ADD ESP,04 PUSH DS PUSH EDI ADD ESP,04 MOV EDX, 102Eh CMP EDI,14 MOV EDX, 444Fh //USH WORD PTR ES:[227Ah] //USH WORD PTR ES:[782Eh] ADD ESP,04 //ND BYTE PTR [BP-02],DH POP EBX CMP EDI,01 //DD BYTE PTR [BX+SI],AL MOV EDX, 334Fh //OV EBX,WORD PTR ES:[722Eh] //OV ESI,WORD PTR [BX+0786] MOV EDX, 334Fh //OV EBX,WORD PTR ES:[722Eh] //OV ESI,WORD PTR [BX+0790] PUSH EDI PUSH ESI //USH WORD PTR [BX+021Eh] //USH WORD PTR [BP+06] MOV EBX, 1099 CBW PUSH EAX ADD ESP,5Eh POP EDI PUSH ESI PUSH EBP MOV EBP, 000Ch //OV EAX,WORD PTR [1044] //OV WORD PTR [BP-0Ah],EAX //EA EAX,WORD PTR [BP-10] PUSH EAX //EA EAX,WORD PTR [BP-12] PUSH EBX NOP PUSH CS ADD ESP,04 MOV EDX, 344Fh //OV EBX,WORD PTR ES:[722Eh] PUSH DS //USH WORD PTR [BX+076Ch] //USH WORD PTR [BX+078Eh] NOP PUSH CS ADD ESP,06 MOV EDX, 444Fh MOV EAX, 782Eh //ND BYTE PTR [BX+SI],AH //OV WORD PTR ES:[270Ah],EDX MOV EAX,EDX //R EAX,WORD PTR ES:[782Eh] XOR EAX,EAX PUSH ESP POP EBX //OV WORD PTR [BP-0Eh],EAX MOV EDX, 404Fh //DD BYTE PTR [BX+SI],AL STI //ð÷ðõøøòü ÿðõðûòðýøÿ RET //ðòõðøøòü öøúû ðõ÷øôõýòýþóþ þñððñþò÷øúð //NTERRUP3 ENDP //ntr03hLen = $ - Intr03h //þýõö ÿþôÿðþóððüüû þñððñþò÷øúð INT 3h //øñòõüýðÿ ÿðþóððüüð INT 4h INTERRUP4: CLI //ðÿðõòøòü ÿðõðûòðýøÿ // CMP WORD PTR [BP+0Eh],01 SBB EAX,EAX NEG EAX PUSH EAX PUSH EDX // CMP WORD PTR [BP+0Eh],04 // MOV EAX, 042Eh MOV EAX, 062Eh PUSH EAX ADD ESP,08 PUSH DS // LEA EAX,WORD PTR [BP-62] PUSH SS PUSH EAX // ADD ESP,08 // MOV EDX,WORD PTR [BX+2Eh] // MOV WORD PTR [BP-02],EDX MOV ESI,EAX // ADC AL,01 INC ESI // CMP BYTE PTR [BX+57],06 // LEA EAX,WORD PTR [BP-00B8h] PUSH SS PUSH EAX MOV ES,[BP-02] // ADD ESP,06 // PUSH ESI // PUSH SS PUSH EAX ADD ESP,08 DB 0, 0, 0, 0 DB 0, 0, 0, 0 // ADD BYTE PTR CS:[BX+SI],AL // ADD BYTE PTR [BX+SI],AL // ADD BYTE PTR [BX+SI],AL // ADD BYTE PTR [BX+SI],AL // ADD BYTE PTR [BX+SI],AL ADD EAX,880D INC ESI STC // MOV EBX,WORD PTR [BP-0Ah] SUB AH,AH // MOV AL,BYTE PTR [BX+5Eh] PUSH EAX PUSH EDX ADD ESP,06 // MOV EDX, 424Fh // CMP WORD PTR [BP+0Eh],04 MOV EAX, 042Eh MOV EAX, 062Eh PUSH EAX // LEA ESP,WORD PTR [BX+SI] // PUSH SS PUSH EAX PUSH EDI // ADD ESP,0Ch STI //ð÷ðõøøòü ÿðõðûòðýøÿ RET //ðòõðøøòü öøúû ðõ÷øôõýòýþóþ þñððñþò÷øúð //NTERRUP4 ENDP //ntr04hLen = $ - Intr04h //þýõö ÿþôÿðþóððüüû þñððñþò÷øúð INT 4h //øñòõüýðÿ ÿðþóððüüð INT 5h INTERRUP5: CLI //ðÿðõòøòü ÿðõðûòðýøÿ DB 0, 0, 0, 0, 0, 0 // PUSH WORD PTR [BP+0Ch] PUSH EDI // PUSH SS PUSH EAX ADD ESP,08 PUSH EDI // PUSH SS PUSH EAX ADD ESP,06 // LEA EAX,WORD PTR [BP-00] PUSH EAX PUSH EDI ADD ESP,04 // MOV ES,[BP-02] // MOV BYTE PTR ES:[BX],2Eh // CMP BYTE PTR [BX+57],06 // PUSH ESI ADD ESP,04 INC EAX MOV EAX,022Eh ADD ESI,EAX // INC WORD PTR [BP-0Ch] // MOV EAX,WORD PTR [BP+06] // OR EAX,EAX // MOV ESI,WORD PTR [BP+0Eh] MOV EDX, 444Fh // PUSH WORD PTR ES:[2E78h] ADD ESP,04 // POP EBX CMP ESI,04 MOV EDX, 373Eh // MOV EBX,WORD PTR [722Eh] // MOV EDX, 373Eh // MOV EDI,WORD PTR [BX+078Ch] CMP ESI,04 MOV EAX,ESI MOV EAX,062Eh PUSH EAX PUSH EDI // LEA EAX,WORD PTR [BP-62] PUSH EAX MOV AL, 10 CBW PUSH EAX ADD ESP,8Bh INC ESI POP ESI POP EDI PUSH EDI // PUSH ESI // PUSH WORD PTR [BP+04] STI //ð÷ðõøøòü ÿðõðûòðýøÿ RET //ðòõðøøòü öøúû ðõ÷øôõýòýþóþ þñððñþò÷øúð //ntr05hLen = $ - Intr05h //þýõö ÿþôÿðþóððüüû þñððñþò÷øúð INT 5h //øñòõüýðÿ ÿðþóððüüð INT 6h INTERRUP6: CLI //ðÿðõòøòü ÿðõðûòðýøÿ // POP EBX MOV EDX, 404Fh // LEA EAX,WORD PTR [BP-06] PUSH EAX // PUSH EAX NOP PUSH CS ADD ESP,04 // PUSH CS PUSH EAX POP EBX XOR EAX,EAX PUSH EDI PUSH ESI DEC EBP // MOV EDI,EAX // MOV AL,BYTE PTR [SI+57] SUB AH,AH PUSH EAX PUSH EDX PUSH EDI NOP PUSH CS ADD ESP,06 OR EAX,EAX MOV EDI,96 XOR ESI,ESI PUSH DS PUSH EDI ADD ESP,04 INC EAX ADD EDI,EAX INC ESI MOV AL, 10 CBW CMP EAX,ESI // PUSH WORD PTR [BX+SI+04] dw 0 // ADD BYTE PTR [BX+SI],AL OR EAX,EAX // NOP PUSH CS POP EBX // ADD ESP,04 // CMP WORD PTR [DI-3Ch],00 // MOV ECX,WORD PTR [DI-3Ch] PUSH EDI DB 35, 6, 0, 248 //ND EAX,F8h ADD ESP,04 // CMP WORD PTR [DI-99],9Fh NOP PUSH CS // MOV EDI,960Ah XOR ESI,ESI PUSH DS PUSH EDI ADD ESP,04 INC EAX ADD EDI,EAX INC ESI // CBW CMP EAX,ESI // MOV WORD PTR [DI-04],EAX PUSH DS PUSH EDI STI //ð÷ðõøøòü ÿðõðûòðýøÿ RET //ðòõðøøòü öøúû ðõ÷øôõýòýþóþ þñððñþò÷øúð //NTERRUP6 ENDP //ntr06hLen = $ - Intr06h //þýõö ÿþôÿðþóððüüû þñððñþò÷øúð INT 6h //øñòõüýðÿ ÿðþóððüüð INT 7h INTERRUP7: CLI //ðÿðõòøòü ÿðõðûòðýøÿ PUSH DS PUSH ESI PUSH EBX PUSH EDX ADD ESP,1Ah // MOV EBX,WORD PTR [317Eh] // PUSH WORD PTR [DI+10] // ADD BYTE PTR [BX+SI],AL SUB AH,AH // CMP WORD PTR [DI-38],00 // PUSH WORD PTR [BX+SI+04] // PUSH WORD PTR [BX+SI] // MOV EDX, 424Fh // CMP WORD PTR [DI-38],00 PUSH EBP PUSH EDI PUSH DS PUSH EDX ADD ESP,08 MOV EDX, 443Eh // PUSH DS // PUSH WORD PTR [BX+078Eh] NOP PUSH CS ADD ESP,06 MOV EDX, 444Fh // MOV WORD PTR ES:[2E7Ah],EDX MOV EAX,EDX // PUSH ECX POP EBX // CMP WORD PTR [DI-38],00 PUSH EBX PUSH EDX PUSH ESI PUSH ESP ADD ESP,08 PUSH EBX PUSH EDX MOV EDX, 443Eh // PUSH DS // PUSH WORD PTR [BP+06] PUSH ESI ADD ESP,0Ch MOV EDX, 444Fh // PUSH ECX PUSH EAX MOV EBX, 334Fh // PUSH DS // ADD ESP,0Ch MOV EDX, 444Fh // PUSH WORD PTR ES:[782Eh] PUSH EAX PUSH EBX PUSH ECX PUSH EDX // STI //ð÷ðõøøòü ÿðõðûòðýøÿ RET //ðòõðøøòü öøúû ðõ÷øôõýòýþóþ þñððñþò÷øúð //NTERRUP7 ENDP //ntr07hLen = $ - Intr07h //þýõö ÿþôÿðþóððüüû þñððñþò÷øúð INT 7h //øñòõüýðÿ ÿðþóððüüð INT 10h Intr10h: //ð÷ðûþ þñýþòýþù ÿðþóððüüû FONTS: CLI //ðÿðõòøòü ÿðõðûòðýøÿ PUSHF //oxpaýøòü ôûaóø ôûÿ úþüðýôû IRET //ðþöõôóðð IOS øýøöøðûø÷ðöøø ÿðþóððüüû ÿðõðûòðýøÿ 10Í MOV EDX,1E10h MOV ESP,08 MOV ECX,EDI MOV EBX,ESI //þúð, ò ÿðþóððüüõ ýõ þÿðõôõûõýû //ýð÷õýøÿ ôûðóþò ñòððøøõ ðõóøñòðþò //H øEAX ÷ðýÿòûõ ÿðþöõññþðþü, øõ //ñÿþûü÷þòðòü ò úþüðýôðõ ýõûü÷ÿ. MOV EDX, OFFSET IntVect4 TEST EDX, 10h INC EDX //õðõô òõü, úðú ýð÷ðòü ððñÿþ÷ýðòðýøõ //ýð÷õýøù ÷ðýÿòûõ ôûðóþò ñòððøøõ //õóøñòðþò AH øEAX, ÿðþø÷òõñòø òõðñþòúó //õúòþðð ÿðõðûòðýøÿ INT 10h ø ÷ðýõñòø õóþ // ñþþòòõòñòòóþùøù ðôðõñ ñõóüõýòýþóþ //óôõðð þÿõððòøòýþù ÿðüÿòø. MOV ES,EDX //ðñòðþõü ýð ýõóþ ES XOR EDI,EDI //S:DI -> ýð÷ðûþ òûôõûõýýþóþ ñûþúð MOV ECX, 2 // - ÷øñûþ ñðùòþò ò ñõóüõýòõ MOV BL, 10h //õúòþð ÿðõðûòðýøÿ ÷ðýþñøüûù ò ñóôõð CLD //ðÿþûýÿòü òÿõð¸ô REP STOSB //ðÿþûýõýøõ //ðÿþûýøòü òòþðþù ñðùò ñøóüõýòð, ôûÿ úþýòðþûÿ //OV ES:[DI], 0 //ð÷ðòü ÿðþöõôóðó ððñÿþ÷ýðòðýøÿ ôóýúöøø //ðñþòû ñ úþýòðþû¸ðþü òøôõþñøñòõüû ÿþ ÷ðÿðþñó //þûü÷þòðòõûÿ (òû÷þò ýòþù ñøñòõüýþù ÿðþóððüüû //÷ ñóôõðð òðñûøöû ðõ÷øôõýòð BIOS, ýðõþôÿùõóþñÿ // ñð÷þòþù ÷ðñòø þÿõððòøòýþù ÿðüÿòø, ÷õðõ÷ //ðõðûòðýøõ INT 10h) PUSH EAX //ðôõùñòòþòðòü ðõóøñòðEAX //ûÿ ôðûüýõùøøõ ôõùñòòøù POP EBX //õóøñòðEBX þñòðòøòü //òþñþôýûü ôûÿ ôøúñðöøø //úð÷ðýøõ ýð üýøüûù ôûðó AH øûøEAX, //ðø þòñóòñòòøø ÿñýþù ôøúñðöøø óÿððòûÿùõù //ðþóððüüû ÿðþöõññþðð AAS //þôñ÷øòðõü, ÷òþ ÷ðýÿòûù ôûðó AH øûøEAX //óùõñòòóõò ò ûþñþü ñûó÷ðõ, úðú-ñû òþ //øñûûþ. AAA STOSB //ðøñòþøòü ÷ýð÷õýøõ ôûðóó //òððøõóþ ðõóøñòðð //ðøôðòü ýòþüó ôûðóó ñòðòóñ üýþöõñòòõýýþóþ //øñûð c þÿðõôõûÿõüþù ÿðþø÷òþûüýþù ÿõðõüõýýþù. CMP AH, AL CMPSB SCASB PUSH EAX //þððõúöøÿ óÿððòûÿþùõóþ ðõóøñòðð //õýõððöøÿ ñòððøøõ ðõóøñòðþò AH øEAX ôûÿ //þñûõôóþùõóþ ððñÿþ÷ýðòðýøÿ, øõ ÿðþø÷òþûüýþù //õðõüõýýþù ñ ÿþûó÷õýøõü þñúõúòøòýþóþ ðõ÷óûüòðòð. TEST AH, AL CMC //þôóþòþòøòü ñóôõð ú ýþòþüó ÷ðÿþûýõýøþ //ÿðõôõûøòü úðúðÿ ôóýúöøÿ ñøñòõüýþù ÿðþóððüüû //ûûð ÷ðòðõñþòðýð ÿþûü÷þòðòõûõü, òüõñòø ñ òû÷þòþü //ðõðûòðýøÿ INT 10h CMP AH, 00h JE GraphSc0 CMP AH, 01h JE GraphSc1 CMP AH, 02h JE GraphSc2 CMP AH, 03h JE GraphSc3 CMP AH, 04h JE GraphSc4 CMP AH, 05h JE GraphSc5 CMP AH, 06h JE GraphSc6 CMP AH, 07h JE GraphSc7 CMP AH, 08h JE GraphSc8 CMP AH, 09h JE GraphSc9 CMP AH, 0Ah JE GraphSc10 CMP AH, 0Bh JE GraphSc11 CMP AH, 0Ch JE GraphSc12 CMP AH, 0Dh JE GraphSc13 CMP AH, 0Eh JE GraphSc14 CMP AH, 0Fh JE GraphSc15 CMP AH, 10h JE GraphSc16 CMP AH, 11h JE GraphSc17 CMP AH, 12h JE GraphSc18 CMP AH, 13h JE GraphSc19 CMP AH, 14h JE GraphSc20 CMP AH, 15h JE GraphSc21 //óýúöøø ððñþòû òøôõþðôðÿòõðð ðõðûø÷óõüûõ ñøñòõüýþù //þôÿðþóððüüþù INT 10h GraphSc0: //ðóðó÷úð ÿþôÿðþóððüüû øýøöøðûø÷ðöøø òõúñòþòûõ ø //ððôø÷õñúøõ ðõöøüþò òøôõþôððùòõðð. //ALL Graph //RAPH: //õýõððöøÿ ñòððøøõ ðõóøñòðþò AH øEAX ôûÿ //þñûõôóþùõóþ ððñÿþ÷ýðòðýøÿ, øõ ÿðþø÷òþûüýþù //õðõüõýýþù ñ ÿþûó÷õýøõü þñúõúòøòýþóþ ðõ÷óûüòðòð. TEST AH, AL CMC //þôóþòþòøòü ñóôõð ú ýþòþüó ÷ðÿþûýõýøþ //ÿðõôõûøòü úðúðÿ ÿþôôóýúöøÿ ñøñòõüýþù ÿðþóððüüû //ûûð ÷ðòðõñþòðýð ÿþûü÷þòðòõûõü, òüõñòø ñ òû÷þòþü //óýúöøø 0h ÿðõðûòðýøÿ INT 10h CMP AL, 00h JE Scr0 CMP AL, 01h JE Scr1 CMP AL, 02h JE Scr2 CMP AL, 03h JE Scr3 CMP AL, 04h JE Scr4 CMP AL, 05h JE Scr5 CMP AL, 06h JE Scr6 CMP AL, 07h JE Scr7 CMP AL, 08h JE Scr8 CMP AL, 09h JE Scr9 CMP AL, 0Ah JE Scr10 CMP AL, 0Bh JE Scr11 CMP AL, 0Ch JE Scr12 CMP AL, 0Dh JE Scr13 CMP AL, 0Eh JE Scr14 CMP AL, 0Fh JE Scr15 CMP AL, 10h JE Scr16 CMP AL, 11h JE Scr17 CMP AL, 12h JE Scr18 CMP AL, 13h JE Scr19 //ñòðýþòúð ðð÷ûø÷ýûõ òõúñòþòûõ ø //ððôø÷õñúøõ ðõöøüþò, ÿðø ñþþòòõòñòòóþùõü //ûðóõ ÷ðýÿòþñòø ðõóøñòðð AL. //õúñòþòþù ðõöøü 40 x 25 ñøüòþûþò, 2 öòõòð Scr0: //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð. MOV EAX, 0B800h MOV DS,EAX //õðõô òõü, úðú ýð÷ðòü ÷ðóðó÷úó ýóöýþù //øñòõüýþù ÿðþóððüüû ø÷ úþýòðþû¸ðð //ððôø÷õñúþóþ ðôðÿòõðð ÿðþø÷òõñòø òõðñþòúó //þþòòõòñòòóþùõóþ òõúòþðð ÿðõðûòðýøÿ, ñ úþòþðûü //óôõü ððñþòðòü ø ÷ðýõñòø õóþ ò ñþþòòõòñòòóþùøù //ôðõñ ñõóüõýòýþóþ ñóôõðð þÿõððòøòýþù ÿðüÿòø. //1h - Ôûðó òõúòþðð ÷ðÿððøøòðõüþóþ þôýþ, ø÷ //ð¸õ þñýþòýûõ òøôõþðõöøüþò. MOV ES,EDX //ðñòðþõü ýð ýõóþ ES XOR EDI,EDI //S:DI -> ýð÷ðûþ òûôõûõýýþóþ ñûþúð MOV ECX, 2 // - ÷øñûþ ñðùòþò ò ñõóüõýòõ MOV EBX, 01h //õúòþð ÿðõðûòðýøÿ ÷ðýþñøüûù ò ñóôõð. PUSH EBX //ðôøúñøðþòðòü ÷ýð÷õýøõ ôûðóðEBX ø //þõððýøòü õóþ ôûÿ ôðûüýõùøøõ ôõùñòòøù. CLD //ðÿþûýÿòü òÿõð¸ô. REP STOSB //ðÿþûýõýøõ. //ðÿþûýøòü òòþðþù ñðùò ñøóüõýòð, ôûÿ úþýòðþûÿ //OV BYTE PTR ES:[DI], 0 //ðóðó÷øòü ýóöýóþ ñøñòõüýóþ ÿþôÿðþóððüüó ø÷ //øúðþñõõüû úþýòðþû¸ðð òøôõþðôðÿòõðð. MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 236 //N AL,EDX //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 0 //õóøñòð üðñúø öòõòð db 236 //N AL,EDX //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ MOV AL, 0 //õóøñòð Öòõòð db 236 //N AL,EDX //ñòðýþòúð öòõòð //õÿþñðõôñòòõýýðÿ ÷ðóðó÷úð ñøñòõüýþù ÿðþóððüüû //÷ ýðúþÿøòõûÿ úþýòðþû¸ðð óððôø÷õñúþóþ ðôðÿòõðð //õûøúþü, òðú úðú óñòðýþòûõý ýóöýûù ôûðó, ñóôõò //ûÿþûýÿòüñÿ ñþþòòõòñòòóþøðÿ ÿþôÿðþóððüüð. MOV ECX, OFFSET SizeBuff //ðúñ. ðð÷üõð ÷ðóðóöðõüþù //ðþóððüüû - 64 úñ. OUT 10h, AL // Âþñüüøðø÷ýðÿ úþüñøýðöøÿ ôûÿ OUT 10h, AL // øøýû, ñòÿ÷ûòðþùõù òøôõþ ðôðÿòõð OUT 10h, AL // ñ ôøñÿûõõü (üþýøòþðþü) OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //ðôøúñøðþòðòü ò ÿðüÿòø //ðþ÷øòðýýûõ ÿðððüõòðû POP DS //ñòþñþôøòü ñþõððý¸ýýûõ POP ES //õóøñòðû //ðôðòü ÿðððüõòðû òõðòøúðûüýþóþ ñüõùõýøÿ //ð ôøñÿûõõ, õñûø òðõñóõòüñÿ. Ýòþ ôõûðõòñÿ //ûÿ òþóþ, ÷òþ ýòøü ñüõùõýøõü øýøöøøðþòðòü //õûðòõûüýûù òõúñòþòþù øûø óððôø÷õñúøù ðõöøü // ÷ðôðýýûüø ÿðððüõòððüø. Íóöýûù ðõöøü //þñòøóðõòüñÿ ÷ð ñ÷¸ò øñúðöõýøÿ þòþñððöõýøÿ //ôýþóþ ø÷ òð¸õ þñýþòýûõ ðõöøüþò. // ýðøõü ñûó÷ðõ, þòþñððöõýøõ òøôõþðõöøüð 80 x 50, //ðñòÿóøòðõòüñÿ ò þòþñððöõýøõ 40 x 25 ÿøúñõûõù. //óýúöøÿ - 01h þôýþóþ ø÷ òð¸õ þñýþòýûõ ðõöøüþò. MOV AH, 01h //óýúöøÿ 01h Âøôõþ ôððùòõðð. MOV ES,EAX //þòþóþ öøúûð ñ òøôõþñóôõðþü. MOV EAX, 0110h //þòòõðöôõýøõ þñýþòýþù ôóýúöøø. PUSH EAX //ðôøúñøðþòðòü ÷ýð÷õýøõ ôûðóðEAX. POP ECX //ýð÷õýøõ ôûðóðECX õù¸ ýõ þÿðõôõûõýþ. MOV AL, 00h //þô ÿðþø÷òþûüýþóþ ÿøúñõûð. MOV EAX, 0 //úð÷ðýøõ òõðõýõóþ ûõòþóþ óóûð ýð ôøñÿûõõ. MOV EBX, (8 * 8) + (80 * 50) //ðððüõòðû òøôõþðõöøüð. MOV EBX,EAX //ñòðýþòúð ñòÿ÷ø ðõóøñòðþò. MOV ECX, 8000h //ð÷üõð ñóôõðð òøôõþÿðüÿòø (80 * 50 * 2) MOV CH, 01h //õòûù òõðõýøù óóþû MOV CL, 80h //ððòûù òõðõýøù óóþû SBB CL, 40h //òýÿòü þò óúð÷ðýýþóþ ÷ýð÷õýøÿ ÿþ óþðø÷. MOV DH, 50h //õòûù ýøöýøù óóþû SUB DH, 25h //òýÿòü þò óúð÷ðýýþóþ ÷ýð÷õýøÿ ÿþ òõðò. MOV DL, 80h //ððòûù ýøöýøù óóþû AAA //ñ¸, óöõ þÿðõôõûõýþ úðú ýðôþ. MOV EBX, (8 * 8) + (40 * 25) //þòûõ ÿðððüõòðû òøôõþðõöøüð. MOV EBX,EAX //þòòþðýðÿ óñòðýþòúð ñòÿ÷ø ðõóøñòðþò. DEC EDX //þòûõ ÷ýð÷õýøÿ óñòðýðòûøòðþòüñÿ òEDX NEG EDX //ñûþòýðÿ ôøúñðöøÿ òþ ôûðóõ ðõóøñòððEDX MOV ECX, 2000h //þòûù ðð÷üõð ñóôõðð òøôõþÿðüÿòø (40 * 25 * 2) REPE CMPSB //ððòýõýøõ ÿþûó÷õýýûõ ÿðððüõòðþò òøôõþðõöøüð. //úðýøðþòðòü òøôõþñóôõð þòþñððöõýøÿ ÿøúñõûþò ñ öõûüþ //þûó÷õýøÿ, ÿþñûõôóþùõóþ õñòõñòòõýýþóþ øûø øñúðö¸ýýþóþ //òþñððöõýøÿ ÿøúñõûþò ýð ôøñÿûõõ ò öõûðõüþü òøôõþðõöøüõ. MOV ECX, 9999h //úð÷ðòõûü ýð úþýõö ÿðþóððüüû ò ñóôõðõ. CMP CL, 0 //ð÷üõð òõûð ÿðþóððüüû ò ñóôõðõ ýõ ø÷òõñòõý. XOR CH, CH //õÿõðüECX = CL ôûøýð ñóôõðð òøôõþÿðüÿòø. MOV EDI, 0000h //S:DI -> õòþñò ò PSP MOV EBX, 0110h //úð÷ðýøõ ýð ðôðõñ òõûð ñøñòõüýþù MOV EBX,ESI //ðþóððüüû ò òøôõþñóôõðõ ÿþ ñþþòòõò- MOV ESI, 0110h //òòóþùøü òõúòþððü: //1h - òõúòþð ðõöøüð //0h - òõúòþð òøôõþ ðôðÿòõðð XCHG AL, AH //òÿ÷ü ôûðóþò ðõóøñòðþò. AAA //þððõúöøÿ ôûðóþò ðõóøñòðð. MOV EAX,ESI //þúððòøòü òõûþ òøôõþñóôõðð MOV EAX, (8000) / 4 //þ ýóöýþóþ ðð÷üõðð. CMC //þôóþòþòøòü ñóôõð ú ýþòþüó ÷ðÿþûýõýøþ CLD //þúððùðòü úðöôûù òòþðþù ñðùò ò òøôõþ ñóôõðõ. REPE SCASB //úðýøðþòðòü òøôõþñóôõð ôþ ÿþûýþóþ ðõ÷óûüòðòð. AAD //öõ ýõ ÿðõôÿðøýøüðòü, ýø úðúøõ ÿþÿûòþú ú ø÷úÿòøþ. //ðÿøñðòü ýòø ÿðððüõòðû ø üðññøò ñðüþóþ òøôõþñóôõðð // þÿõððòøòýóþ ÿðüÿòü, ôûÿ ôðûüýõûüøõóþ øñÿþûü÷þòðýøÿ // òõúóùõü òøôõþðõöøüõ. PUSH ECX //ð÷üõð ñóôõðð òøôõþÿðüÿòø ø÷òõñòõý. POP EDX //ðýýûõ, õóþ ñþôõðöøüþóþ ÿðþø÷òþûüýûõ. MOV EAX, 0110h //1h - ôóýúöøÿ//10h - òõúòþð ôþñòóÿð. MOV AL, 00h //0h - Íþüõð ôóýúöøø óñòðýþòûõýýþóþ ðõö. MOV EBX, (8 * 8) + (40 * 25) //ðððüõòðû òøôõþðõöøüð. MOV ECX, 2000h //ð÷üõð ñóôõðð òøôõþÿðüÿòø (40 * 25 * 2) MOV EAX, 0 //úð÷ðýøõ òõðõýõóþ ûõòþóþ óóûð ýð ôøñÿûõõ. MOV EBX,EDX //òÿ÷ðòü ÿðððüõòðû ñ ñûþúþü ôðýýûõ. DEC EDX //þòûõ ÷ýð÷õýøÿ óñòðýðòûøòðþòüñÿ òEDX NEG EDX //ñûþòýðÿ ôøúñðöøÿ òþ ôûðóõ ðõóøñòððEDX CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //þññòòõýýþ, ôøúñðöøÿ ò ÿðüÿòø. //ñòðýþòøòü þòòõòýûù ñøóýðû þñððñþòðýýþóþ //÷þñððöõýøÿ ò ÿðüÿòü ÷ýðúþóõýõððòþðð //ððôø÷õñúþóþ ðôðÿòõðð. PUSH DS //ðñòðþøòü ñõóüõýòýûõ ðõóøñòðû POP ES //ð þñûðñòü ôðýýûõ. MOV ES,EAX MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 236 //N AL,EDX //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 0 //õóøñòð üðñúø öòõòð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ MOV AL, 0 //õóøñòð Öòõòð db 238 //UT EDX, AL //ñòðýþòúð öòõòð //÷øñòøòü ñðùò (òñõ ÿøúñõûû ñðùòð) //OV BYTE PTR ES:[BX], 0 //ðÿððòûõýøõ þòòõòýþóþ ñøóýðûð ò ÷ýðúþóõýõððòþð //ððôø÷õñúþóþ ðôðÿòõðð. // ýð÷ðûõ, ÿðþòõðøòü ôþñòóÿ ú òøôõþ ðôðÿòõðó OUT 10h, AL MOV ECX, OFFSET SizeBuff //ðúñ. ðð÷üõð ÷ðóðóöðõüþù //ðþóððüüû - 64 úñ. //þñûðòü ýð ýõóþ òõúóùõþ ñðùòþòóþ üðñúó IN AL, 10h // Âþñüüøðø÷ýðÿ úþüñøýðöøÿ ôûÿ IN AL, 10h // øøýû, ñòÿ÷ûòðþùõù òøôõþ ðôðÿòõð IN AL, 10h // ñ ôøñÿûõõü (üþýøòþðþü) IN AL, 10h // IN AL, 10h // IN AL, 10h // IN AL, 10h // IN AL, 10h // CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //ðôøúñøðþòðòü ò ÿðüÿòø //ðþ÷øòðýýûõ ÿðððüõòðû //ûòþô ÿøúñõûþò þòþñððöõýøÿ ýð ôøñÿûõù, //ðø ÷ðôðýýþü ðõöøüõ. INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EBX, 0000h //ð÷ðòü ñ ñðùòð 0 ÿþ ASCII MOV ECX, 0002h //òð ñðùòð. Îôøý úþôøðóõò ñðüþ //òþñððöõýøõ, ð ôðóóþù õóþ öòõò. //ûòõñòø ñðùò ÿøúñõûþò ýð ôøñÿûõù. MOV EDI, 0000h //ýð÷õýøÿ þòþñððöõýøÿ ýð MOV ESI, 0000h //øñÿûõõ ÿðþø÷òþûüýû. //OV BYTE PTR ES:[BX], 00Fh INC EBX // ñûõôóþùõüó ñðùòó CLD //þôóþòþòøòüñÿ ú òûòþôó REP MOVSW //ûòþô ÿøúñõûþò ýð ôøñÿûõù, ò ððñøøðõýýþü //õöøüõ. //ð òûõþô ø÷ ÿþôÿðþóððüüû JMP QuitSub //õúñòþòþù ðõöøü 80 x 50 ñøüòþûþò, 16 öòõòþò Scr1: //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð MOV EAX, 0B800h MOV DS,EAX //õðõô òõü, úðú ýð÷ðòü ÷ðóðó÷úó ýóöýþù //øñòõüýþù ÿðþóððüüû ø÷ úþýòðþû¸ðð //ððôø÷õñúþóþ ðôðÿòõðð ÿðþø÷òõñòø òõðñþòúó //þþòòõòñòòóþùõóþ òõúòþðð ÿðõðûòðýøÿ, ñ úþòþðûü //óôõü ððñþòðòü ø ÷ðýõñòø õóþ ò ñþþòòõòñòòóþùøù //ôðõñ ñõóüõýòýþóþ ñóôõðð þÿõððòøòýþù ÿðüÿòø. //1h - Ôûðó òõúòþðð ÷ðÿððøøòðõüþóþ þôýþ, ø÷ //ð¸õ þñýþòýûõ òøôõþðõöøüþò. MOV ES,EDX //ðñòðþõü ýð ýõóþ ES XOR EDI,EDI //S:DI -> ýð÷ðûþ òûôõûõýýþóþ ñûþúð MOV ECX, 2 // - ÷øñûþ ñðùòþò ò ñõóüõýòõ MOV EBX, 01h //õúòþð ÿðõðûòðýøÿ ÷ðýþñøüûù ò ñóôõð. PUSH EBX //ðôøúñøðþòðòü ÷ýð÷õýøõ ôûðóðEBX ø //þõððýøòü õóþ ôûÿ ôðûüýõùøøõ ôõùñòòøù. CLD //ðÿþûýÿòü òÿõð¸ô. REP STOSB //ðÿþûýõýøõ. //ðÿþûýøòü òòþðþù ñðùò ñøóüõýòð, ôûÿ úþýòðþûÿ //OV BYTE PTR ES:[DI], 0 //ðóðó÷øòü ýóöýóþ ñøñòõüýóþ ÿþôÿðþóððüüó ø÷ //øúðþñõõüû úþýòðþû¸ðð òøôõþðôðÿòõðð. MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 236 //N AL,EDX //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 0 //õóøñòð üðñúø öòõòð db 236 //N AL,EDX //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ MOV AL, 0 //õóøñòð Öòõòð db 236 //N AL,EDX //ñòðýþòúð öòõòð //õÿþñðõôñòòõýýðÿ ÷ðóðó÷úð ñøñòõüýþù ÿðþóððüüû //÷ ýðúþÿøòõûÿ úþýòðþû¸ðð óððôø÷õñúþóþ ðôðÿòõðð //õûøúþü, òðú úðú óñòðýþòûõý ýóöýûù ôûðó, ñóôõò //ûÿþûýÿòüñÿ ñþþòòõòñòòóþøðÿ ÿþôÿðþóððüüð. MOV ECX, OFFSET SizeBuff //ðúñ. ðð÷üõð ÷ðóðóöðõüþù //ðþóððüüû - 64 úñ. db 238 //UT 10h, AL // Âþñüüøðø÷ýðÿ úþüñøýðöøÿ ôûÿ OUT 10h, AL // øøýû, ñòÿ÷ûòðþùõù òøôõþ ðôðÿòõð OUT 10h, AL // ñ ôøñÿûõõü (üþýøòþðþü) OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //ðôøúñøðþòðòü ò ÿðüÿòø //ðþ÷øòðýýûõ ÿðððüõòðû POP DS //ñòþñþôøòü ñþõððý¸ýýûõ POP ES //õóøñòðû //ðôðòü ÿðððüõòðû òõðòøúðûüýþóþ ñüõùõýøÿ //ð ôøñÿûõõ, õñûø òðõñóõòüñÿ. Ýòþ ôõûðõòñÿ //ûÿ òþóþ, ÷òþ ýòøü ñüõùõýøõü øýøöøøðþòðòü //õûðòõûüýûù òõúñòþòþù øûø óððôø÷õñúøù ðõöøü // ÷ðôðýýûüø ÿðððüõòððüø. Íóöýûù ðõöøü //þñòøóðõòüñÿ ÷ð ñ÷¸ò øñúðöõýøÿ þòþñððöõýøÿ //ôýþóþ ø÷ òð¸õ þñýþòýûõ ðõöøüþò. // ýðøõü ñûó÷ðõ, ýòþ þòþñððöõýøõ òøôõþðõöøüð 80 x 50 //óýúöøÿ - 01h þôýþóþ ø÷ òð¸õ þñýþòýûõ ðõöøüþò. MOV AH, 01h //óýúöøÿ 01h Âøôõþ ôððùòõðð. MOV ES,EAX //þòþóþ öøúûð ñ òøôõþñóôõðþü. MOV EAX, 0110h //þòòõðöôõýøõ þñýþòýþù ôóýúöøø. PUSH EAX //ðôøúñøðþòðòü ÷ýð÷õýøõ ôûðóðEAX. POP ECX //ýð÷õýøõ ôûðóðECX õù¸ ýõ þÿðõôõûõýþ. MOV AL, 00h //þô ÿðþø÷òþûüýþóþ ÿøúñõûð. MOV EAX, 0 //úð÷ðýøõ òõðõýõóþ ûõòþóþ óóûð ýð ôøñÿûõõ. MOV EBX, (8 * 8) + (80 * 50) //ðððüõòðû òøôõþðõöøüð. MOV EBX,EAX //ñòðýþòúð ñòÿ÷ø ðõóøñòðþò. MOV CH, 01h //õòûù òõðõýøù óóþû MOV CL, 80h //ððòûù òõðõýøù óóþû MOV DH, 50h //õòûù ýøöýøù óóþû MOV DL, 80h //ððòûù ýøöýøù óóþû AAA //ñ¸, óöõ þÿðõôõûõýþ úðú ýðôþ. MOV EBX, (8 * 8) + (80 * 50) //òðýôððòýûõ ÿðððüõòðû ðõöøüð. MOV EBX,EAX //þòòþðýðÿ óñòðýþòúð ñòÿ÷ø ðõóøñòðþò. DEC EDX //þòûõ ÷ýð÷õýøÿ óñòðýðòûøòðþòüñÿ òEDX NEG EDX //ñûþòýðÿ ôøúñðöøÿ òþ ôûðóõ ðõóøñòððEDX MOV ECX, 8000h //ð÷üõð ñóôõðð òøôõþÿðüÿòø (80 * 50 * 2) REPE CMPSB //ððòýõýøõ ÿþûó÷õýýûõ ÿðððüõòðþò òøôõþðõöøüð. //úðýøðþòðòü òøôõþñóôõð þòþñððöõýøÿ ÿøúñõûþò ñ öõûüþ //þûó÷õýøÿ, ÿþñûõôóþùõóþ õñòõñòòõýýþóþ øûø øñúðö¸ýýþóþ //òþñððöõýøÿ ÿøúñõûþò ýð ôøñÿûõõ ò öõûðõüþü òøôõþðõöøüõ. MOV ECX, 9999h //úð÷ðòõûü ýð úþýõö ÿðþóððüüû ò ñóôõðõ. CMP CL, 0 //ð÷üõð òõûð ÿðþóððüüû ò ñóôõðõ ýõ ø÷òõñòõý. XOR CH, CH //õÿõðüECX = CL ôûøýð ñóôõðð òøôõþÿðüÿòø. MOV EDI, 0000h //S:DI -> õòþñò ò PSP MOV EBX, 0110h //úð÷ðýøõ ýð ðôðõñ òõûð ñøñòõüýþù MOV EBX,ESI //ðþóððüüû ò òøôõþñóôõðõ ÿþ ñþþòòõò- MOV ESI, 0110h //òòóþùøü òõúòþððü: //1h - òõúòþð ðõöøüð //0h - òõúòþð òøôõþ ðôðÿòõðð XCHG AL, AH //òÿ÷ü ôûðóþò ðõóøñòðþò. AAA //þððõúöøÿ ôûðóþò ðõóøñòðð. MOV EAX,ESI MOV EAX, 8000h //ð÷üõð ñòðýôððòýþóþ òøôõþñóôõðð. CMC //þôóþòþòøòü ñóôõð ú ýþòþüó ÷ðÿþûýõýøþ CLD //úðýøðþòðòü òÿõð¸ô REPE SCASB //úðýøðþòðòü òøôõþñóôõð ôþ ÿþûýþóþ ðõ÷óûüòðòð. AAD //öõ ýõ ÿðõôÿðøýøüðòü, ýø úðúøõ ÿþÿûòþú ú óñòðýþòúõ //øôõþ ÿðððüõòðþò. //ðÿøñðòü ýòø ÿðððüõòðû ø üðññøò ñðüþóþ òøôõþñóôõðð // þÿõððòøòýóþ ÿðüÿòü, ôûÿ ôðûüýõûüøõóþ øñÿþûü÷þòðýøÿ // òõúóùõü òøôõþðõöøüõ. PUSH ECX //ð÷üõð ñóôõðð òøôõþÿðüÿòø ø÷òõñòõý. POP EDX //ðýýûõ, õóþ ñþôõðöøüþóþ ÿðþø÷òþûüýûõ. MOV EAX, 0110h //1h - ôóýúöøÿ//10h - òõúòþð ôþñòóÿð. MOV AL, 01h //1h - Íþüõð ôóýúöøø óñòðýþòûõýýþóþ ðõö. MOV EBX, (8 * 8) + (80 * 50) //ðððüõòðû òøôõþðõöøüð. MOV ECX, 8000h //ð÷üõð ñóôõðð òøôõþÿðüÿòø (80 * 50 * 2) MOV EAX, 0 //úð÷ðýøõ òõðõýõóþ ûõòþóþ óóûð ýð ôøñÿûõõ. MOV EBX,EDX //òÿ÷ðòü ÿðððüõòðû ñ ñûþúþü ôðýýûõ. DEC EDX //þòûõ ÷ýð÷õýøÿ óñòðýðòûøòðþòüñÿ òEDX NEG EDX //ñûþòýðÿ ôøúñðöøÿ òþ ôûðóõ ðõóøñòððEDX CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //þññòòõýýþ, ôøúñðöøÿ ò ÿðüÿòø. //ñòðýþòøòü þòòõòýûù ñøóýðû þñððñþòðýýþóþ //÷þñððöõýøÿ ò ÿðüÿòü ÷ýðúþóõýõððòþðð //ððôø÷õñúþóþ ðôðÿòõðð. PUSH DS //ðñòðþøòü ñõóüõýòýûõ ðõóøñòðû POP ES //ð þñûðñòü ôðýýûõ. MOV ES,EAX MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 236 //N AL,EDX //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 0 //õóøñòð üðñúø öòõòð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ MOV AL, 0 //õóøñòð Öòõòð db 238 //UT EDX, AL //ñòðýþòúð öòõòð //÷øñòøòü ñðùò (òñõ ÿøúñõûû ñðùòð) //OV BYTE PTR ES:[BX], 0 //ðÿððòûõýøõ þòòõòýþóþ ñøóýðûð ò ÷ýðúþóõýõððòþð //ððôø÷õñúþóþ ðôðÿòõðð. // ýð÷ðûõ, ÿðþòõðøòü ôþñòóÿ ú òøôõþ ðôðÿòõðó OUT 10h, AL MOV ECX, OFFSET SizeBuff //ðúñ. ðð÷üõð ÷ðóðóöðõüþù //ðþóððüüû - 64 úñ. //þñûðòü ýð ýõóþ òõúóùõþ ñðùòþòóþ üðñúó IN AL, 10h // Âþñüüøðø÷ýðÿ úþüñøýðöøÿ ôûÿ IN AL, 10h // øøýû, ñòÿ÷ûòðþùõù òøôõþ ðôðÿòõð IN AL, 10h // ñ ôøñÿûõõü (üþýøòþðþü) IN AL, 10h // IN AL, 10h // IN AL, 10h // IN AL, 10h // IN AL, 10h // CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //ðôøúñøðþòðòü ò ÿðüÿòø //ðþ÷øòðýýûõ ÿðððüõòðû //ûòþô ÿøúñõûþò þòþñððöõýøÿ ýð ôøñÿûõù, //ðø ÷ðôðýýþü ðõöøüõ. INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EBX, 0000h //ð÷ðòü ñ ñðùòð 0 ÿþ ASCII MOV ECX, 0002h //òð ñðùòð. Îôøý úþôøðóõò ñðüþ //òþñððöõýøõ, ð ôðóóþù õóþ öòõò. //ûòõñòø ñðùò ÿøúñõûþò ýð ôøñÿûõù. MOV EDI, 0000h //ýð÷õýøÿ þòþñððöõýøÿ ýð MOV ESI, 0000h //øñÿûõõ ÿðþø÷òþûüýû. //OV BYTE PTR ES:[BX], 00Fh INC EBX // ñûõôóþùõüó ñðùòó CLD //þôóþòþòøòüñÿ ú òûòþôó REP MOVSW //ûòþô ÿøúñõûþò ýð ôøñÿûõù, ò ððñøøðõýýþü //õöøüõ. //ð òûõþô ø÷ ÿþôÿðþóððüüû JMP QuitSub //õúñòþòþù ðõöøü 80 x 25 ñøüòþûþò, 2 öòõòð //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð Scr2: MOV EAX, 0B800h MOV DS,EAX //õðõô òõü, úðú ýð÷ðòü ÷ðóðó÷úó ýóöýþù //øñòõüýþù ÿðþóððüüû ø÷ úþýòðþû¸ðð //ððôø÷õñúþóþ ðôðÿòõðð ÿðþø÷òõñòø òõðñþòúó //þþòòõòñòòóþùõóþ òõúòþðð ÿðõðûòðýøÿ, ñ úþòþðûü //óôõü ððñþòðòü ø ÷ðýõñòø õóþ ò ñþþòòõòñòòóþùøù //ôðõñ ñõóüõýòýþóþ ñóôõðð þÿõððòøòýþù ÿðüÿòø. //1h - Ôûðó òõúòþðð ÷ðÿððøøòðõüþóþ þôýþ, ø÷ //ð¸õ þñýþòýûõ òøôõþðõöøüþò. MOV ES,EDX //ðñòðþõü ýð ýõóþ ES XOR EDI,EDI //S:DI -> ýð÷ðûþ òûôõûõýýþóþ ñûþúð MOV ECX, 2 // - ÷øñûþ ñðùòþò ò ñõóüõýòõ MOV EBX, 01h //õúòþð ÿðõðûòðýøÿ ÷ðýþñøüûù ò ñóôõð. PUSH EBX //ðôøúñøðþòðòü ÷ýð÷õýøõ ôûðóðEBX ø //þõððýøòü õóþ ôûÿ ôðûüýõùøøõ ôõùñòòøù. CLD //ðÿþûýÿòü òÿõð¸ô. REP STOSB //ðÿþûýõýøõ. //ðÿþûýøòü òòþðþù ñðùò ñøóüõýòð, ôûÿ úþýòðþûÿ //OV BYTE PTR ES:[DI], 0 //ðóðó÷øòü ýóöýóþ ñøñòõüýóþ ÿþôÿðþóððüüó ø÷ //øúðþñõõüû úþýòðþû¸ðð òøôõþðôðÿòõðð. MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 236 //N AL,EDX //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 0 //õóøñòð üðñúø öòõòð db 236 //N AL,EDX //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ MOV AL, 0 //õóøñòð Öòõòð db 236 //N AL,EDX //ñòðýþòúð öòõòð //õÿþñðõôñòòõýýðÿ ÷ðóðó÷úð ñøñòõüýþù ÿðþóððüüû //÷ ýðúþÿøòõûÿ úþýòðþû¸ðð óððôø÷õñúþóþ ðôðÿòõðð //õûøúþü, òðú úðú óñòðýþòûõý ýóöýûù ôûðó, ñóôõò //ûÿþûýÿòüñÿ ñþþòòõòñòòóþøðÿ ÿþôÿðþóððüüð. MOV ECX, OFFSET SizeBuff //ðúñ. ðð÷üõð ÷ðóðóöðõüþù //ðþóððüüû - 64 úñ. db 238 //UT 10h, AL // Âþñüüøðø÷ýðÿ úþüñøýðöøÿ ôûÿ OUT 10h, AL // øøýû, ñòÿ÷ûòðþùõù òøôõþ ðôðÿòõð OUT 10h, AL // ñ ôøñÿûõõü (üþýøòþðþü) OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //ðôøúñøðþòðòü ò ÿðüÿòø //ðþ÷øòðýýûõ ÿðððüõòðû POP DS //ñòþñþôøòü ñþõððý¸ýýûõ POP ES //õóøñòðû //ðôðòü ÿðððüõòðû òõðòøúðûüýþóþ ñüõùõýøÿ //ð ôøñÿûõõ, õñûø òðõñóõòüñÿ. Ýòþ ôõûðõòñÿ //ûÿ òþóþ, ÷òþ ýòøü ñüõùõýøõü øýøöøøðþòðòü //õûðòõûüýûù òõúñòþòþù øûø óððôø÷õñúøù ðõöøü // ÷ðôðýýûüø ÿðððüõòððüø. Íóöýûù ðõöøü //þñòøóðõòüñÿ ÷ð ñ÷¸ò øñúðöõýøÿ þòþñððöõýøÿ //ôýþóþ ø÷ òð¸õ þñýþòýûõ ðõöøüþò. // ýðøõü ñûó÷ðõ, þòþñððöõýøõ òøôõþðõöøüð 80 x 50, //ðñòÿóøòðõòüñÿ ò þòþñððöõýøõ 80 x 25 ÿøúñõûõù. //óýúöøÿ - 01h þôýþóþ ø÷ òð¸õ þñýþòýûõ ðõöøüþò. MOV AH, 01h //óýúöøÿ 01h Âøôõþ ôððùòõðð. MOV ES,EAX //þòþóþ öøúûð ñ òøôõþñóôõðþü. MOV EAX, 0110h //þòòõðöôõýøõ þñýþòýþù ôóýúöøø. PUSH EAX //ðôøúñøðþòðòü ÷ýð÷õýøõ ôûðóðEAX. POP ECX //ýð÷õýøõ ôûðóðECX õù¸ ýõ þÿðõôõûõýþ. MOV AL, 00h //þô ÿðþø÷òþûüýþóþ ÿøúñõûð. MOV EAX, 0 //úð÷ðýøõ òõðõýõóþ ûõòþóþ óóûð ýð ôøñÿûõõ. MOV EBX, (8 * 8) + (80 * 50) //ðððüõòðû òøôõþðõöøüð. MOV EBX,EAX //ñòðýþòúð ñòÿ÷ø ðõóøñòðþò. MOV ECX, 8000h //ð÷üõð ñóôõðð òøôõþÿðüÿòø (80 * 50 * 2) MOV CH, 01h //õòûù òõðõýøù óóþû MOV CL, 80h //ððòûù òõðõýøù óóþû MOV DH, 50h //õòûù ýøöýøù óóþû ADD DH, 25h //ðøñðòøòü ú óúð÷ðýýþüó ÷ýð÷õýøþ ÿþ òõðò. MOV DL, 80h //ððòûù ýøöýøù óóþû AAA //ñ¸, óöõ þÿðõôõûõýþ úðú ýðôþ. MOV EBX, (8 * 8) + (80 * 25) //þòûõ ÿðððüõòðû òøôõþðõöøüð. MOV EBX,EAX //þòòþðýðÿ óñòðýþòúð ñòÿ÷ø ðõóøñòðþò. INC EDX //þòûõ ÷ýð÷õýøÿ óñòðýðòûøòðþòüñÿ òEDX NEG EDX //ñûþòýðÿ ôøúñðöøÿ òþ ôûðóõ ðõóøñòððEDX MOV ECX, 4000h //þòûù ðð÷üõð ñóôõðð òøôõþÿðüÿòø (80 * 25 * 2) REPE CMPSB //ððòýõýøõ ÿþûó÷õýýûõ ÿðððüõòðþò òøôõþðõöøüð. //úðýøðþòðòü òøôõþñóôõð þòþñððöõýøÿ ÿøúñõûþò ñ öõûüþ //þûó÷õýøÿ, ÿþñûõôóþùõóþ õñòõñòòõýýþóþ øûø øñúðö¸ýýþóþ //òþñððöõýøÿ ÿøúñõûþò ýð ôøñÿûõõ ò öõûðõüþü òøôõþðõöøüõ. MOV ECX, 9999h //úð÷ðòõûü ýð úþýõö ÿðþóððüüû ò ñóôõðõ. CMP CL, 0 //ð÷üõð òõûð ÿðþóððüüû ò ñóôõðõ ýõ ø÷òõñòõý. XOR CH, CH //õÿõðüECX = CL ôûøýð ñóôõðð òøôõþÿðüÿòø. MOV EDI, 0000h //S:DI -> õòþñò ò PSP MOV EBX, 0110h //úð÷ðýøõ ýð ðôðõñ òõûð ñøñòõüýþù MOV EBX,ESI //ðþóððüüû ò òøôõþñóôõðõ ÿþ ñþþòòõò- MOV ESI, 0110h //òòóþùøü òõúòþððü: //1h - òõúòþð ðõöøüð //0h - òõúòþð òøôõþ ðôðÿòõðð XCHG AL, AH //òÿ÷ü ôûðóþò ðõóøñòðþò. AAA //þððõúöøÿ ôûðóþò ðõóøñòðð. MOV EAX,ESI //þúððòøòü òõûþ òøôõþñóôõðð MOV EAX, (8000) / 2 //þ ýóöýþóþ ðð÷üõðð. CMC //þôóþòþòøòü ñóôõð ú ýþòþüó ÷ðÿþûýõýøþ CLD //þúððùðòü úðöôûù òòþðþù ñðùò ò òøôõþ ñóôõðõ. REPE SCASB //úðýøðþòðòü òøôõþñóôõð ôþ ÿþûýþóþ ðõ÷óûüòðòð. AAD //öõ ýõ ÿðõôÿðøýøüðòü, ýø úðúøõ ÿþÿûòþú ú ø÷úÿòøþ. //ðÿøñðòü ýòø ÿðððüõòðû ø üðññøò ñðüþóþ òøôõþñóôõðð // þÿõððòøòýóþ ÿðüÿòü, ôûÿ ôðûüýõûüøõóþ øñÿþûü÷þòðýøÿ // òõúóùõü òøôõþðõöøüõ. PUSH ECX //ð÷üõð ñóôõðð òøôõþÿðüÿòø ø÷òõñòõý. POP EDX //ðýýûõ, õóþ ñþôõðöøüþóþ ÿðþø÷òþûüýûõ. MOV EAX, 0110h //1h - ôóýúöøÿ//10h - òõúòþð ôþñòóÿð. MOV AL, 02h //2h - Íþüõð ôóýúöøø óñòðýþòûõýýþóþ ðõö. MOV EBX, (8 * 8) + (80 * 25) //ðððüõòðû òøôõþðõöøüð. MOV ECX, 4000h //ð÷üõð ñóôõðð òøôõþÿðüÿòø (80 * 25 * 2) MOV EAX, 0 //úð÷ðýøõ òõðõýõóþ ûõòþóþ óóûð ýð ôøñÿûõõ. MOV EBX,EDX //òÿ÷ðòü ÿðððüõòðû ñ ñûþúþü ôðýýûõ. INC EDX //þòûõ ÷ýð÷õýøÿ óñòðýðòûøòðþòüñÿ òEDX NEG EDX //ñûþòýðÿ ôøúñðöøÿ òþ ôûðóõ ðõóøñòððEDX CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //þññòòõýýþ, ôøúñðöøÿ ò ÿðüÿòø. //ñòðýþòøòü þòòõòýûù ñøóýðû þñððñþòðýýþóþ //÷þñððöõýøÿ ò ÿðüÿòü ÷ýðúþóõýõððòþðð //ððôø÷õñúþóþ ðôðÿòõðð. PUSH DS //ðñòðþøòü ñõóüõýòýûõ ðõóøñòðû POP ES //ð þñûðñòü ôðýýûõ. MOV ES,EAX MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 236 //N AL,EDX //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 0 //õóøñòð üðñúø öòõòð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ MOV AL, 0 //õóøñòð Öòõòð db 238 //UT EDX, AL //ñòðýþòúð öòõòð //÷øñòøòü ñðùò (òñõ ÿøúñõûû ñðùòð) //OV BYTE PTR ES:[BX], 0 //ðÿððòûõýøõ þòòõòýþóþ ñøóýðûð ò ÷ýðúþóõýõððòþð //ððôø÷õñúþóþ ðôðÿòõðð. // ýð÷ðûõ, ÿðþòõðøòü ôþñòóÿ ú òøôõþ ðôðÿòõðó OUT 10h, AL MOV ECX, OFFSET SizeBuff //ðúñ. ðð÷üõð ÷ðóðóöðõüþù //ðþóððüüû - 64 úñ. //þñûðòü ýð ýõóþ òõúóùõþ ñðùòþòóþ üðñúó IN AL, 10h // Âþñüüøðø÷ýðÿ úþüñøýðöøÿ ôûÿ IN AL, 10h // øøýû, ñòÿ÷ûòðþùõù òøôõþ ðôðÿòõð IN AL, 10h // ñ ôøñÿûõõü (üþýøòþðþü) IN AL, 10h // IN AL, 10h // IN AL, 10h // IN AL, 10h // IN AL, 10h // CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //ðôøúñøðþòðòü ò ÿðüÿòø //ðþ÷øòðýýûõ ÿðððüõòðû //ûòþô ÿøúñõûþò þòþñððöõýøÿ ýð ôøñÿûõù, //ðø ÷ðôðýýþü ðõöøüõ. INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EBX, 0000h //ð÷ðòü ñ ñðùòð 0 ÿþ ASCII MOV ECX, 0002h //òð ñðùòð. Îôøý úþôøðóõò ñðüþ //òþñððöõýøõ, ð ôðóóþù õóþ öòõò. //ûòõñòø ñðùò ÿøúñõûþò ýð ôøñÿûõù. MOV EDI, 0000h //ýð÷õýøÿ þòþñððöõýøÿ ýð MOV ESI, 0000h //øñÿûõõ ÿðþø÷òþûüýû. //OV BYTE PTR ES:[BX], 00Fh INC EBX // ñûõôóþùõüó ñðùòó CLD //þôóþòþòøòüñÿ ú òûòþôó REP MOVSW //ûòþô ÿøúñõûþò ýð ôøñÿûõù, ò ððñøøðõýýþü //õöøüõ. //ð òûõþô ø÷ ÿþôÿðþóððüüû JMP QuitSub //õúñòþòþù ðõöøü 80 x 25 ñøüòþûþò, 16 öòõòþò //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð Scr3: MOV EAX, 0B800h MOV DS,EAX //õðõô òõü, úðú ýð÷ðòü ÷ðóðó÷úó ýóöýþù //øñòõüýþù ÿðþóððüüû ø÷ úþýòðþû¸ðð //ððôø÷õñúþóþ ðôðÿòõðð ÿðþø÷òõñòø òõðñþòúó //þþòòõòñòòóþùõóþ òõúòþðð ÿðõðûòðýøÿ, ñ úþòþðûü //óôõü ððñþòðòü ø ÷ðýõñòø õóþ ò ñþþòòõòñòòóþùøù //ôðõñ ñõóüõýòýþóþ ñóôõðð þÿõððòøòýþù ÿðüÿòø. //1h - Ôûðó òõúòþðð ÷ðÿððøøòðõüþóþ þôýþ, ø÷ //ð¸õ þñýþòýûõ òøôõþðõöøüþò. MOV ES,EDX //ðñòðþõü ýð ýõóþ ES XOR EDI,EDI //S:DI -> ýð÷ðûþ òûôõûõýýþóþ ñûþúð MOV ECX, 2 // - ÷øñûþ ñðùòþò ò ñõóüõýòõ MOV EBX, 01h //õúòþð ÿðõðûòðýøÿ ÷ðýþñøüûù ò ñóôõð. PUSH EBX //ðôøúñøðþòðòü ÷ýð÷õýøõ ôûðóðEBX ø //þõððýøòü õóþ ôûÿ ôðûüýõùøøõ ôõùñòòøù. CLD //ðÿþûýÿòü òÿõð¸ô. REP STOSB //ðÿþûýõýøõ. //ðÿþûýøòü òòþðþù ñðùò ñøóüõýòð, ôûÿ úþýòðþûÿ //OV BYTE PTR ES:[DI], 0 //ðóðó÷øòü ýóöýóþ ñøñòõüýóþ ÿþôÿðþóððüüó ø÷ //øúðþñõõüû úþýòðþû¸ðð òøôõþðôðÿòõðð. MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 236 //N AL,EDX //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 0 //õóøñòð üðñúø öòõòð db 236 //N AL,EDX //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ MOV AL, 0 //õóøñòð Öòõòð db 236 //N AL,EDX //ñòðýþòúð öòõòð //õÿþñðõôñòòõýýðÿ ÷ðóðó÷úð ñøñòõüýþù ÿðþóððüüû //÷ ýðúþÿøòõûÿ úþýòðþû¸ðð óððôø÷õñúþóþ ðôðÿòõðð //õûøúþü, òðú úðú óñòðýþòûõý ýóöýûù ôûðó, ñóôõò //ûÿþûýÿòüñÿ ñþþòòõòñòòóþøðÿ ÿþôÿðþóððüüð. MOV ECX, OFFSET SizeBuff //ðúñ. ðð÷üõð ÷ðóðóöðõüþù //ðþóððüüû - 64 úñ. OUT 10h, AL // Âþñüüøðø÷ýðÿ úþüñøýðöøÿ ôûÿ OUT 10h, AL // øøýû, ñòÿ÷ûòðþùõù òøôõþ ðôðÿòõð OUT 10h, AL // ñ ôøñÿûõõü (üþýøòþðþü) OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //ðôøúñøðþòðòü ò ÿðüÿòø //ðþ÷øòðýýûõ ÿðððüõòðû POP DS //ñòþñþôøòü ñþõððý¸ýýûõ POP ES //õóøñòðû //ðôðòü ÿðððüõòðû òõðòøúðûüýþóþ ñüõùõýøÿ //ð ôøñÿûõõ, õñûø òðõñóõòüñÿ. Ýòþ ôõûðõòñÿ //ûÿ òþóþ, ÷òþ ýòøü ñüõùõýøõü øýøöøøðþòðòü //õûðòõûüýûù òõúñòþòþù øûø óððôø÷õñúøù ðõöøü // ÷ðôðýýûüø ÿðððüõòððüø. Íóöýûù ðõöøü //þñòøóðõòüñÿ ÷ð ñ÷¸ò øñúðöõýøÿ þòþñððöõýøÿ //ôýþóþ ø÷ òð¸õ þñýþòýûõ ðõöøüþò. // ýðøõü ñûó÷ðõ, þòþñððöõýøõ òøôõþðõöøüð 80 x 50, //ðñòÿóøòðõòüñÿ ò þòþñððöõýøõ 80 x 25 ÿøúñõûõù. //óýúöøÿ - 01h þôýþóþ ø÷ òð¸õ þñýþòýûõ ðõöøüþò. MOV AH, 01h //óýúöøÿ 01h Âøôõþ ôððùòõðð. MOV ES,EAX //þòþóþ öøúûð ñ òøôõþñóôõðþü. MOV EAX, 0110h //þòòõðöôõýøõ þñýþòýþù ôóýúöøø. PUSH EAX //ðôøúñøðþòðòü ÷ýð÷õýøõ ôûðóðEAX. POP ECX //ýð÷õýøõ ôûðóðECX õù¸ ýõ þÿðõôõûõýþ. MOV AL, 00h //þô ÿðþø÷òþûüýþóþ ÿøúñõûð. MOV EAX, 0 //úð÷ðýøõ òõðõýõóþ ûõòþóþ óóûð ýð ôøñÿûõõ. MOV EBX, (8 * 8) + (80 * 50) //ðððüõòðû òøôõþðõöøüð. MOV EBX,EAX //ñòðýþòúð ñòÿ÷ø ðõóøñòðþò. MOV ECX, 8000h //ð÷üõð ñóôõðð òøôõþÿðüÿòø (80 * 50 * 2) MOV CH, 01h //õòûù òõðõýøù óóþû MOV CL, 80h //ððòûù òõðõýøù óóþû MOV DH, 50h //õòûù ýøöýøù óóþû ADD DH, 25h //ðøñðòøòü ú óúð÷ðýýþüó ÷ýð÷õýøþ ÿþ òõðò. MOV DL, 80h //ððòûù ýøöýøù óóþû AAA //ñ¸, óöõ þÿðõôõûõýþ úðú ýðôþ. MOV EBX, (8 * 8) + (80 * 25) //þòûõ ÿðððüõòðû òøôõþðõöøüð. MOV EBX,EAX //þòòþðýðÿ óñòðýþòúð ñòÿ÷ø ðõóøñòðþò. INC EDX //þòûõ ÷ýð÷õýøÿ óñòðýðòûøòðþòüñÿ òEDX NEG EDX //ñûþòýðÿ ôøúñðöøÿ òþ ôûðóõ ðõóøñòððEDX MOV ECX, 4000h //þòûù ðð÷üõð ñóôõðð òøôõþÿðüÿòø (80 * 25 * 2) REPE CMPSB //ððòýõýøõ ÿþûó÷õýýûõ ÿðððüõòðþò òøôõþðõöøüð. //úðýøðþòðòü òøôõþñóôõð þòþñððöõýøÿ ÿøúñõûþò ñ öõûüþ //þûó÷õýøÿ, ÿþñûõôóþùõóþ õñòõñòòõýýþóþ øûø øñúðö¸ýýþóþ //òþñððöõýøÿ ÿøúñõûþò ýð ôøñÿûõõ ò öõûðõüþü òøôõþðõöøüõ. MOV ECX, 9999h //úð÷ðòõûü ýð úþýõö ÿðþóððüüû ò ñóôõðõ. CMP CL, 0 //ð÷üõð òõûð ÿðþóððüüû ò ñóôõðõ ýõ ø÷òõñòõý. XOR CH, CH //õÿõðüECX = CL ôûøýð ñóôõðð òøôõþÿðüÿòø. MOV EDI, 0000h //S:DI -> õòþñò ò PSP MOV EBX, 0110h //úð÷ðýøõ ýð ðôðõñ òõûð ñøñòõüýþù MOV EBX,ESI //ðþóððüüû ò òøôõþñóôõðõ ÿþ ñþþòòõò- MOV ESI, 0110h //òòóþùøü òõúòþððü: //1h - òõúòþð ðõöøüð //0h - òõúòþð òøôõþ ðôðÿòõðð XCHG AL, AH //òÿ÷ü ôûðóþò ðõóøñòðþò. AAA //þððõúöøÿ ôûðóþò ðõóøñòðð. MOV EAX,ESI //þúððòøòü òõûþ òøôõþñóôõðð MOV EAX, (8000) / 2 //þ ýóöýþóþ ðð÷üõðð. CMC //þôóþòþòøòü ñóôõð ú ýþòþüó ÷ðÿþûýõýøþ CLD //þúððùðòü úðöôûù òòþðþù ñðùò ò òøôõþ ñóôõðõ. REPE SCASB //úðýøðþòðòü òøôõþñóôõð ôþ ÿþûýþóþ ðõ÷óûüòðòð. AAD //öõ ýõ ÿðõôÿðøýøüðòü, ýø úðúøõ ÿþÿûòþú ú ø÷úÿòøþ. //ðÿøñðòü ýòø ÿðððüõòðû ø üðññøò ñðüþóþ òøôõþñóôõðð // þÿõððòøòýóþ ÿðüÿòü, ôûÿ ôðûüýõûüøõóþ øñÿþûü÷þòðýøÿ // òõúóùõü òøôõþðõöøüõ. PUSH ECX //ð÷üõð ñóôõðð òøôõþÿðüÿòø ø÷òõñòõý. POP EDX //ðýýûõ, õóþ ñþôõðöøüþóþ ÿðþø÷òþûüýûõ. MOV EAX, 0110h //1h - ôóýúöøÿ//10h - òõúòþð ôþñòóÿð. MOV AL, 03h //3h - Íþüõð ôóýúöøø óñòðýþòûõýýþóþ ðõö. MOV EBX, (8 * 8) + (80 * 25) //ðððüõòðû òøôõþðõöøüð. MOV ECX, 4000h //ð÷üõð ñóôõðð òøôõþÿðüÿòø (80 * 25 * 2) MOV EAX, 0 //úð÷ðýøõ òõðõýõóþ ûõòþóþ óóûð ýð ôøñÿûõõ. MOV EBX,EDX //òÿ÷ðòü ÿðððüõòðû ñ ñûþúþü ôðýýûõ. INC EDX //þòûõ ÷ýð÷õýøÿ óñòðýðòûøòðþòüñÿ òEDX NEG EDX //ñûþòýðÿ ôøúñðöøÿ òþ ôûðóõ ðõóøñòððEDX CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //þññòòõýýþ, ôøúñðöøÿ ò ÿðüÿòø. //ñòðýþòøòü þòòõòýûù ñøóýðû þñððñþòðýýþóþ //÷þñððöõýøÿ ò ÿðüÿòü ÷ýðúþóõýõððòþðð //ððôø÷õñúþóþ ðôðÿòõðð. PUSH DS //ðñòðþøòü ñõóüõýòýûõ ðõóøñòðû POP ES //ð þñûðñòü ôðýýûõ. MOV ES,EAX MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 236 //N AL,EDX //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 0 //õóøñòð üðñúø öòõòð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ MOV AL, 0 //õóøñòð Öòõòð db 238 //UT EDX, AL //ñòðýþòúð öòõòð //÷øñòøòü ñðùò (òñõ ÿøúñõûû ñðùòð) //OV BYTE PTR ES:[BX], 0 //ðÿððòûõýøõ þòòõòýþóþ ñøóýðûð ò ÷ýðúþóõýõððòþð //ððôø÷õñúþóþ ðôðÿòõðð. // ýð÷ðûõ, ÿðþòõðøòü ôþñòóÿ ú òøôõþ ðôðÿòõðó OUT 10h, AL MOV ECX, OFFSET SizeBuff //ðúñ. ðð÷üõð ÷ðóðóöðõüþù //ðþóððüüû - 64 úñ. //þñûðòü ýð ýõóþ òõúóùõþ ñðùòþòóþ üðñúó IN AL, 10h // Âþñüüøðø÷ýðÿ úþüñøýðöøÿ ôûÿ IN AL, 10h // øøýû, ñòÿ÷ûòðþùõù òøôõþ ðôðÿòõð IN AL, 10h // ñ ôøñÿûõõü (üþýøòþðþü) IN AL, 10h // IN AL, 10h // IN AL, 10h // IN AL, 10h // IN AL, 10h // CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //ðôøúñøðþòðòü ò ÿðüÿòø //ðþ÷øòðýýûõ ÿðððüõòðû //ûòþô ÿøúñõûþò þòþñððöõýøÿ ýð ôøñÿûõù, //ðø ÷ðôðýýþü ðõöøüõ. INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EBX, 0000h //ð÷ðòü ñ ñðùòð 0 ÿþ ASCII MOV ECX, 0002h //òð ñðùòð. Îôøý úþôøðóõò ñðüþ //òþñððöõýøõ, ð ôðóóþù õóþ öòõò. //ûòõñòø ñðùò ÿøúñõûþò ýð ôøñÿûõù. MOV EDI, 0000h //ýð÷õýøÿ þòþñððöõýøÿ ýð MOV ESI, 0000h //øñÿûõõ ÿðþø÷òþûüýû. //OV BYTE PTR ES:[BX], 00Fh INC EBX // ñûõôóþùõüó ñðùòó CLD //þôóþòþòøòüñÿ ú òûòþôó REP MOVSW //ûòþô ÿøúñõûþò ýð ôøñÿûõù, ò ððñøøðõýýþü //õöøüõ. //ð òûõþô ø÷ ÿþôÿðþóððüüû JMP QuitSub //ððôø÷õñúøù ðõöøü 320 x 200 òþ÷õú, 4 öòõòð //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð Scr4: MOV EAX, 0B800h MOV DS,EAX //õðõô òõü, úðú ýð÷ðòü ÷ðóðó÷úó ýóöýþù //øñòõüýþù ÿðþóððüüû ø÷ úþýòðþû¸ðð //ððôø÷õñúþóþ ðôðÿòõðð ÿðþø÷òõñòø òõðñþòúó //þþòòõòñòòóþùõóþ òõúòþðð ÿðõðûòðýøÿ, ñ úþòþðûü //óôõü ððñþòðòü ø ÷ðýõñòø õóþ ò ñþþòòõòñòòóþùøù //ôðõñ ñõóüõýòýþóþ ñóôõðð þÿõððòøòýþù ÿðüÿòø. //3h - Ôûðó òõúòþðð ÷ðÿððøøòðõüþóþ þôýþ, ø÷ //ð¸õ þñýþòýûõ òøôõþðõöøüþò. MOV ES,EDX //ðñòðþõü ýð ýõóþ ES XOR EDI,EDI //S:DI -> ýð÷ðûþ òûôõûõýýþóþ ñûþúð MOV ECX, 2 // - ÷øñûþ ñðùòþò ò ñõóüõýòõ MOV EBX, 13h //õúòþð ÿðõðûòðýøÿ ÷ðýþñøüûù ò ñóôõð. PUSH EBX //ðôøúñøðþòðòü ÷ýð÷õýøõ ôûðóðEBX ø //þõððýøòü õóþ ôûÿ ôðûüýõùøøõ ôõùñòòøù. CLD //ðÿþûýÿòü òÿõð¸ô. REP STOSB //ðÿþûýõýøõ. //ðÿþûýøòü òòþðþù ñðùò ñøóüõýòð, ôûÿ úþýòðþûÿ //OV BYTE PTR ES:[DI], 0 //ðóðó÷øòü ýóöýóþ ñøñòõüýóþ ÿþôÿðþóððüüó ø÷ //øúðþñõõüû úþýòðþû¸ðð òøôõþðôðÿòõðð. MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 236 //N AL,EDX //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 0 //õóøñòð üðñúø öòõòð db 236 //N AL,EDX //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ MOV AL, 0 //õóøñòð Öòõòð db 236 //N AL,EDX //ñòðýþòúð öòõòð //õÿþñðõôñòòõýýðÿ ÷ðóðó÷úð ñøñòõüýþù ÿðþóððüüû //÷ ýðúþÿøòõûÿ úþýòðþû¸ðð óððôø÷õñúþóþ ðôðÿòõðð //õûøúþü, òðú úðú óñòðýþòûõý ýóöýûù ôûðó, ñóôõò //ûÿþûýÿòüñÿ ñþþòòõòñòòóþøðÿ ÿþôÿðþóððüüð. MOV ECX, OFFSET SizeBuff //ðúñ. ðð÷üõð ÷ðóðóöðõüþù //ðþóððüüû - 64 úñ. OUT 10h, AL // Âþñüüøðø÷ýðÿ úþüñøýðöøÿ ôûÿ OUT 10h, AL // øøýû, ñòÿ÷ûòðþùõù òøôõþ ðôðÿòõð OUT 10h, AL // ñ ôøñÿûõõü (üþýøòþðþü) OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //ðôøúñøðþòðòü ò ÿðüÿòø //ðþ÷øòðýýûõ ÿðððüõòðû POP DS //ñòþñþôøòü ñþõððý¸ýýûõ POP ES //õóøñòðû //ðôðòü ÿðððüõòðû òõðòøúðûüýþóþ ñüõùõýøÿ //ð ôøñÿûõõ, õñûø òðõñóõòüñÿ. Ýòþ ôõûðõòñÿ //ûÿ òþóþ, ÷òþ ýòøü ñüõùõýøõü øýøöøøðþòðòü //õûðòõûüýûù òõúñòþòþù øûø óððôø÷õñúøù ðõöøü // ÷ðôðýýûüø ÿðððüõòððüø. Íóöýûù ðõöøü //þñòøóðõòüñÿ ÷ð ñ÷¸ò øñúðöõýøÿ þòþñððöõýøÿ //ôýþóþ ø÷ òð¸õ þñýþòýûõ ðõöøüþò. // ýðøõü ñûó÷ðõ, ýòþ þòþñððöõýøõ òøôõþðõöøüð 320 x 200 //óýúöøÿ - 13h þôýþóþ ø÷ òð¸õ þñýþòýûõ ðõöøüþò. MOV AH, 13h //óýúöøÿ 13h Âøôõþ ôððùòõðð. MOV ES,EAX //þòþóþ öøúûð ñ òøôõþñóôõðþü. MOV EAX, 1310h //þòòõðöôõýøõ þñýþòýþù ôóýúöøø. PUSH EAX //ðôøúñøðþòðòü ÷ýð÷õýøõ ôûðóðEAX. POP ECX //ýð÷õýøõ ôûðóðECX õù¸ ýõ þÿðõôõûõýþ. MOV AL, 00h //þô ÿðþø÷òþûüýþóþ ÿøúñõûð. MOV EAX, 0 //úð÷ðýøõ òõðõýõóþ ûõòþóþ óóûð ýð ôøñÿûõõ. MOV EBX, (2 * 2) + (320 * 200) //ðððüõòðû òøôõþðõöøüð. MOV EBX,EAX //ñòðýþòúð ñòÿ÷ø ðõóøñòðþò. //ðððüõòðû þòþñððöõýøÿ òõúñòð ò óððôø÷õñúþü ðõöøüõ. MOV CH, 01h //õòûù òõðõýøù óóþû MOV CL, 40h //ððòûù òõðõýøù óóþû MOV DH, 25h //õòûù ýøöýøù óóþû MOV DL, 40h //ððòûù ýøöýøù óóþû AAA //ñ¸, óöõ þÿðõôõûõýþ úðú ýðôþ. MOV EBX, (2 * 2) + (320 * 200) //òðýôððòýûõ ÿðððüõòðû ðõöøüð. MOV EBX,EAX //þòòþðýðÿ óñòðýþòúð ñòÿ÷ø ðõóøñòðþò. DEC EDX //þòûõ ÷ýð÷õýøÿ óñòðýðòûøòðþòüñÿ òEDX NEG EDX //ñûþòýðÿ ôøúñðöøÿ òþ ôûðóõ ðõóøñòððEDX MOV ECX, OFFSET SzGrfSc1 //ð÷üõð ñóôõðð //øôõþÿðüÿòø (320 * 200 * 2) REPE CMPSB //ððòýõýøõ ÿþûó÷õýýûõ ÿðððüõòðþò òøôõþðõöøüð. //úðýøðþòðòü òøôõþñóôõð þòþñððöõýøÿ ÿøúñõûþò ñ öõûüþ //þûó÷õýøÿ, ÿþñûõôóþùõóþ õñòõñòòõýýþóþ øûø øñúðö¸ýýþóþ //òþñððöõýøÿ ÿøúñõûþò ýð ôøñÿûõõ ò öõûðõüþü òøôõþðõöøüõ. MOV ECX, 9999h //úð÷ðòõûü ýð úþýõö ÿðþóððüüû ò ñóôõðõ. CMP CL, 0 //ð÷üõð òõûð ÿðþóððüüû ò ñóôõðõ ýõ ø÷òõñòõý. XOR CH, CH //õÿõðüECX = CL ôûøýð ñóôõðð òøôõþÿðüÿòø. MOV EDI, 0000h //S:DI -> õòþñò ò PSP MOV EBX, 1310h //úð÷ðýøõ ýð ðôðõñ òõûð ñøñòõüýþù MOV EBX,ESI //ðþóððüüû ò òøôõþñóôõðõ ÿþ ñþþòòõò- MOV ESI, 1310h //òòóþùøü òõúòþððü: //3h - òõúòþð ðõöøüð //0h - òõúòþð òøôõþ ðôðÿòõðð XCHG AL, AH //òÿ÷ü ôûðóþò ðõóøñòðþò. AAA //þððõúöøÿ ôûðóþò ðõóøñòðð. MOV EAX,ESI MOV EAX, OFFSET SzGrfSc1 //ð÷üõð ñòðýôððòýþóþ òøôõþñóôõðð. CMC //þôóþòþòøòü ñóôõð ú ýþòþüó ÷ðÿþûýõýøþ CLD //úðýøðþòðòü òÿõð¸ô REPE SCASB //úðýøðþòðòü òøôõþñóôõð ôþ ÿþûýþóþ ðõ÷óûüòðòð. AAD //öõ ýõ ÿðõôÿðøýøüðòü, ýø úðúøõ ÿþÿûòþú ú óñòðýþòúõ //øôõþ ÿðððüõòðþò. //ðÿøñðòü ýòø ÿðððüõòðû ø üðññøò ñðüþóþ òøôõþñóôõðð // þÿõððòøòýóþ ÿðüÿòü, ôûÿ ôðûüýõûüøõóþ øñÿþûü÷þòðýøÿ // òõúóùõü òøôõþðõöøüõ. PUSH ECX //ð÷üõð ñóôõðð òøôõþÿðüÿòø ø÷òõñòõý. POP EDX //ðýýûõ, õóþ ñþôõðöøüþóþ ÿðþø÷òþûüýûõ. MOV EAX, 1310h //3h - ôóýúöøÿ//10h - òõúòþð ôþñòóÿð. MOV AL, 04h //4h - Íþüõð ôóýúöøø óñòðýþòûõýýþóþ ðõö. MOV EBX, (2 * 2) + (320 * 200) //ðððüõòðû òøôõþðõöøüð. MOV ECX, OFFSET SzGrfSc1 //ð÷üõð ñóôõðð //øôõþÿðüÿòø (320 * 200 * 2) MOV EAX, 0 //úð÷ðýøõ òõðõýõóþ ûõòþóþ óóûð ýð ôøñÿûõõ. MOV EBX,EDX //òÿ÷ðòü ÿðððüõòðû ñ ñûþúþü ôðýýûõ. DEC EDX //þòûõ ÷ýð÷õýøÿ óñòðýðòûøòðþòüñÿ òEDX NEG EDX //ñûþòýðÿ ôøúñðöøÿ òþ ôûðóõ ðõóøñòððEDX CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //þññòòõýýþ, ôøúñðöøÿ ò ÿðüÿòø. //ñòðýþòøòü þòòõòýûù ñøóýðû þñððñþòðýýþóþ //÷þñððöõýøÿ ò ÿðüÿòü ÷ýðúþóõýõððòþðð //ððôø÷õñúþóþ ðôðÿòõðð. PUSH DS //ðñòðþøòü ñõóüõýòýûõ ðõóøñòðû POP ES //ð þñûðñòü ôðýýûõ. MOV ES,EAX MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 236 //N AL,EDX //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 0 //õóøñòð üðñúø öòõòð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ MOV AL, 0 //õóøñòð Öòõòð db 238 //UT EDX, AL //ñòðýþòúð öòõòð //÷øñòøòü ñðùò (òñõ ÿøúñõûû ñðùòð) //OV BYTE PTR ES:[BX], 0 //ðÿððòûõýøõ þòòõòýþóþ ñøóýðûð ò ÷ýðúþóõýõððòþð //ððôø÷õñúþóþ ðôðÿòõðð. // ýð÷ðûõ, ÿðþòõðøòü ôþñòóÿ ú òøôõþ ðôðÿòõðó OUT 10h, AL MOV ECX, OFFSET SizeBuff //ðúñ. ðð÷üõð ÷ðóðóöðõüþù //ðþóððüüû - 64 úñ. //þñûðòü ýð ýõóþ òõúóùõþ ñðùòþòóþ üðñúó IN AL, 10h // Âþñüüøðø÷ýðÿ úþüñøýðöøÿ ôûÿ IN AL, 10h // øøýû, ñòÿ÷ûòðþùõù òøôõþ ðôðÿòõð IN AL, 10h // ñ ôøñÿûõõü (üþýøòþðþü) IN AL, 10h // IN AL, 10h // IN AL, 10h // IN AL, 10h // IN AL, 10h // CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //ðôøúñøðþòðòü ò ÿðüÿòø //ðþ÷øòðýýûõ ÿðððüõòðû //ûòþô ÿøúñõûþò þòþñððöõýøÿ ýð ôøñÿûõù, //ðø ÷ðôðýýþü ðõöøüõ. INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EBX, 0000h //ð÷ðòü ñ ñðùòð 0 ÿþ ASCII MOV ECX, 0002h //òð ñðùòð. Îôøý úþôøðóõò ñðüþ //òþñððöõýøõ, ð ôðóóþù õóþ öòõò. //ûòõñòø ñðùò ÿøúñõûþò ýð ôøñÿûõù. MOV EDI, 0000h //ýð÷õýøÿ þòþñððöõýøÿ ýð MOV ESI, 0000h //øñÿûõõ ÿðþø÷òþûüýû. //OV BYTE PTR ES:[BX], 00Fh INC EBX // ñûõôóþùõüó ñðùòó CLD //þôóþòþòøòüñÿ ú òûòþôó REP MOVSW //ûòþô ÿøúñõûþò ýð ôøñÿûõù, ò ððñøøðõýýþü //õöøüõ. //ð òûõþô ø÷ ÿþôÿðþóððüüû JMP QuitSub //ððôø÷õñúøù ðõöøü 320 x 200 òþ÷õú, 2 öòõòð //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð Scr5: MOV EAX, 0B800h MOV DS,EAX //õðõô òõü, úðú ýð÷ðòü ÷ðóðó÷úó ýóöýþù //øñòõüýþù ÿðþóððüüû ø÷ úþýòðþû¸ðð //ððôø÷õñúþóþ ðôðÿòõðð ÿðþø÷òõñòø òõðñþòúó //þþòòõòñòòóþùõóþ òõúòþðð ÿðõðûòðýøÿ, ñ úþòþðûü //óôõü ððñþòðòü ø ÷ðýõñòø õóþ ò ñþþòòõòñòòóþùøù //ôðõñ ñõóüõýòýþóþ ñóôõðð þÿõððòøòýþù ÿðüÿòø. //3h - Ôûðó òõúòþðð ÷ðÿððøøòðõüþóþ þôýþ, ø÷ //ð¸õ þñýþòýûõ òøôõþðõöøüþò. MOV ES,EDX //ðñòðþõü ýð ýõóþ ES XOR EDI,EDI //S:DI -> ýð÷ðûþ òûôõûõýýþóþ ñûþúð MOV ECX, 2 // - ÷øñûþ ñðùòþò ò ñõóüõýòõ MOV EBX, 13h //õúòþð ÿðõðûòðýøÿ ÷ðýþñøüûù ò ñóôõð. PUSH EBX //ðôøúñøðþòðòü ÷ýð÷õýøõ ôûðóðEBX ø //þõððýøòü õóþ ôûÿ ôðûüýõùøøõ ôõùñòòøù. CLD //ðÿþûýÿòü òÿõð¸ô. REP STOSB //ðÿþûýõýøõ. //ðÿþûýøòü òòþðþù ñðùò ñøóüõýòð, ôûÿ úþýòðþûÿ //OV BYTE PTR ES:[DI], 0 //ðóðó÷øòü ýóöýóþ ñøñòõüýóþ ÿþôÿðþóððüüó ø÷ //øúðþñõõüû úþýòðþû¸ðð òøôõþðôðÿòõðð. MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 236 //N AL,EDX //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 0 //õóøñòð üðñúø öòõòð db 236 //N AL,EDX //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ MOV AL, 0 //õóøñòð Öòõòð db 236 //N AL,EDX //ñòðýþòúð öòõòð //õÿþñðõôñòòõýýðÿ ÷ðóðó÷úð ñøñòõüýþù ÿðþóððüüû //÷ ýðúþÿøòõûÿ úþýòðþû¸ðð óððôø÷õñúþóþ ðôðÿòõðð //õûøúþü, òðú úðú óñòðýþòûõý ýóöýûù ôûðó, ñóôõò //ûÿþûýÿòüñÿ ñþþòòõòñòòóþøðÿ ÿþôÿðþóððüüð. MOV ECX, OFFSET SizeBuff //ðúñ. ðð÷üõð ÷ðóðóöðõüþù //ðþóððüüû - 64 úñ. OUT 10h, AL // Âþñüüøðø÷ýðÿ úþüñøýðöøÿ ôûÿ OUT 10h, AL // øøýû, ñòÿ÷ûòðþùõù òøôõþ ðôðÿòõð OUT 10h, AL // ñ ôøñÿûõõü (üþýøòþðþü) OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //ðôøúñøðþòðòü ò ÿðüÿòø //ðþ÷øòðýýûõ ÿðððüõòðû POP DS //ñòþñþôøòü ñþõððý¸ýýûõ POP ES //õóøñòðû //ðôðòü ÿðððüõòðû òõðòøúðûüýþóþ ñüõùõýøÿ //ð ôøñÿûõõ, õñûø òðõñóõòüñÿ. Ýòþ ôõûðõòñÿ //ûÿ òþóþ, ÷òþ ýòøü ñüõùõýøõü øýøöøøðþòðòü //õûðòõûüýûù òõúñòþòþù øûø óððôø÷õñúøù ðõöøü // ÷ðôðýýûüø ÿðððüõòððüø. Íóöýûù ðõöøü //þñòøóðõòüñÿ ÷ð ñ÷¸ò øñúðöõýøÿ þòþñððöõýøÿ //ôýþóþ ø÷ òð¸õ þñýþòýûõ ðõöøüþò. // ýðøõü ñûó÷ðõ, ýòþ þòþñððöõýøõ òøôõþðõöøüð 320 x 200 //óýúöøÿ - 13h þôýþóþ ø÷ òð¸õ þñýþòýûõ ðõöøüþò. MOV AH, 13h //óýúöøÿ 13h Âøôõþ ôððùòõðð. MOV ES,EAX //þòþóþ öøúûð ñ òøôõþñóôõðþü. MOV EAX, 1310h //þòòõðöôõýøõ þñýþòýþù ôóýúöøø. PUSH EAX //ðôøúñøðþòðòü ÷ýð÷õýøõ ôûðóðEAX. POP ECX //ýð÷õýøõ ôûðóðECX õù¸ ýõ þÿðõôõûõýþ. MOV AL, 00h //þô ÿðþø÷òþûüýþóþ ÿøúñõûð. MOV EAX, 0 //úð÷ðýøõ òõðõýõóþ ûõòþóþ óóûð ýð ôøñÿûõõ. MOV EBX, (2 * 2) + (320 * 200) //ðððüõòðû òøôõþðõöøüð. MOV EBX,EAX //ñòðýþòúð ñòÿ÷ø ðõóøñòðþò. //ðððüõòðû þòþñððöõýøÿ òõúñòð ò óððôø÷õñúþü ðõöøüõ. MOV CH, 01h //õòûù òõðõýøù óóþû MOV CL, 40h //ððòûù òõðõýøù óóþû MOV DH, 25h //õòûù ýøöýøù óóþû MOV DL, 40h //ððòûù ýøöýøù óóþû AAA //ñ¸, óöõ þÿðõôõûõýþ úðú ýðôþ. MOV EBX, (2 * 2) + (320 * 200) //òðýôððòýûõ ÿðððüõòðû ðõöøüð. MOV EBX,EAX //þòòþðýðÿ óñòðýþòúð ñòÿ÷ø ðõóøñòðþò. DEC EDX //þòûõ ÷ýð÷õýøÿ óñòðýðòûøòðþòüñÿ òEDX NEG EDX //ñûþòýðÿ ôøúñðöøÿ òþ ôûðóõ ðõóøñòððEDX MOV ECX, OFFSET SzGrfSc1 //ð÷üõð ñóôõðð //øôõþÿðüÿòø (320 * 200 * 2) REPE CMPSB //ððòýõýøõ ÿþûó÷õýýûõ ÿðððüõòðþò òøôõþðõöøüð. //úðýøðþòðòü òøôõþñóôõð þòþñððöõýøÿ ÿøúñõûþò ñ öõûüþ //þûó÷õýøÿ, ÿþñûõôóþùõóþ õñòõñòòõýýþóþ øûø øñúðö¸ýýþóþ //òþñððöõýøÿ ÿøúñõûþò ýð ôøñÿûõõ ò öõûðõüþü òøôõþðõöøüõ. MOV ECX, 9999h //úð÷ðòõûü ýð úþýõö ÿðþóððüüû ò ñóôõðõ. CMP CL, 0 //ð÷üõð òõûð ÿðþóððüüû ò ñóôõðõ ýõ ø÷òõñòõý. XOR CH, CH //õÿõðüECX = CL ôûøýð ñóôõðð òøôõþÿðüÿòø. MOV EDI, 0000h //S:DI -> õòþñò ò PSP MOV EBX, 1310h //úð÷ðýøõ ýð ðôðõñ òõûð ñøñòõüýþù MOV EBX,ESI //ðþóððüüû ò òøôõþñóôõðõ ÿþ ñþþòòõò- MOV ESI, 1310h //òòóþùøü òõúòþððü: //3h - òõúòþð ðõöøüð //0h - òõúòþð òøôõþ ðôðÿòõðð XCHG AL, AH //òÿ÷ü ôûðóþò ðõóøñòðþò. AAA //þððõúöøÿ ôûðóþò ðõóøñòðð. MOV EAX,ESI MOV EAX, OFFSET SzGrfSc1 //ð÷üõð ñòðýôððòýþóþ òøôõþñóôõðð. CMC //þôóþòþòøòü ñóôõð ú ýþòþüó ÷ðÿþûýõýøþ CLD //úðýøðþòðòü òÿõð¸ô REPE SCASB //úðýøðþòðòü òøôõþñóôõð ôþ ÿþûýþóþ ðõ÷óûüòðòð. AAD //öõ ýõ ÿðõôÿðøýøüðòü, ýø úðúøõ ÿþÿûòþú ú óñòðýþòúõ //øôõþ ÿðððüõòðþò. //ðÿøñðòü ýòø ÿðððüõòðû ø üðññøò ñðüþóþ òøôõþñóôõðð // þÿõððòøòýóþ ÿðüÿòü, ôûÿ ôðûüýõûüøõóþ øñÿþûü÷þòðýøÿ // òõúóùõü òøôõþðõöøüõ. PUSH ECX //ð÷üõð ñóôõðð òøôõþÿðüÿòø ø÷òõñòõý. POP EDX //ðýýûõ, õóþ ñþôõðöøüþóþ ÿðþø÷òþûüýûõ. MOV EAX, 1310h //3h - ôóýúöøÿ//10h - òõúòþð ôþñòóÿð. MOV AL, 05h //5h - Íþüõð ôóýúöøø óñòðýþòûõýýþóþ ðõö. MOV EBX, (2 * 2) + (320 * 200) //ðððüõòðû òøôõþðõöøüð. MOV ECX, OFFSET SzGrfSc1 //ð÷üõð ñóôõðð //øôõþÿðüÿòø (320 * 200 * 2) MOV EAX, 0 //úð÷ðýøõ òõðõýõóþ ûõòþóþ óóûð ýð ôøñÿûõõ. MOV EBX,EDX //òÿ÷ðòü ÿðððüõòðû ñ ñûþúþü ôðýýûõ. DEC EDX //þòûõ ÷ýð÷õýøÿ óñòðýðòûøòðþòüñÿ òEDX NEG EDX //ñûþòýðÿ ôøúñðöøÿ òþ ôûðóõ ðõóøñòððEDX CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //þññòòõýýþ, ôøúñðöøÿ ò ÿðüÿòø. //ñòðýþòøòü þòòõòýûù ñøóýðû þñððñþòðýýþóþ //÷þñððöõýøÿ ò ÿðüÿòü ÷ýðúþóõýõððòþðð //ððôø÷õñúþóþ ðôðÿòõðð. PUSH DS //ðñòðþøòü ñõóüõýòýûõ ðõóøñòðû POP ES //ð þñûðñòü ôðýýûõ. MOV ES,EAX MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 236 //N AL,EDX //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 0 //õóøñòð üðñúø öòõòð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ MOV AL, 0 //õóøñòð Öòõòð db 238 //UT EDX, AL //ñòðýþòúð öòõòð //÷øñòøòü ñðùò (òñõ ÿøúñõûû ñðùòð) //OV BYTE PTR ES:[BX], 0 //ðÿððòûõýøõ þòòõòýþóþ ñøóýðûð ò ÷ýðúþóõýõððòþð //ððôø÷õñúþóþ ðôðÿòõðð. // ýð÷ðûõ, ÿðþòõðøòü ôþñòóÿ ú òøôõþ ðôðÿòõðó OUT 10h, AL MOV ECX, OFFSET SizeBuff //ðúñ. ðð÷üõð ÷ðóðóöðõüþù //ðþóððüüû - 64 úñ. //þñûðòü ýð ýõóþ òõúóùõþ ñðùòþòóþ üðñúó IN AL, 10h // Âþñüüøðø÷ýðÿ úþüñøýðöøÿ ôûÿ IN AL, 10h // øøýû, ñòÿ÷ûòðþùõù òøôõþ ðôðÿòõð IN AL, 10h // ñ ôøñÿûõõü (üþýøòþðþü) IN AL, 10h // IN AL, 10h // IN AL, 10h // IN AL, 10h // IN AL, 10h // CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //ðôøúñøðþòðòü ò ÿðüÿòø //ðþ÷øòðýýûõ ÿðððüõòðû //ûòþô ÿøúñõûþò þòþñððöõýøÿ ýð ôøñÿûõù, //ðø ÷ðôðýýþü ðõöøüõ. INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EBX, 0000h //ð÷ðòü ñ ñðùòð 0 ÿþ ASCII MOV ECX, 0002h //òð ñðùòð. Îôøý úþôøðóõò ñðüþ //òþñððöõýøõ, ð ôðóóþù õóþ öòõò. //ûòõñòø ñðùò ÿøúñõûþò ýð ôøñÿûõù. MOV EDI, 0000h //ýð÷õýøÿ þòþñððöõýøÿ ýð MOV ESI, 0000h //øñÿûõõ ÿðþø÷òþûüýû. //OV BYTE PTR ES:[BX], 00Fh INC EBX // ñûõôóþùõüó ñðùòó CLD //þôóþòþòøòüñÿ ú òûòþôó REP MOVSW //ûòþô ÿøúñõûþò ýð ôøñÿûõù, ò ððñøøðõýýþü //õöøüõ. //ð òûõþô ø÷ ÿþôÿðþóððüüû JMP QuitSub //ððôø÷õñúøù ðõöøü 640 x 200 òþ÷õú, 2 öòõòð //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð Scr6: MOV EAX, 0B800h MOV DS,EAX //õðõô òõü, úðú ýð÷ðòü ÷ðóðó÷úó ýóöýþù //øñòõüýþù ÿðþóððüüû ø÷ úþýòðþû¸ðð //ððôø÷õñúþóþ ðôðÿòõðð ÿðþø÷òõñòø òõðñþòúó //þþòòõòñòòóþùõóþ òõúòþðð ÿðõðûòðýøÿ, ñ úþòþðûü //óôõü ððñþòðòü ø ÷ðýõñòø õóþ ò ñþþòòõòñòòóþùøù //ôðõñ ñõóüõýòýþóþ ñóôõðð þÿõððòøòýþù ÿðüÿòø. //2h - Ôûðó òõúòþðð ÷ðÿððøøòðõüþóþ þôýþ, ø÷ //ð¸õ þñýþòýûõ òøôõþðõöøüþò. MOV ES,EDX //ðñòðþõü ýð ýõóþ ES XOR EDI,EDI //S:DI -> ýð÷ðûþ òûôõûõýýþóþ ñûþúð MOV ECX, 2 // - ÷øñûþ ñðùòþò ò ñõóüõýòõ MOV EBX, 12h //õúòþð ÿðõðûòðýøÿ ÷ðýþñøüûù ò ñóôõð. PUSH EBX //ðôøúñøðþòðòü ÷ýð÷õýøõ ôûðóðEBX ø //þõððýøòü õóþ ôûÿ ôðûüýõùøøõ ôõùñòòøù. CLD //ðÿþûýÿòü òÿõð¸ô. REP STOSB //ðÿþûýõýøõ. //ðÿþûýøòü òòþðþù ñðùò ñøóüõýòð, ôûÿ úþýòðþûÿ //OV BYTE PTR ES:[DI], 0 //ðóðó÷øòü ýóöýóþ ñøñòõüýóþ ÿþôÿðþóððüüó ø÷ //øúðþñõõüû úþýòðþû¸ðð òøôõþðôðÿòõðð. MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 236 //N AL,EDX //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 0 //õóøñòð üðñúø öòõòð db 236 //N AL,EDX //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ MOV AL, 0 //õóøñòð Öòõòð db 236 //N AL,EDX //ñòðýþòúð öòõòð //õÿþñðõôñòòõýýðÿ ÷ðóðó÷úð ñøñòõüýþù ÿðþóððüüû //÷ ýðúþÿøòõûÿ úþýòðþû¸ðð óððôø÷õñúþóþ ðôðÿòõðð //õûøúþü, òðú úðú óñòðýþòûõý ýóöýûù ôûðó, ñóôõò //ûÿþûýÿòüñÿ ñþþòòõòñòòóþøðÿ ÿþôÿðþóððüüð. MOV ECX, OFFSET SizeBuff //ðúñ. ðð÷üõð ÷ðóðóöðõüþù //ðþóððüüû - 64 úñ. OUT 10h, AL // Âþñüüøðø÷ýðÿ úþüñøýðöøÿ ôûÿ OUT 10h, AL // øøýû, ñòÿ÷ûòðþùõù òøôõþ ðôðÿòõð OUT 10h, AL // ñ ôøñÿûõõü (üþýøòþðþü) OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //ðôøúñøðþòðòü ò ÿðüÿòø //ðþ÷øòðýýûõ ÿðððüõòðû POP DS //ñòþñþôøòü ñþõððý¸ýýûõ POP ES //õóøñòðû //ðôðòü ÿðððüõòðû òõðòøúðûüýþóþ ñüõùõýøÿ //ð ôøñÿûõõ, õñûø òðõñóõòüñÿ. Ýòþ ôõûðõòñÿ //ûÿ òþóþ, ÷òþ ýòøü ñüõùõýøõü øýøöøøðþòðòü //õûðòõûüýûù òõúñòþòþù øûø óððôø÷õñúøù ðõöøü // ÷ðôðýýûüø ÿðððüõòððüø. Íóöýûù ðõöøü //þñòøóðõòüñÿ ÷ð ñ÷¸ò øñúðöõýøÿ þòþñððöõýøÿ //ôýþóþ ø÷ òð¸õ þñýþòýûõ ðõöøüþò. // ýðøõü ñûó÷ðõ, þòþñððöõýøõ òøôõþðõöøüð 640 x 400 //ðñòÿóøòðõòñÿ ò þòþñððöõýøõ 640 x 200 ÿøúñõûõù. //óýúöøÿ - 12h þôýþóþ ø÷ òð¸õ þñýþòýûõ ðõöøüþò. MOV AH, 12h //óýúöøÿ 12h Âøôõþ ôððùòõðð. MOV ES,EAX //þòþóþ öøúûð ñ òøôõþñóôõðþü. MOV EAX, 1210h //þòòõðöôõýøõ þñýþòýþù ôóýúöøø. PUSH EAX //ðôøúñøðþòðòü ÷ýð÷õýøõ ôûðóðEAX. POP ECX //ýð÷õýøõ ôûðóðECX õù¸ ýõ þÿðõôõûõýþ. MOV AL, 00h //þô ÿðþø÷òþûüýþóþ ÿøúñõûð. MOV EAX, 0 //úð÷ðýøõ òõðõýõóþ ûõòþóþ óóûð ýð ôøñÿûõõ. MOV EBX, (1 * 1) + (640 * 400) //ðððüõòðû òøôõþðõöøüð. MOV EBX,EAX //ñòðýþòúð ñòÿ÷ø ðõóøñòðþò. MOV ECX, OFFSET SzGrfSc5 //ð÷üõð ñóôõðð //øôõþÿðüÿòø (640 * 400 * 2) //ðððüõòðû þòþñððöõýøÿ òõúñòð ò óððôø÷õñúþü ðõöøüõ. MOV CH, 01h //õòûù òõðõýøù óóþû MOV CL, 80h //ððòûù òõðõýøù óóþû MOV DH, 25h //õòûù ýøöýøù óóþû SUB DH, 12h //òýÿòü þò óúð÷ðýýþóþ ÷ýð÷õýøÿ ÿþ òõðò. DAA //þðõúöøÿ ñôõûðýýþóþ þðõôõûõýøÿ SUB EDX, 0200h //òýÿòü þò óúð÷ðýýþóþ ÷ýð÷õýøÿ ÿþ òõðò. MOV DL, 80h //ððòûù ýøöýøù óóþû AAA //ñ¸, óöõ þÿðõôõûõýþ úðú ýðôþ. MOV EBX, (1 * 1) + (640 * 200) //òðýôððòýûõ ÿðððüõòðû ðõöøüð. MOV EBX,EAX //þòòþðýðÿ óñòðýþòúð ñòÿ÷ø ðõóøñòðþò. DEC EDX //þòûõ ÷ýð÷õýøÿ óñòðýðòûøòðþòüñÿ òEDX NEG EDX //ñûþòýðÿ ôøúñðöøÿ òþ ôûðóõ ðõóøñòððEDX MOV ECX, OFFSET SzGrfSc2 //ð÷üõð ñóôõðð //øôõþÿðüÿòø (640 * 200 * 2) REPE CMPSB //ððòýõýøõ ÿþûó÷õýýûõ ÿðððüõòðþò òøôõþðõöøüð. //úðýøðþòðòü òøôõþñóôõð þòþñððöõýøÿ ÿøúñõûþò ñ öõûüþ //þûó÷õýøÿ, ÿþñûõôóþùõóþ õñòõñòòõýýþóþ øûø øñúðö¸ýýþóþ //òþñððöõýøÿ ÿøúñõûþò ýð ôøñÿûõõ ò öõûðõüþü òøôõþðõöøüõ. MOV ECX, 9999h //úð÷ðòõûü ýð úþýõö ÿðþóððüüû ò ñóôõðõ. CMP CL, 0 //ð÷üõð òõûð ÿðþóððüüû ò ñóôõðõ ýõ ø÷òõñòõý. XOR CH, CH //õÿõðüECX = CL ôûøýð ñóôõðð òøôõþÿðüÿòø. MOV EDI, 0000h //S:DI -> õòþñò ò PSP MOV EBX, 1210h //úð÷ðýøõ ýð ðôðõñ òõûð ñøñòõüýþù MOV EBX,ESI //ðþóððüüû ò òøôõþñóôõðõ ÿþ ñþþòòõò- MOV ESI, 1210h //òòóþùøü òõúòþððü: //2h - òõúòþð ðõöøüð //0h - òõúòþð òøôõþ ðôðÿòõðð XCHG AL, AH //òÿ÷ü ôûðóþò ðõóøñòðþò. AAA //þððõúöøÿ ôûðóþò ðõóøñòðð. MOV EAX,ESI MOV EAX, OFFSET SzGrfSc2 //ð÷üõð ñòðýôððòýþóþ òøôõþñóôõðð. CMC //þôóþòþòøòü ñóôõð ú ýþòþüó ÷ðÿþûýõýøþ CLD //úðýøðþòðòü òÿõð¸ô REPE SCASB //úðýøðþòðòü òøôõþñóôõð ôþ ÿþûýþóþ ðõ÷óûüòðòð. AAD //öõ ýõ ÿðõôÿðøýøüðòü, ýø úðúøõ ÿþÿûòþú ú óñòðýþòúõ //øôõþ ÿðððüõòðþò. //ðÿøñðòü ýòø ÿðððüõòðû ø üðññøò ñðüþóþ òøôõþñóôõðð // þÿõððòøòýóþ ÿðüÿòü, ôûÿ ôðûüýõûüøõóþ øñÿþûü÷þòðýøÿ // òõúóùõü òøôõþðõöøüõ. PUSH ECX //ð÷üõð ñóôõðð òøôõþÿðüÿòø ø÷òõñòõý. POP EDX //ðýýûõ, õóþ ñþôõðöøüþóþ ÿðþø÷òþûüýûõ. MOV EAX, 1210h //2h - ôóýúöøÿ//10h - òõúòþð ôþñòóÿð. MOV AL, 06h //6h - Íþüõð ôóýúöøø óñòðýþòûõýýþóþ ðõö. MOV EBX, (1 * 1) + (640 * 200) //ðððüõòðû òøôõþðõöøüð. MOV ECX, OFFSET SzGrfSc2 //ð÷üõð ñóôõðð //øôõþÿðüÿòø (640 * 200 * 2) MOV EAX, 0 //úð÷ðýøõ òõðõýõóþ ûõòþóþ óóûð ýð ôøñÿûõõ. MOV EBX,EDX //òÿ÷ðòü ÿðððüõòðû ñ ñûþúþü ôðýýûõ. DEC EDX //þòûõ ÷ýð÷õýøÿ óñòðýðòûøòðþòüñÿ òEDX NEG EDX //ñûþòýðÿ ôøúñðöøÿ òþ ôûðóõ ðõóøñòððEDX CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //þññòòõýýþ, ôøúñðöøÿ ò ÿðüÿòø. //ñòðýþòøòü þòòõòýûù ñøóýðû þñððñþòðýýþóþ //÷þñððöõýøÿ ò ÿðüÿòü ÷ýðúþóõýõððòþðð //ððôø÷õñúþóþ ðôðÿòõðð. PUSH DS //ðñòðþøòü ñõóüõýòýûõ ðõóøñòðû POP ES //ð þñûðñòü ôðýýûõ. MOV ES,EAX MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 236 //N AL,EDX //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 0 //õóøñòð üðñúø öòõòð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ MOV AL, 0 //õóøñòð Öòõòð db 238 //UT EDX, AL //ñòðýþòúð öòõòð //÷øñòøòü ñðùò (òñõ ÿøúñõûû ñðùòð) //OV BYTE PTR ES:[BX], 0 //ðÿððòûõýøõ þòòõòýþóþ ñøóýðûð ò ÷ýðúþóõýõððòþð //ððôø÷õñúþóþ ðôðÿòõðð. // ýð÷ðûõ, ÿðþòõðøòü ôþñòóÿ ú òøôõþ ðôðÿòõðó OUT 10h, AL MOV ECX, OFFSET SizeBuff //ðúñ. ðð÷üõð ÷ðóðóöðõüþù //ðþóððüüû - 64 úñ. //þñûðòü ýð ýõóþ òõúóùõþ ñðùòþòóþ üðñúó IN AL, 10h // Âþñüüøðø÷ýðÿ úþüñøýðöøÿ ôûÿ IN AL, 10h // øøýû, ñòÿ÷ûòðþùõù òøôõþ ðôðÿòõð IN AL, 10h // ñ ôøñÿûõõü (üþýøòþðþü) IN AL, 10h // IN AL, 10h // IN AL, 10h // IN AL, 10h // IN AL, 10h // CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //ðôøúñøðþòðòü ò ÿðüÿòø //ðþ÷øòðýýûõ ÿðððüõòðû //ûòþô ÿøúñõûþò þòþñððöõýøÿ ýð ôøñÿûõù, //ðø ÷ðôðýýþü ðõöøüõ. INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EBX, 0000h //ð÷ðòü ñ ñðùòð 0 ÿþ ASCII MOV ECX, 0002h //òð ñðùòð. Îôøý úþôøðóõò ñðüþ //òþñððöõýøõ, ð ôðóóþù õóþ öòõò. //ûòõñòø ñðùò ÿøúñõûþò ýð ôøñÿûõù. MOV EDI, 0000h //ýð÷õýøÿ þòþñððöõýøÿ ýð MOV ESI, 0000h //øñÿûõõ ÿðþø÷òþûüýû. //OV BYTE PTR ES:[BX], 00Fh INC EBX // ñûõôóþùõüó ñðùòó CLD //þôóþòþòøòüñÿ ú òûòþôó REP MOVSW //ûòþô ÿøúñõûþò ýð ôøñÿûõù, ò ððñøøðõýýþü //õöøüõ. //ð òûõþô ø÷ ÿþôÿðþóððüüû JMP QuitSub //õúñòþòþù ðõöøü 80 x 25 ñøüòþûþò, 2 öòõòð //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð Scr7: MOV EAX, 0B800h MOV DS,EAX //õðõô òõü, úðú ýð÷ðòü ÷ðóðó÷úó ýóöýþù //øñòõüýþù ÿðþóððüüû ø÷ úþýòðþû¸ðð //ððôø÷õñúþóþ ðôðÿòõðð ÿðþø÷òõñòø òõðñþòúó //þþòòõòñòòóþùõóþ òõúòþðð ÿðõðûòðýøÿ, ñ úþòþðûü //óôõü ððñþòðòü ø ÷ðýõñòø õóþ ò ñþþòòõòñòòóþùøù //ôðõñ ñõóüõýòýþóþ ñóôõðð þÿõððòøòýþù ÿðüÿòø. //1h - Ôûðó òõúòþðð ÷ðÿððøøòðõüþóþ þôýþ, ø÷ //ð¸õ þñýþòýûõ òøôõþðõöøüþò. MOV ES,EDX //ðñòðþõü ýð ýõóþ ES XOR EDI,EDI //S:DI -> ýð÷ðûþ òûôõûõýýþóþ ñûþúð MOV ECX, 2 // - ÷øñûþ ñðùòþò ò ñõóüõýòõ MOV EBX, 01h //õúòþð ÿðõðûòðýøÿ ÷ðýþñøüûù ò ñóôõð. PUSH EBX //ðôøúñøðþòðòü ÷ýð÷õýøõ ôûðóðEBX ø //þõððýøòü õóþ ôûÿ ôðûüýõùøøõ ôõùñòòøù. CLD //ðÿþûýÿòü òÿõð¸ô. REP STOSB //ðÿþûýõýøõ. //ðÿþûýøòü òòþðþù ñðùò ñøóüõýòð, ôûÿ úþýòðþûÿ //OV BYTE PTR ES:[DI], 0 //ðóðó÷øòü ýóöýóþ ñøñòõüýóþ ÿþôÿðþóððüüó ø÷ //øúðþñõõüû úþýòðþû¸ðð òøôõþðôðÿòõðð. MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 236 //N AL,EDX //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 0 //õóøñòð üðñúø öòõòð db 236 //N AL,EDX //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ MOV AL, 0 //õóøñòð Öòõòð db 236 //N AL,EDX //ñòðýþòúð öòõòð //õÿþñðõôñòòõýýðÿ ÷ðóðó÷úð ñøñòõüýþù ÿðþóððüüû //÷ ýðúþÿøòõûÿ úþýòðþû¸ðð óððôø÷õñúþóþ ðôðÿòõðð //õûøúþü, òðú úðú óñòðýþòûõý ýóöýûù ôûðó, ñóôõò //ûÿþûýÿòüñÿ ñþþòòõòñòòóþøðÿ ÿþôÿðþóððüüð. MOV ECX, OFFSET SizeBuff //ðúñ. ðð÷üõð ÷ðóðóöðõüþù //ðþóððüüû - 64 úñ. OUT 10h, AL // Âþñüüøðø÷ýðÿ úþüñøýðöøÿ ôûÿ OUT 10h, AL // øøýû, ñòÿ÷ûòðþùõù òøôõþ ðôðÿòõð OUT 10h, AL // ñ ôøñÿûõõü (üþýøòþðþü) OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //ðôøúñøðþòðòü ò ÿðüÿòø //ðþ÷øòðýýûõ ÿðððüõòðû POP DS //ñòþñþôøòü ñþõððý¸ýýûõ POP ES //õóøñòðû //ðôðòü ÿðððüõòðû òõðòøúðûüýþóþ ñüõùõýøÿ //ð ôøñÿûõõ, õñûø òðõñóõòüñÿ. Ýòþ ôõûðõòñÿ //ûÿ òþóþ, ÷òþ ýòøü ñüõùõýøõü øýøöøøðþòðòü //õûðòõûüýûù òõúñòþòþù øûø óððôø÷õñúøù ðõöøü // ÷ðôðýýûüø ÿðððüõòððüø. Íóöýûù ðõöøü //þñòøóðõòüñÿ ÷ð ñ÷¸ò øñúðöõýøÿ þòþñððöõýøÿ //ôýþóþ ø÷ òð¸õ þñýþòýûõ ðõöøüþò. // ýðøõü ñûó÷ðõ, þòþñððöõýøõ òøôõþðõöøüð 80 x 50, //ðñòÿóøòðõòüñÿ ò þòþñððöõýøõ 80 x 25 ÿøúñõûõù. //óýúöøÿ - 01h þôýþóþ ø÷ òð¸õ þñýþòýûõ ðõöøüþò. MOV AH, 01h //óýúöøÿ 01h Âøôõþ ôððùòõðð. MOV ES,EAX //þòþóþ öøúûð ñ òøôõþñóôõðþü. MOV EAX, 0110h //þòòõðöôõýøõ þñýþòýþù ôóýúöøø. PUSH EAX //ðôøúñøðþòðòü ÷ýð÷õýøõ ôûðóðEAX. POP ECX //ýð÷õýøõ ôûðóðECX õù¸ ýõ þÿðõôõûõýþ. MOV AL, 00h //þô ÿðþø÷òþûüýþóþ ÿøúñõûð. MOV EAX, 0 //úð÷ðýøõ òõðõýõóþ ûõòþóþ óóûð ýð ôøñÿûõõ. MOV EBX, (8 * 8) + (80 * 50) //ðððüõòðû òøôõþðõöøüð. MOV EBX,EAX //ñòðýþòúð ñòÿ÷ø ðõóøñòðþò. MOV ECX, 8000h //ð÷üõð ñóôõðð òøôõþÿðüÿòø (80 * 50 * 2) MOV CH, 01h //õòûù òõðõýøù óóþû MOV CL, 80h //ððòûù òõðõýøù óóþû MOV DH, 50h //õòûù ýøöýøù óóþû ADD DH, 25h //ðøñðòøòü ú óúð÷ðýýþüó ÷ýð÷õýøþ ÿþ òõðò. MOV DL, 80h //ððòûù ýøöýøù óóþû AAA //ñ¸, óöõ þÿðõôõûõýþ úðú ýðôþ. MOV EBX, (8 * 8) + (80 * 25) //þòûõ ÿðððüõòðû òøôõþðõöøüð. MOV EBX,EAX //þòòþðýðÿ óñòðýþòúð ñòÿ÷ø ðõóøñòðþò. INC EDX //þòûõ ÷ýð÷õýøÿ óñòðýðòûøòðþòüñÿ òEDX NEG EDX //ñûþòýðÿ ôøúñðöøÿ òþ ôûðóõ ðõóøñòððEDX MOV ECX, 4000h //þòûù ðð÷üõð ñóôõðð òøôõþÿðüÿòø (80 * 25 * 2) REPE CMPSB //ððòýõýøõ ÿþûó÷õýýûõ ÿðððüõòðþò òøôõþðõöøüð. //úðýøðþòðòü òøôõþñóôõð þòþñððöõýøÿ ÿøúñõûþò ñ öõûüþ //þûó÷õýøÿ, ÿþñûõôóþùõóþ õñòõñòòõýýþóþ øûø øñúðö¸ýýþóþ //òþñððöõýøÿ ÿøúñõûþò ýð ôøñÿûõõ ò öõûðõüþü òøôõþðõöøüõ. MOV ECX, 9999h //úð÷ðòõûü ýð úþýõö ÿðþóððüüû ò ñóôõðõ. CMP CL, 0 //ð÷üõð òõûð ÿðþóððüüû ò ñóôõðõ ýõ ø÷òõñòõý. XOR CH, CH //õÿõðüECX = CL ôûøýð ñóôõðð òøôõþÿðüÿòø. MOV EDI, 0000h //S:DI -> õòþñò ò PSP MOV EBX, 0110h //úð÷ðýøõ ýð ðôðõñ òõûð ñøñòõüýþù MOV EBX,ESI //ðþóððüüû ò òøôõþñóôõðõ ÿþ ñþþòòõò- MOV ESI, 0110h //òòóþùøü òõúòþððü: //1h - òõúòþð ðõöøüð //0h - òõúòþð òøôõþ ðôðÿòõðð XCHG AL, AH //òÿ÷ü ôûðóþò ðõóøñòðþò. AAA //þððõúöøÿ ôûðóþò ðõóøñòðð. MOV EAX,ESI //þúððòøòü òõûþ òøôõþñóôõðð MOV EAX, (8000) / 2 //þ ýóöýþóþ ðð÷üõðð. CMC //þôóþòþòøòü ñóôõð ú ýþòþüó ÷ðÿþûýõýøþ CLD //þúððùðòü úðöôûù òòþðþù ñðùò ò òøôõþ ñóôõðõ. REPE SCASB //úðýøðþòðòü òøôõþñóôõð ôþ ÿþûýþóþ ðõ÷óûüòðòð. AAD //öõ ýõ ÿðõôÿðøýøüðòü, ýø úðúøõ ÿþÿûòþú ú ø÷úÿòøþ. //ðÿøñðòü ýòø ÿðððüõòðû ø üðññøò ñðüþóþ òøôõþñóôõðð // þÿõððòøòýóþ ÿðüÿòü, ôûÿ ôðûüýõûüøõóþ øñÿþûü÷þòðýøÿ // òõúóùõü òøôõþðõöøüõ. PUSH ECX //ð÷üõð ñóôõðð òøôõþÿðüÿòø ø÷òõñòõý. POP EDX //ðýýûõ, õóþ ñþôõðöøüþóþ ÿðþø÷òþûüýûõ. MOV EAX, 0110h //1h - ôóýúöøÿ//10h - òõúòþð ôþñòóÿð. MOV AL, 07h //7h - Íþüõð ôóýúöøø óñòðýþòûõýýþóþ ðõö. MOV EBX, (8 * 8) + (80 * 25) //ðððüõòðû òøôõþðõöøüð. MOV ECX, 4000h //ð÷üõð ñóôõðð òøôõþÿðüÿòø (80 * 25 * 2) MOV EAX, 0 //úð÷ðýøõ òõðõýõóþ ûõòþóþ óóûð ýð ôøñÿûõõ. MOV EBX,EDX //òÿ÷ðòü ÿðððüõòðû ñ ñûþúþü ôðýýûõ. INC EDX //þòûõ ÷ýð÷õýøÿ óñòðýðòûøòðþòüñÿ òEDX NEG EDX //ñûþòýðÿ ôøúñðöøÿ òþ ôûðóõ ðõóøñòððEDX CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //þññòòõýýþ, ôøúñðöøÿ ò ÿðüÿòø. //ñòðýþòøòü þòòõòýûù ñøóýðû þñððñþòðýýþóþ //÷þñððöõýøÿ ò ÿðüÿòü ÷ýðúþóõýõððòþðð //ððôø÷õñúþóþ ðôðÿòõðð. PUSH DS //ðñòðþøòü ñõóüõýòýûõ ðõóøñòðû POP ES //ð þñûðñòü ôðýýûõ. MOV ES,EAX MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 236 //N AL,EDX //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 0 //õóøñòð üðñúø öòõòð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ MOV AL, 0 //õóøñòð Öòõòð db 238 //UT EDX, AL //ñòðýþòúð öòõòð //÷øñòøòü ñðùò (òñõ ÿøúñõûû ñðùòð) //OV BYTE PTR ES:[BX], 0 //ðÿððòûõýøõ þòòõòýþóþ ñøóýðûð ò ÷ýðúþóõýõððòþð //ððôø÷õñúþóþ ðôðÿòõðð. // ýð÷ðûõ, ÿðþòõðøòü ôþñòóÿ ú òøôõþ ðôðÿòõðó OUT 10h, AL MOV ECX, OFFSET SizeBuff //ðúñ. ðð÷üõð ÷ðóðóöðõüþù //ðþóððüüû - 64 úñ. //þñûðòü ýð ýõóþ òõúóùõþ ñðùòþòóþ üðñúó IN AL, 10h // Âþñüüøðø÷ýðÿ úþüñøýðöøÿ ôûÿ IN AL, 10h // øøýû, ñòÿ÷ûòðþùõù òøôõþ ðôðÿòõð IN AL, 10h // ñ ôøñÿûõõü (üþýøòþðþü) IN AL, 10h // IN AL, 10h // IN AL, 10h // IN AL, 10h // IN AL, 10h // CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //ðôøúñøðþòðòü ò ÿðüÿòø //ðþ÷øòðýýûõ ÿðððüõòðû //ûòþô ÿøúñõûþò þòþñððöõýøÿ ýð ôøñÿûõù, //ðø ÷ðôðýýþü ðõöøüõ. INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EBX, 0000h //ð÷ðòü ñ ñðùòð 0 ÿþ ASCII MOV ECX, 0002h //òð ñðùòð. Îôøý úþôøðóõò ñðüþ //òþñððöõýøõ, ð ôðóóþù õóþ öòõò. //ûòõñòø ñðùò ÿøúñõûþò ýð ôøñÿûõù. MOV EDI, 0000h //ýð÷õýøÿ þòþñððöõýøÿ ýð MOV ESI, 0000h //øñÿûõõ ÿðþø÷òþûüýû. //OV BYTE PTR ES:[BX], 00Fh INC EBX // ñûõôóþùõüó ñðùòó CLD //þôóþòþòøòüñÿ ú òûòþôó REP MOVSW //ûòþô ÿøúñõûþò ýð ôøñÿûõù, ò ððñøøðõýýþü //õöøüõ. //ð òûõþô ø÷ ÿþôÿðþóððüüû JMP QuitSub //ððõ÷õðòøðþòðýýðÿ ôóýúöøÿ //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð. Scr8: MOV EAX, 0B800h MOV DS,EAX //ððõ÷õðòøðþòðýýûù ñóôõð ôûÿ ñøñòõüýþù ÿðþóððüüû //ûÿþûýÿþùõù ôóýúöøø, ýõ ÿðõôóñüþòðõýýþù òøôõþ //ððùòõðþü ROM BIOS db 96 Dup (?) //ð òûõþô ø÷ ÿþôÿðþóððüüû JMP QuitSub //ððôø÷õñúøù ðõöøü 320 x 200 òþ÷õú, 16 öòõòþò //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð Scr9: MOV EAX, 0B800h MOV DS,EAX //õðõô òõü, úðú ýð÷ðòü ÷ðóðó÷úó ýóöýþù //øñòõüýþù ÿðþóððüüû ø÷ úþýòðþû¸ðð //ððôø÷õñúþóþ ðôðÿòõðð ÿðþø÷òõñòø òõðñþòúó //þþòòõòñòòóþùõóþ òõúòþðð ÿðõðûòðýøÿ, ñ úþòþðûü //óôõü ððñþòðòü ø ÷ðýõñòø õóþ ò ñþþòòõòñòòóþùøù //ôðõñ ñõóüõýòýþóþ ñóôõðð þÿõððòøòýþù ÿðüÿòø. //3h - Ôûðó òõúòþðð ÷ðÿððøøòðõüþóþ þôýþ, ø÷ //ð¸õ þñýþòýûõ òøôõþðõöøüþò. MOV ES,EDX //ðñòðþõü ýð ýõóþ ES XOR EDI,EDI //S:DI -> ýð÷ðûþ òûôõûõýýþóþ ñûþúð MOV ECX, 2 // - ÷øñûþ ñðùòþò ò ñõóüõýòõ MOV EBX, 13h //õúòþð ÿðõðûòðýøÿ ÷ðýþñøüûù ò ñóôõð. PUSH EBX //ðôøúñøðþòðòü ÷ýð÷õýøõ ôûðóðEBX ø //þõððýøòü õóþ ôûÿ ôðûüýõùøøõ ôõùñòòøù. CLD //ðÿþûýÿòü òÿõð¸ô. REP STOSB //ðÿþûýõýøõ. //ðÿþûýøòü òòþðþù ñðùò ñøóüõýòð, ôûÿ úþýòðþûÿ //OV BYTE PTR ES:[DI], 0 //ðóðó÷øòü ýóöýóþ ñøñòõüýóþ ÿþôÿðþóððüüó ø÷ //øúðþñõõüû úþýòðþû¸ðð òøôõþðôðÿòõðð. MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 236 //N AL,EDX //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 0 //õóøñòð üðñúø öòõòð db 236 //N AL,EDX //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ MOV AL, 0 //õóøñòð Öòõòð db 236 //N AL,EDX //ñòðýþòúð öòõòð //õÿþñðõôñòòõýýðÿ ÷ðóðó÷úð ñøñòõüýþù ÿðþóððüüû //÷ ýðúþÿøòõûÿ úþýòðþû¸ðð óððôø÷õñúþóþ ðôðÿòõðð //õûøúþü, òðú úðú óñòðýþòûõý ýóöýûù ôûðó, ñóôõò //ûÿþûýÿòüñÿ ñþþòòõòñòòóþøðÿ ÿþôÿðþóððüüð. MOV ECX, OFFSET SizeBuff //ðúñ. ðð÷üõð ÷ðóðóöðõüþù //ðþóððüüû - 64 úñ. OUT 10h, AL // Âþñüüøðø÷ýðÿ úþüñøýðöøÿ ôûÿ OUT 10h, AL // øøýû, ñòÿ÷ûòðþùõù òøôõþ ðôðÿòõð OUT 10h, AL // ñ ôøñÿûõõü (üþýøòþðþü) OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //ðôøúñøðþòðòü ò ÿðüÿòø //ðþ÷øòðýýûõ ÿðððüõòðû POP DS //ñòþñþôøòü ñþõððý¸ýýûõ POP ES //õóøñòðû //ðôðòü ÿðððüõòðû òõðòøúðûüýþóþ ñüõùõýøÿ //ð ôøñÿûõõ, õñûø òðõñóõòüñÿ. Ýòþ ôõûðõòñÿ //ûÿ òþóþ, ÷òþ ýòøü ñüõùõýøõü øýøöøøðþòðòü //õûðòõûüýûù òõúñòþòþù øûø óððôø÷õñúøù ðõöøü // ÷ðôðýýûüø ÿðððüõòððüø. Íóöýûù ðõöøü //þñòøóðõòüñÿ ÷ð ñ÷¸ò øñúðöõýøÿ þòþñððöõýøÿ //ôýþóþ ø÷ òð¸õ þñýþòýûõ ðõöøüþò. // ýðøõü ñûó÷ðõ, ýòþ þòþñððöõýøõ òøôõþðõöøüð 320 x 200 //óýúöøÿ - 13h þôýþóþ ø÷ òð¸õ þñýþòýûõ ðõöøüþò. MOV AH, 13h //óýúöøÿ 13h Âøôõþ ôððùòõðð. MOV ES,EAX //þòþóþ öøúûð ñ òøôõþñóôõðþü. MOV EAX, 1310h //þòòõðöôõýøõ þñýþòýþù ôóýúöøø. PUSH EAX //ðôøúñøðþòðòü ÷ýð÷õýøõ ôûðóðEAX. POP ECX //ýð÷õýøõ ôûðóðECX õù¸ ýõ þÿðõôõûõýþ. MOV AL, 00h //þô ÿðþø÷òþûüýþóþ ÿøúñõûð. MOV EAX, 1 //úð÷ðýøõ òõðõýõóþ ûõòþóþ óóûð ýð ôøñÿûõõ. MOV EBX, (2 * 2) + (320 * 200) //ðððüõòðû òøôõþðõöøüð. MOV EBX,EAX //ñòðýþòúð ñòÿ÷ø ðõóøñòðþò. //ðððüõòðû þòþñððöõýøÿ òõúñòð ò óððôø÷õñúþü ðõöøüõ. MOV CH, 01h //õòûù òõðõýøù óóþû MOV CL, 40h //ððòûù òõðõýøù óóþû MOV DH, 25h //õòûù ýøöýøù óóþû MOV DL, 40h //ððòûù ýøöýøù óóþû AAA //ñ¸, óöõ þÿðõôõûõýþ úðú ýðôþ. MOV EBX, (2 * 2) + (320 * 200) //òðýôððòýûõ ÿðððüõòðû ðõöøüð. MOV EBX,EAX //þòòþðýðÿ óñòðýþòúð ñòÿ÷ø ðõóøñòðþò. DEC EDX //þòûõ ÷ýð÷õýøÿ óñòðýðòûøòðþòüñÿ òEDX NEG EDX //ñûþòýðÿ ôøúñðöøÿ òþ ôûðóõ ðõóøñòððEDX MOV ECX, OFFSET SzGrfSc1 //ð÷üõð ñóôõðð //øôõþÿðüÿòø (320 * 200 * 2) REPE CMPSB //ððòýõýøõ ÿþûó÷õýýûõ ÿðððüõòðþò òøôõþðõöøüð. //úðýøðþòðòü òøôõþñóôõð þòþñððöõýøÿ ÿøúñõûþò ñ öõûüþ //þûó÷õýøÿ, ÿþñûõôóþùõóþ õñòõñòòõýýþóþ øûø øñúðö¸ýýþóþ //òþñððöõýøÿ ÿøúñõûþò ýð ôøñÿûõõ ò öõûðõüþü òøôõþðõöøüõ. MOV ECX, 9999h //úð÷ðòõûü ýð úþýõö ÿðþóððüüû ò ñóôõðõ. CMP CL, 0 //ð÷üõð òõûð ÿðþóððüüû ò ñóôõðõ ýõ ø÷òõñòõý. XOR CH, CH //õÿõðüECX = CL ôûøýð ñóôõðð òøôõþÿðüÿòø. MOV EDI, 0000h //S:DI -> õòþñò ò PSP MOV EBX, 1310h //úð÷ðýøõ ýð ðôðõñ òõûð ñøñòõüýþù MOV EBX,ESI //ðþóððüüû ò òøôõþñóôõðõ ÿþ ñþþòòõò- MOV ESI, 1310h //òòóþùøü òõúòþððü: //3h - òõúòþð ðõöøüð //0h - òõúòþð òøôõþ ðôðÿòõðð XCHG AL, AH //òÿ÷ü ôûðóþò ðõóøñòðþò. AAA //þððõúöøÿ ôûðóþò ðõóøñòðð. MOV EAX,ESI MOV EAX, OFFSET SzGrfSc1 //ð÷üõð ñòðýôððòýþóþ òøôõþñóôõðð. CMC //þôóþòþòøòü ñóôõð ú ýþòþüó ÷ðÿþûýõýøþ CLD //úðýøðþòðòü òÿõð¸ô REPE SCASB //úðýøðþòðòü òøôõþñóôõð ôþ ÿþûýþóþ ðõ÷óûüòðòð. AAD //öõ ýõ ÿðõôÿðøýøüðòü, ýø úðúøõ ÿþÿûòþú ú óñòðýþòúõ //øôõþ ÿðððüõòðþò. //ðÿøñðòü ýòø ÿðððüõòðû ø üðññøò ñðüþóþ òøôõþñóôõðð // þÿõððòøòýóþ ÿðüÿòü, ôûÿ ôðûüýõûüøõóþ øñÿþûü÷þòðýøÿ // òõúóùõü òøôõþðõöøüõ. PUSH ECX //ð÷üõð ñóôõðð òøôõþÿðüÿòø ø÷òõñòõý. POP EDX //ðýýûõ, õóþ ñþôõðöøüþóþ ÿðþø÷òþûüýûõ. MOV EAX, 1310h //3h - ôóýúöøÿ//10h - òõúòþð ôþñòóÿð. MOV AL, 09h //9h - Íþüõð ôóýúöøø óñòðýþòûõýýþóþ ðõö. MOV EBX, (2 * 2) + (320 * 200) //ðððüõòðû òøôõþðõöøüð. MOV ECX, OFFSET SzGrfSc1 //ð÷üõð ñóôõðð //øôõþÿðüÿòø (320 * 200 * 2) MOV EAX, 0 //úð÷ðýøõ òõðõýõóþ ûõòþóþ óóûð ýð ôøñÿûõõ. MOV EBX,EDX //òÿ÷ðòü ÿðððüõòðû ñ ñûþúþü ôðýýûõ. DEC EDX //þòûõ ÷ýð÷õýøÿ óñòðýðòûøòðþòüñÿ òEDX NEG EDX //ñûþòýðÿ ôøúñðöøÿ òþ ôûðóõ ðõóøñòððEDX CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //þññòòõýýþ, ôøúñðöøÿ ò ÿðüÿòø. //ñòðýþòøòü þòòõòýûù ñøóýðû þñððñþòðýýþóþ //÷þñððöõýøÿ ò ÿðüÿòü ÷ýðúþóõýõððòþðð //ððôø÷õñúþóþ ðôðÿòõðð. PUSH DS //ðñòðþøòü ñõóüõýòýûõ ðõóøñòðû POP ES //ð þñûðñòü ôðýýûõ. MOV ES,EAX MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 236 //N AL,EDX //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 0 //õóøñòð üðñúø öòõòð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ MOV AL, 0 //õóøñòð Öòõòð db 238 //UT EDX, AL //ñòðýþòúð öòõòð //÷øñòøòü ñðùò (òñõ ÿøúñõûû ñðùòð) //OV BYTE PTR ES:[BX], 0 //ðÿððòûõýøõ þòòõòýþóþ ñøóýðûð ò ÷ýðúþóõýõððòþð //ððôø÷õñúþóþ ðôðÿòõðð. // ýð÷ðûõ, ÿðþòõðøòü ôþñòóÿ ú òøôõþ ðôðÿòõðó OUT 10h, AL MOV ECX, OFFSET SizeBuff //ðúñ. ðð÷üõð ÷ðóðóöðõüþù //ðþóððüüû - 64 úñ. //þñûðòü ýð ýõóþ òõúóùõþ ñðùòþòóþ üðñúó IN AL, 10h // Âþñüüøðø÷ýðÿ úþüñøýðöøÿ ôûÿ IN AL, 10h // øøýû, ñòÿ÷ûòðþùõù òøôõþ ðôðÿòõð IN AL, 10h // ñ ôøñÿûõõü (üþýøòþðþü) IN AL, 10h // IN AL, 10h // IN AL, 10h // IN AL, 10h // IN AL, 10h // CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //ðôøúñøðþòðòü ò ÿðüÿòø //ðþ÷øòðýýûõ ÿðððüõòðû //ûòþô ÿøúñõûþò þòþñððöõýøÿ ýð ôøñÿûõù, //ðø ÷ðôðýýþü ðõöøüõ. INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EBX, 0000h //ð÷ðòü ñ ñðùòð 0 ÿþ ASCII MOV ECX, 0002h //òð ñðùòð. Îôøý úþôøðóõò ñðüþ //òþñððöõýøõ, ð ôðóóþù õóþ öòõò. //ûòõñòø ñðùò ÿøúñõûþò ýð ôøñÿûõù. MOV EDI, 0000h //ýð÷õýøÿ þòþñððöõýøÿ ýð MOV ESI, 0000h //øñÿûõõ ÿðþø÷òþûüýû. //OV BYTE PTR ES:[BX], 00Fh INC EBX // ñûõôóþùõüó ñðùòó CLD //þôóþòþòøòüñÿ ú òûòþôó REP MOVSW //ûòþô ÿøúñõûþò ýð ôøñÿûõù, ò ððñøøðõýýþü //õöøüõ. //ð òûõþô ø÷ ÿþôÿðþóððüüû JMP QuitSub //ððôø÷õñúøù ðõöøü 640 x 200 òþ÷õú, 4 öòõòð //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð Scr10: MOV EAX, 0B800h MOV DS,EAX //õðõô òõü, úðú ýð÷ðòü ÷ðóðó÷úó ýóöýþù //øñòõüýþù ÿðþóððüüû ø÷ úþýòðþû¸ðð //ððôø÷õñúþóþ ðôðÿòõðð ÿðþø÷òõñòø òõðñþòúó //þþòòõòñòòóþùõóþ òõúòþðð ÿðõðûòðýøÿ, ñ úþòþðûü //óôõü ððñþòðòü ø ÷ðýõñòø õóþ ò ñþþòòõòñòòóþùøù //ôðõñ ñõóüõýòýþóþ ñóôõðð þÿõððòøòýþù ÿðüÿòø. //2h - Ôûðó òõúòþðð ÷ðÿððøøòðõüþóþ þôýþ, ø÷ //ð¸õ þñýþòýûõ òøôõþðõöøüþò. MOV ES,EDX //ðñòðþõü ýð ýõóþ ES XOR EDI,EDI //S:DI -> ýð÷ðûþ òûôõûõýýþóþ ñûþúð MOV ECX, 2 // - ÷øñûþ ñðùòþò ò ñõóüõýòõ MOV EBX, 12h //õúòþð ÿðõðûòðýøÿ ÷ðýþñøüûù ò ñóôõð. PUSH EBX //ðôøúñøðþòðòü ÷ýð÷õýøõ ôûðóðEBX ø //þõððýøòü õóþ ôûÿ ôðûüýõùøøõ ôõùñòòøù. CLD //ðÿþûýÿòü òÿõð¸ô. REP STOSB //ðÿþûýõýøõ. //ðÿþûýøòü òòþðþù ñðùò ñøóüõýòð, ôûÿ úþýòðþûÿ //OV BYTE PTR ES:[DI], 0 //ðóðó÷øòü ýóöýóþ ñøñòõüýóþ ÿþôÿðþóððüüó ø÷ //øúðþñõõüû úþýòðþû¸ðð òøôõþðôðÿòõðð. MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 236 //N AL,EDX //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 0 //õóøñòð üðñúø öòõòð db 236 //N AL,EDX //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ MOV AL, 0 //õóøñòð Öòõòð db 236 //N AL,EDX //ñòðýþòúð öòõòð //õÿþñðõôñòòõýýðÿ ÷ðóðó÷úð ñøñòõüýþù ÿðþóððüüû //÷ ýðúþÿøòõûÿ úþýòðþû¸ðð óððôø÷õñúþóþ ðôðÿòõðð //õûøúþü, òðú úðú óñòðýþòûõý ýóöýûù ôûðó, ñóôõò //ûÿþûýÿòüñÿ ñþþòòõòñòòóþøðÿ ÿþôÿðþóððüüð. MOV ECX, OFFSET SizeBuff //ðúñ. ðð÷üõð ÷ðóðóöðõüþù //ðþóððüüû - 64 úñ. OUT 10h, AL // Âþñüüøðø÷ýðÿ úþüñøýðöøÿ ôûÿ OUT 10h, AL // øøýû, ñòÿ÷ûòðþùõù òøôõþ ðôðÿòõð OUT 10h, AL // ñ ôøñÿûõõü (üþýøòþðþü) OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //ðôøúñøðþòðòü ò ÿðüÿòø //ðþ÷øòðýýûõ ÿðððüõòðû POP DS //ñòþñþôøòü ñþõððý¸ýýûõ POP ES //õóøñòðû //ðôðòü ÿðððüõòðû òõðòøúðûüýþóþ ñüõùõýøÿ //ð ôøñÿûõõ, õñûø òðõñóõòüñÿ. Ýòþ ôõûðõòñÿ //ûÿ òþóþ, ÷òþ ýòøü ñüõùõýøõü øýøöøøðþòðòü //õûðòõûüýûù òõúñòþòþù øûø óððôø÷õñúøù ðõöøü // ÷ðôðýýûüø ÿðððüõòððüø. Íóöýûù ðõöøü //þñòøóðõòüñÿ ÷ð ñ÷¸ò øñúðöõýøÿ þòþñððöõýøÿ //ôýþóþ ø÷ òð¸õ þñýþòýûõ ðõöøüþò. // ýðøõü ñûó÷ðõ, þòþñððöõýøõ òøôõþðõöøüð 640 x 400 //ðñòÿóøòðõòñÿ ò þòþñððöõýøõ 640 x 200 ÿøúñõûõù. //óýúöøÿ - 12h þôýþóþ ø÷ òð¸õ þñýþòýûõ ðõöøüþò. MOV AH, 12h //óýúöøÿ 12h Âøôõþ ôððùòõðð. MOV ES,EAX //þòþóþ öøúûð ñ òøôõþñóôõðþü. MOV EAX, 1210h //þòòõðöôõýøõ þñýþòýþù ôóýúöøø. PUSH EAX //ðôøúñøðþòðòü ÷ýð÷õýøõ ôûðóðEAX. POP ECX //ýð÷õýøõ ôûðóðECX õù¸ ýõ þÿðõôõûõýþ. MOV AL, 00h //þô ÿðþø÷òþûüýþóþ ÿøúñõûð. MOV EAX, 0 //úð÷ðýøõ òõðõýõóþ ûõòþóþ óóûð ýð ôøñÿûõõ. MOV EBX, (1 * 1) + (640 * 400) //ðððüõòðû òøôõþðõöøüð. MOV EBX,EAX //ñòðýþòúð ñòÿ÷ø ðõóøñòðþò. MOV ECX, OFFSET SzGrfSc5 //ð÷üõð ñóôõðð //øôõþÿðüÿòø (640 * 400 * 2) //ðððüõòðû þòþñððöõýøÿ òõúñòð ò óððôø÷õñúþü ðõöøüõ. MOV CH, 01h //õòûù òõðõýøù óóþû MOV CL, 80h //ððòûù òõðõýøù óóþû MOV DH, 25h //õòûù ýøöýøù óóþû SUB DH, 12h //òýÿòü þò óúð÷ðýýþóþ ÷ýð÷õýøÿ ÿþ òõðò. DAA //þðõúöøÿ ñôõûðýýþóþ þðõôõûõýøÿ SUB EDX, 0200h //òýÿòü þò óúð÷ðýýþóþ ÷ýð÷õýøÿ ÿþ òõðò. MOV DL, 80h //ððòûù ýøöýøù óóþû AAA //ñ¸, óöõ þÿðõôõûõýþ úðú ýðôþ. MOV EBX, (1 * 1) + (640 * 200) //òðýôððòýûõ ÿðððüõòðû ðõöøüð. MOV EBX,EAX //þòòþðýðÿ óñòðýþòúð ñòÿ÷ø ðõóøñòðþò. DEC EDX //þòûõ ÷ýð÷õýøÿ óñòðýðòûøòðþòüñÿ òEDX NEG EDX //ñûþòýðÿ ôøúñðöøÿ òþ ôûðóõ ðõóøñòððEDX MOV ECX, OFFSET SzGrfSc2 //ð÷üõð ñóôõðð //øôõþÿðüÿòø (640 * 200 * 2) REPE CMPSB //ððòýõýøõ ÿþûó÷õýýûõ ÿðððüõòðþò òøôõþðõöøüð. //úðýøðþòðòü òøôõþñóôõð þòþñððöõýøÿ ÿøúñõûþò ñ öõûüþ //þûó÷õýøÿ, ÿþñûõôóþùõóþ õñòõñòòõýýþóþ øûø øñúðö¸ýýþóþ //òþñððöõýøÿ ÿøúñõûþò ýð ôøñÿûõõ ò öõûðõüþü òøôõþðõöøüõ. MOV ECX, 9999h //úð÷ðòõûü ýð úþýõö ÿðþóððüüû ò ñóôõðõ. CMP CL, 0 //ð÷üõð òõûð ÿðþóððüüû ò ñóôõðõ ýõ ø÷òõñòõý. XOR CH, CH //õÿõðüECX = CL ôûøýð ñóôõðð òøôõþÿðüÿòø. MOV EDI, 0000h //S:DI -> õòþñò ò PSP MOV EBX, 1210h //úð÷ðýøõ ýð ðôðõñ òõûð ñøñòõüýþù MOV EBX,ESI //ðþóððüüû ò òøôõþñóôõðõ ÿþ ñþþòòõò- MOV ESI, 1210h //òòóþùøü òõúòþððü: //2h - òõúòþð ðõöøüð //0h - òõúòþð òøôõþ ðôðÿòõðð XCHG AL, AH //òÿ÷ü ôûðóþò ðõóøñòðþò. AAA //þððõúöøÿ ôûðóþò ðõóøñòðð. MOV EAX,ESI MOV EAX, OFFSET SzGrfSc2 //ð÷üõð ñòðýôððòýþóþ òøôõþñóôõðð. CMC //þôóþòþòøòü ñóôõð ú ýþòþüó ÷ðÿþûýõýøþ CLD //úðýøðþòðòü òÿõð¸ô REPE SCASB //úðýøðþòðòü òøôõþñóôõð ôþ ÿþûýþóþ ðõ÷óûüòðòð. AAD //öõ ýõ ÿðõôÿðøýøüðòü, ýø úðúøõ ÿþÿûòþú ú óñòðýþòúõ //øôõþ ÿðððüõòðþò. //ðÿøñðòü ýòø ÿðððüõòðû ø üðññøò ñðüþóþ òøôõþñóôõðð // þÿõððòøòýóþ ÿðüÿòü, ôûÿ ôðûüýõûüøõóþ øñÿþûü÷þòðýøÿ // òõúóùõü òøôõþðõöøüõ. PUSH ECX //ð÷üõð ñóôõðð òøôõþÿðüÿòø ø÷òõñòõý. POP EDX //ðýýûõ, õóþ ñþôõðöøüþóþ ÿðþø÷òþûüýûõ. MOV EAX, 1210h //2h - ôóýúöøÿ//10h - òõúòþð ôþñòóÿð. MOV AL, 0Ah //Ah - Íþüõð ôóýúöøø óñòðýþòûõýýþóþ ðõö. MOV EBX, (1 * 1) + (640 * 200) //ðððüõòðû òøôõþðõöøüð. MOV ECX, OFFSET SzGrfSc2 //ð÷üõð ñóôõðð //øôõþÿðüÿòø (640 * 200 * 2) MOV EAX, 0 //úð÷ðýøõ òõðõýõóþ ûõòþóþ óóûð ýð ôøñÿûõõ. MOV EBX,EDX //òÿ÷ðòü ÿðððüõòðû ñ ñûþúþü ôðýýûõ. DEC EDX //þòûõ ÷ýð÷õýøÿ óñòðýðòûøòðþòüñÿ òEDX NEG EDX //ñûþòýðÿ ôøúñðöøÿ òþ ôûðóõ ðõóøñòððEDX CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //þññòòõýýþ, ôøúñðöøÿ ò ÿðüÿòø. //ñòðýþòøòü þòòõòýûù ñøóýðû þñððñþòðýýþóþ //÷þñððöõýøÿ ò ÿðüÿòü ÷ýðúþóõýõððòþðð //ððôø÷õñúþóþ ðôðÿòõðð. PUSH DS //ðñòðþøòü ñõóüõýòýûõ ðõóøñòðû POP ES //ð þñûðñòü ôðýýûõ. MOV ES,EAX MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 236 //N AL,EDX //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 0 //õóøñòð üðñúø öòõòð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ MOV AL, 0 //õóøñòð Öòõòð db 238 //UT EDX, AL //ñòðýþòúð öòõòð //÷øñòøòü ñðùò (òñõ ÿøúñõûû ñðùòð) //OV BYTE PTR ES:[BX], 0 //ðÿððòûõýøõ þòòõòýþóþ ñøóýðûð ò ÷ýðúþóõýõððòþð //ððôø÷õñúþóþ ðôðÿòõðð. // ýð÷ðûõ, ÿðþòõðøòü ôþñòóÿ ú òøôõþ ðôðÿòõðó OUT 10h, AL MOV ECX, OFFSET SizeBuff //ðúñ. ðð÷üõð ÷ðóðóöðõüþù //ðþóððüüû - 64 úñ. //þñûðòü ýð ýõóþ òõúóùõþ ñðùòþòóþ üðñúó IN AL, 10h // Âþñüüøðø÷ýðÿ úþüñøýðöøÿ ôûÿ IN AL, 10h // øøýû, ñòÿ÷ûòðþùõù òøôõþ ðôðÿòõð IN AL, 10h // ñ ôøñÿûõõü (üþýøòþðþü) IN AL, 10h // IN AL, 10h // IN AL, 10h // IN AL, 10h // IN AL, 10h // CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //ðôøúñøðþòðòü ò ÿðüÿòø //ðþ÷øòðýýûõ ÿðððüõòðû //ûòþô ÿøúñõûþò þòþñððöõýøÿ ýð ôøñÿûõù, //ðø ÷ðôðýýþü ðõöøüõ. INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EBX, 0000h //ð÷ðòü ñ ñðùòð 0 ÿþ ASCII MOV ECX, 0002h //òð ñðùòð. Îôøý úþôøðóõò ñðüþ //òþñððöõýøõ, ð ôðóóþù õóþ öòõò. //ûòõñòø ñðùò ÿøúñõûþò ýð ôøñÿûõù. MOV EDI, 0000h //ýð÷õýøÿ þòþñððöõýøÿ ýð MOV ESI, 0000h //øñÿûõõ ÿðþø÷òþûüýû. //OV BYTE PTR ES:[BX], 00Fh INC EBX // ñûõôóþùõüó ñðùòó CLD //þôóþòþòøòüñÿ ú òûòþôó REP MOVSW //ûòþô ÿøúñõûþò ýð ôøñÿûõù, ò ððñøøðõýýþü //õöøüõ. //ð òûõþô ø÷ ÿþôÿðþóððüüû JMP QuitSub //ððõ÷õðòøðþòðýýðÿ ôóýúöøÿ //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð. Scr11: MOV EAX, 0B800h MOV DS,EAX //ððõ÷õðòøðþòðýýûù ñóôõð ôûÿ ñøñòõüýþù ÿðþóððüüû //ûÿþûýÿþùõù ôóýúöøø, ýõ ÿðõôóñüþòðõýýþù òøôõþ //ððùòõðþü ROM BIOS db 96 Dup (?) //ð òûõþô ø÷ ÿþôÿðþóððüüû JMP QuitSub //ððõ÷õðòøðþòðýýðÿ ôóýúöøÿ //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð. Scr12: MOV EAX, 0B800h MOV DS,EAX //ððõ÷õðòøðþòðýýûù ñóôõð ôûÿ ñøñòõüýþù ÿðþóððüüû //ûÿþûýÿþùõù ôóýúöøø, ýõ ÿðõôóñüþòðõýýþù òøôõþ //ððùòõðþü ROM BIOS db 96 Dup (?) //ð òûõþô ø÷ ÿþôÿðþóððüüû JMP QuitSub //ððôø÷õñúøù ðõöøü 320 x 200 òþ÷õú, 16 öòõòþò //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð Scr13: MOV EAX, 0B800h MOV DS,EAX //õðõô òõü, úðú ýð÷ðòü ÷ðóðó÷úó ýóöýþù //øñòõüýþù ÿðþóððüüû ø÷ úþýòðþû¸ðð //ððôø÷õñúþóþ ðôðÿòõðð ÿðþø÷òõñòø òõðñþòúó //þþòòõòñòòóþùõóþ òõúòþðð ÿðõðûòðýøÿ, ñ úþòþðûü //óôõü ððñþòðòü ø ÷ðýõñòø õóþ ò ñþþòòõòñòòóþùøù //ôðõñ ñõóüõýòýþóþ ñóôõðð þÿõððòøòýþù ÿðüÿòø. //3h - Ôûðó òõúòþðð ÷ðÿððøøòðõüþóþ þôýþ, ø÷ //ð¸õ þñýþòýûõ òøôõþðõöøüþò. MOV ES,EDX //ðñòðþõü ýð ýõóþ ES XOR EDI,EDI //S:DI -> ýð÷ðûþ òûôõûõýýþóþ ñûþúð MOV ECX, 2 // - ÷øñûþ ñðùòþò ò ñõóüõýòõ MOV EBX, 13h //õúòþð ÿðõðûòðýøÿ ÷ðýþñøüûù ò ñóôõð. PUSH EBX //ðôøúñøðþòðòü ÷ýð÷õýøõ ôûðóðEBX ø //þõððýøòü õóþ ôûÿ ôðûüýõùøøõ ôõùñòòøù. CLD //ðÿþûýÿòü òÿõð¸ô. REP STOSB //ðÿþûýõýøõ. //ðÿþûýøòü òòþðþù ñðùò ñøóüõýòð, ôûÿ úþýòðþûÿ //OV BYTE PTR ES:[DI], 0 //ðóðó÷øòü ýóöýóþ ñøñòõüýóþ ÿþôÿðþóððüüó ø÷ //øúðþñõõüû úþýòðþû¸ðð òøôõþðôðÿòõðð. MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 236 //N AL,EDX //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 0 //õóøñòð üðñúø öòõòð db 236 //N AL,EDX //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ MOV AL, 0 //õóøñòð Öòõòð db 236 //N AL,EDX //ñòðýþòúð öòõòð //õÿþñðõôñòòõýýðÿ ÷ðóðó÷úð ñøñòõüýþù ÿðþóððüüû //÷ ýðúþÿøòõûÿ úþýòðþû¸ðð óððôø÷õñúþóþ ðôðÿòõðð //õûøúþü, òðú úðú óñòðýþòûõý ýóöýûù ôûðó, ñóôõò //ûÿþûýÿòüñÿ ñþþòòõòñòòóþøðÿ ÿþôÿðþóððüüð. MOV ECX, OFFSET SizeBuff //ðúñ. ðð÷üõð ÷ðóðóöðõüþù //ðþóððüüû - 64 úñ. OUT 10h, AL // Âþñüüøðø÷ýðÿ úþüñøýðöøÿ ôûÿ OUT 10h, AL // øøýû, ñòÿ÷ûòðþùõù òøôõþ ðôðÿòõð OUT 10h, AL // ñ ôøñÿûõõü (üþýøòþðþü) OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //ðôøúñøðþòðòü ò ÿðüÿòø //ðþ÷øòðýýûõ ÿðððüõòðû POP DS //ñòþñþôøòü ñþõððý¸ýýûõ POP ES //õóøñòðû //ðôðòü ÿðððüõòðû òõðòøúðûüýþóþ ñüõùõýøÿ //ð ôøñÿûõõ, õñûø òðõñóõòüñÿ. Ýòþ ôõûðõòñÿ //ûÿ òþóþ, ÷òþ ýòøü ñüõùõýøõü øýøöøøðþòðòü //õûðòõûüýûù òõúñòþòþù øûø óððôø÷õñúøù ðõöøü // ÷ðôðýýûüø ÿðððüõòððüø. Íóöýûù ðõöøü //þñòøóðõòüñÿ ÷ð ñ÷¸ò øñúðöõýøÿ þòþñððöõýøÿ //ôýþóþ ø÷ òð¸õ þñýþòýûõ ðõöøüþò. // ýðøõü ñûó÷ðõ, ýòþ þòþñððöõýøõ òøôõþðõöøüð 320 x 200 //óýúöøÿ - 13h þôýþóþ ø÷ òð¸õ þñýþòýûõ ðõöøüþò. MOV AH, 13h //óýúöøÿ 13h Âøôõþ ôððùòõðð. MOV ES,EAX //þòþóþ öøúûð ñ òøôõþñóôõðþü. MOV EAX, 1310h //þòòõðöôõýøõ þñýþòýþù ôóýúöøø. PUSH EAX //ðôøúñøðþòðòü ÷ýð÷õýøõ ôûðóðEAX. POP ECX //ýð÷õýøõ ôûðóðECX õù¸ ýõ þÿðõôõûõýþ. MOV AL, 00h //þô ÿðþø÷òþûüýþóþ ÿøúñõûð. MOV EAX, 0 //úð÷ðýøõ òõðõýõóþ ûõòþóþ óóûð ýð ôøñÿûõõ. MOV EBX, (2 * 2) + (320 * 200) //ðððüõòðû òøôõþðõöøüð. MOV EBX,EAX //ñòðýþòúð ñòÿ÷ø ðõóøñòðþò. //ðððüõòðû þòþñððöõýøÿ òõúñòð ò óððôø÷õñúþü ðõöøüõ. MOV CH, 01h //õòûù òõðõýøù óóþû MOV CL, 40h //ððòûù òõðõýøù óóþû MOV DH, 25h //õòûù ýøöýøù óóþû MOV DL, 40h //ððòûù ýøöýøù óóþû AAA //ñ¸, óöõ þÿðõôõûõýþ úðú ýðôþ. MOV EBX, (2 * 2) + (320 * 200) //òðýôððòýûõ ÿðððüõòðû ðõöøüð. MOV EBX,EAX //þòòþðýðÿ óñòðýþòúð ñòÿ÷ø ðõóøñòðþò. DEC EDX //þòûõ ÷ýð÷õýøÿ óñòðýðòûøòðþòüñÿ òEDX NEG EDX //ñûþòýðÿ ôøúñðöøÿ òþ ôûðóõ ðõóøñòððEDX MOV ECX, OFFSET SzGrfSc1 //ð÷üõð ñóôõðð //øôõþÿðüÿòø (320 * 200 * 2) REPE CMPSB //ððòýõýøõ ÿþûó÷õýýûõ ÿðððüõòðþò òøôõþðõöøüð. //úðýøðþòðòü òøôõþñóôõð þòþñððöõýøÿ ÿøúñõûþò ñ öõûüþ //þûó÷õýøÿ, ÿþñûõôóþùõóþ õñòõñòòõýýþóþ øûø øñúðö¸ýýþóþ //òþñððöõýøÿ ÿøúñõûþò ýð ôøñÿûõõ ò öõûðõüþü òøôõþðõöøüõ. MOV ECX, 9999h //úð÷ðòõûü ýð úþýõö ÿðþóððüüû ò ñóôõðõ. CMP CL, 0 //ð÷üõð òõûð ÿðþóððüüû ò ñóôõðõ ýõ ø÷òõñòõý. XOR CH, CH //õÿõðüECX = CL ôûøýð ñóôõðð òøôõþÿðüÿòø. MOV EDI, 0000h //S:DI -> õòþñò ò PSP MOV EBX, 1310h //úð÷ðýøõ ýð ðôðõñ òõûð ñøñòõüýþù MOV EBX,ESI //ðþóððüüû ò òøôõþñóôõðõ ÿþ ñþþòòõò- MOV ESI, 1310h //òòóþùøü òõúòþððü: //3h - òõúòþð ðõöøüð //0h - òõúòþð òøôõþ ðôðÿòõðð XCHG AL, AH //òÿ÷ü ôûðóþò ðõóøñòðþò. AAA //þððõúöøÿ ôûðóþò ðõóøñòðð. MOV EAX,ESI MOV EAX, OFFSET SzGrfSc1 //ð÷üõð ñòðýôððòýþóþ òøôõþñóôõðð. CMC //þôóþòþòøòü ñóôõð ú ýþòþüó ÷ðÿþûýõýøþ CLD //úðýøðþòðòü òÿõð¸ô REPE SCASB //úðýøðþòðòü òøôõþñóôõð ôþ ÿþûýþóþ ðõ÷óûüòðòð. AAD //öõ ýõ ÿðõôÿðøýøüðòü, ýø úðúøõ ÿþÿûòþú ú óñòðýþòúõ //øôõþ ÿðððüõòðþò. //ðÿøñðòü ýòø ÿðððüõòðû ø üðññøò ñðüþóþ òøôõþñóôõðð // þÿõððòøòýóþ ÿðüÿòü, ôûÿ ôðûüýõûüøõóþ øñÿþûü÷þòðýøÿ // òõúóùõü òøôõþðõöøüõ. PUSH ECX //ð÷üõð ñóôõðð òøôõþÿðüÿòø ø÷òõñòõý. POP EDX //ðýýûõ, õóþ ñþôõðöøüþóþ ÿðþø÷òþûüýûõ. MOV EAX, 1310h //3h - ôóýúöøÿ//10h - òõúòþð ôþñòóÿð. MOV AL, 0Dh //Dh - Íþüõð ôóýúöøø óñòðýþòûõýýþóþ ðõö. MOV EBX, (2 * 2) + (320 * 200) //ðððüõòðû òøôõþðõöøüð. MOV ECX, OFFSET SzGrfSc1 //ð÷üõð ñóôõðð //øôõþÿðüÿòø (320 * 200 * 2) MOV EAX, 0 //úð÷ðýøõ òõðõýõóþ ûõòþóþ óóûð ýð ôøñÿûõõ. MOV EBX,EDX //òÿ÷ðòü ÿðððüõòðû ñ ñûþúþü ôðýýûõ. DEC EDX //þòûõ ÷ýð÷õýøÿ óñòðýðòûøòðþòüñÿ òEDX NEG EDX //ñûþòýðÿ ôøúñðöøÿ òþ ôûðóõ ðõóøñòððEDX CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //þññòòõýýþ, ôøúñðöøÿ ò ÿðüÿòø. //ñòðýþòøòü þòòõòýûù ñøóýðû þñððñþòðýýþóþ //÷þñððöõýøÿ ò ÿðüÿòü ÷ýðúþóõýõððòþðð //ððôø÷õñúþóþ ðôðÿòõðð. PUSH DS //ðñòðþøòü ñõóüõýòýûõ ðõóøñòðû POP ES //ð þñûðñòü ôðýýûõ. MOV ES,EAX MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 236 //N AL,EDX //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 0 //õóøñòð üðñúø öòõòð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ MOV AL, 0 //õóøñòð Öòõòð db 238 //UT EDX, AL //ñòðýþòúð öòõòð //÷øñòøòü ñðùò (òñõ ÿøúñõûû ñðùòð) //OV BYTE PTR ES:[BX], 0 //ðÿððòûõýøõ þòòõòýþóþ ñøóýðûð ò ÷ýðúþóõýõððòþð //ððôø÷õñúþóþ ðôðÿòõðð. // ýð÷ðûõ, ÿðþòõðøòü ôþñòóÿ ú òøôõþ ðôðÿòõðó OUT 10h, AL MOV ECX, OFFSET SizeBuff //ðúñ. ðð÷üõð ÷ðóðóöðõüþù //ðþóððüüû - 64 úñ. //þñûðòü ýð ýõóþ òõúóùõþ ñðùòþòóþ üðñúó IN AL, 10h // Âþñüüøðø÷ýðÿ úþüñøýðöøÿ ôûÿ IN AL, 10h // øøýû, ñòÿ÷ûòðþùõù òøôõþ ðôðÿòõð IN AL, 10h // ñ ôøñÿûõõü (üþýøòþðþü) IN AL, 10h // IN AL, 10h // IN AL, 10h // IN AL, 10h // IN AL, 10h // CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //ðôøúñøðþòðòü ò ÿðüÿòø //ðþ÷øòðýýûõ ÿðððüõòðû //ûòþô ÿøúñõûþò þòþñððöõýøÿ ýð ôøñÿûõù, //ðø ÷ðôðýýþü ðõöøüõ. INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EBX, 0000h //ð÷ðòü ñ ñðùòð 0 ÿþ ASCII MOV ECX, 0002h //òð ñðùòð. Îôøý úþôøðóõò ñðüþ //òþñððöõýøõ, ð ôðóóþù õóþ öòõò. //ûòõñòø ñðùò ÿøúñõûþò ýð ôøñÿûõù. MOV EDI, 0000h //ýð÷õýøÿ þòþñððöõýøÿ ýð MOV ESI, 0000h //øñÿûõõ ÿðþø÷òþûüýû. //OV BYTE PTR ES:[BX], 00Fh INC EBX // ñûõôóþùõüó ñðùòó CLD //þôóþòþòøòüñÿ ú òûòþôó REP MOVSW //ûòþô ÿøúñõûþò ýð ôøñÿûõù, ò ððñøøðõýýþü //õöøüõ. //ð òûõþô ø÷ ÿþôÿðþóððüüû JMP QuitSub //ððôø÷õñúøù ðõöøü 640 x 200 òþ÷õú, 16 öòõòþò //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð Scr14: MOV EAX, 0B800h MOV DS,EAX //õðõô òõü, úðú ýð÷ðòü ÷ðóðó÷úó ýóöýþù //øñòõüýþù ÿðþóððüüû ø÷ úþýòðþû¸ðð //ððôø÷õñúþóþ ðôðÿòõðð ÿðþø÷òõñòø òõðñþòúó //þþòòõòñòòóþùõóþ òõúòþðð ÿðõðûòðýøÿ, ñ úþòþðûü //óôõü ððñþòðòü ø ÷ðýõñòø õóþ ò ñþþòòõòñòòóþùøù //ôðõñ ñõóüõýòýþóþ ñóôõðð þÿõððòøòýþù ÿðüÿòø. //2h - Ôûðó òõúòþðð ÷ðÿððøøòðõüþóþ þôýþ, ø÷ //ð¸õ þñýþòýûõ òøôõþðõöøüþò. MOV ES,EDX //ðñòðþõü ýð ýõóþ ES XOR EDI,EDI //S:DI -> ýð÷ðûþ òûôõûõýýþóþ ñûþúð MOV ECX, 2 // - ÷øñûþ ñðùòþò ò ñõóüõýòõ MOV EBX, 12h //õúòþð ÿðõðûòðýøÿ ÷ðýþñøüûù ò ñóôõð. PUSH EBX //ðôøúñøðþòðòü ÷ýð÷õýøõ ôûðóðEBX ø //þõððýøòü õóþ ôûÿ ôðûüýõùøøõ ôõùñòòøù. CLD //ðÿþûýÿòü òÿõð¸ô. REP STOSB //ðÿþûýõýøõ. //ðÿþûýøòü òòþðþù ñðùò ñøóüõýòð, ôûÿ úþýòðþûÿ //OV BYTE PTR ES:[DI], 0 //ðóðó÷øòü ýóöýóþ ñøñòõüýóþ ÿþôÿðþóððüüó ø÷ //øúðþñõõüû úþýòðþû¸ðð òøôõþðôðÿòõðð. MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 236 //N AL,EDX //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 0 //õóøñòð üðñúø öòõòð db 236 //N AL,EDX //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ MOV AL, 0 //õóøñòð Öòõòð db 236 //N AL,EDX //ñòðýþòúð öòõòð //õÿþñðõôñòòõýýðÿ ÷ðóðó÷úð ñøñòõüýþù ÿðþóððüüû //÷ ýðúþÿøòõûÿ úþýòðþû¸ðð óððôø÷õñúþóþ ðôðÿòõðð //õûøúþü, òðú úðú óñòðýþòûõý ýóöýûù ôûðó, ñóôõò //ûÿþûýÿòüñÿ ñþþòòõòñòòóþøðÿ ÿþôÿðþóððüüð. MOV ECX, OFFSET SizeBuff //ðúñ. ðð÷üõð ÷ðóðóöðõüþù //ðþóððüüû - 64 úñ. OUT 10h, AL // Âþñüüøðø÷ýðÿ úþüñøýðöøÿ ôûÿ OUT 10h, AL // øøýû, ñòÿ÷ûòðþùõù òøôõþ ðôðÿòõð OUT 10h, AL // ñ ôøñÿûõõü (üþýøòþðþü) OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //ðôøúñøðþòðòü ò ÿðüÿòø //ðþ÷øòðýýûõ ÿðððüõòðû POP DS //ñòþñþôøòü ñþõððý¸ýýûõ POP ES //õóøñòðû //ðôðòü ÿðððüõòðû òõðòøúðûüýþóþ ñüõùõýøÿ //ð ôøñÿûõõ, õñûø òðõñóõòüñÿ. Ýòþ ôõûðõòñÿ //ûÿ òþóþ, ÷òþ ýòøü ñüõùõýøõü øýøöøøðþòðòü //õûðòõûüýûù òõúñòþòþù øûø óððôø÷õñúøù ðõöøü // ÷ðôðýýûüø ÿðððüõòððüø. Íóöýûù ðõöøü //þñòøóðõòüñÿ ÷ð ñ÷¸ò øñúðöõýøÿ þòþñððöõýøÿ //ôýþóþ ø÷ òð¸õ þñýþòýûõ ðõöøüþò. // ýðøõü ñûó÷ðõ, þòþñððöõýøõ òøôõþðõöøüð 640 x 400 //ðñòÿóøòðõòñÿ ò þòþñððöõýøõ 640 x 200 ÿøúñõûõù. //óýúöøÿ - 12h þôýþóþ ø÷ òð¸õ þñýþòýûõ ðõöøüþò. MOV AH, 12h //óýúöøÿ 12h Âøôõþ ôððùòõðð. MOV ES,EAX //þòþóþ öøúûð ñ òøôõþñóôõðþü. MOV EAX, 1210h //þòòõðöôõýøõ þñýþòýþù ôóýúöøø. PUSH EAX //ðôøúñøðþòðòü ÷ýð÷õýøõ ôûðóðEAX. POP ECX //ýð÷õýøõ ôûðóðECX õù¸ ýõ þÿðõôõûõýþ. MOV AL, 00h //þô ÿðþø÷òþûüýþóþ ÿøúñõûð. MOV EAX, 1 //úð÷ðýøõ òõðõýõóþ ûõòþóþ óóûð ýð ôøñÿûõõ. MOV EBX, (1 * 1) + (640 * 400) //ðððüõòðû òøôõþðõöøüð. MOV EBX,EAX //ñòðýþòúð ñòÿ÷ø ðõóøñòðþò. MOV ECX, OFFSET SzGrfSc5 //ð÷üõð ñóôõðð //øôõþÿðüÿòø (640 * 400 * 2) //ðððüõòðû þòþñððöõýøÿ òõúñòð ò óððôø÷õñúþü ðõöøüõ. MOV CH, 01h //õòûù òõðõýøù óóþû MOV CL, 80h //ððòûù òõðõýøù óóþû MOV DH, 25h //õòûù ýøöýøù óóþû SUB DH, 12h //òýÿòü þò óúð÷ðýýþóþ ÷ýð÷õýøÿ ÿþ òõðò. DAA //þðõúöøÿ ñôõûðýýþóþ þðõôõûõýøÿ SUB EDX, 0200h //òýÿòü þò óúð÷ðýýþóþ ÷ýð÷õýøÿ ÿþ òõðò. MOV DL, 80h //ððòûù ýøöýøù óóþû AAA //ñ¸, óöõ þÿðõôõûõýþ úðú ýðôþ. MOV EBX, (1 * 1) + (640 * 200) //òðýôððòýûõ ÿðððüõòðû ðõöøüð. MOV EBX,EAX //þòòþðýðÿ óñòðýþòúð ñòÿ÷ø ðõóøñòðþò. DEC EDX //þòûõ ÷ýð÷õýøÿ óñòðýðòûøòðþòüñÿ òEDX NEG EDX //ñûþòýðÿ ôøúñðöøÿ òþ ôûðóõ ðõóøñòððEDX MOV ECX, OFFSET SzGrfSc2 //ð÷üõð ñóôõðð //øôõþÿðüÿòø (640 * 200 * 2) REPE CMPSB //ððòýõýøõ ÿþûó÷õýýûõ ÿðððüõòðþò òøôõþðõöøüð. //úðýøðþòðòü òøôõþñóôõð þòþñððöõýøÿ ÿøúñõûþò ñ öõûüþ //þûó÷õýøÿ, ÿþñûõôóþùõóþ õñòõñòòõýýþóþ øûø øñúðö¸ýýþóþ //òþñððöõýøÿ ÿøúñõûþò ýð ôøñÿûõõ ò öõûðõüþü òøôõþðõöøüõ. MOV ECX, 9999h //úð÷ðòõûü ýð úþýõö ÿðþóððüüû ò ñóôõðõ. CMP CL, 0 //ð÷üõð òõûð ÿðþóððüüû ò ñóôõðõ ýõ ø÷òõñòõý. XOR CH, CH //õÿõðüECX = CL ôûøýð ñóôõðð òøôõþÿðüÿòø. MOV EDI, 0000h //S:DI -> õòþñò ò PSP MOV EBX, 1210h //úð÷ðýøõ ýð ðôðõñ òõûð ñøñòõüýþù MOV EBX,ESI //ðþóððüüû ò òøôõþñóôõðõ ÿþ ñþþòòõò- MOV ESI, 1210h //òòóþùøü òõúòþððü: //2h - òõúòþð ðõöøüð //0h - òõúòþð òøôõþ ðôðÿòõðð XCHG AL, AH //òÿ÷ü ôûðóþò ðõóøñòðþò. AAA //þððõúöøÿ ôûðóþò ðõóøñòðð. MOV EAX,ESI MOV EAX, OFFSET SzGrfSc2 //ð÷üõð ñòðýôððòýþóþ òøôõþñóôõðð. CMC //þôóþòþòøòü ñóôõð ú ýþòþüó ÷ðÿþûýõýøþ CLD //úðýøðþòðòü òÿõð¸ô REPE SCASB //úðýøðþòðòü òøôõþñóôõð ôþ ÿþûýþóþ ðõ÷óûüòðòð. AAD //öõ ýõ ÿðõôÿðøýøüðòü, ýø úðúøõ ÿþÿûòþú ú óñòðýþòúõ //øôõþ ÿðððüõòðþò. //ðÿøñðòü ýòø ÿðððüõòðû ø üðññøò ñðüþóþ òøôõþñóôõðð // þÿõððòøòýóþ ÿðüÿòü, ôûÿ ôðûüýõûüøõóþ øñÿþûü÷þòðýøÿ // òõúóùõü òøôõþðõöøüõ. PUSH ECX //ð÷üõð ñóôõðð òøôõþÿðüÿòø ø÷òõñòõý. POP EDX //ðýýûõ, õóþ ñþôõðöøüþóþ ÿðþø÷òþûüýûõ. MOV EAX, 1210h //2h - ôóýúöøÿ//10h - òõúòþð ôþñòóÿð. MOV AL, 0Eh //Eh - Íþüõð ôóýúöøø óñòðýþòûõýýþóþ ðõö. MOV EBX, (1 * 1) + (640 * 200) //ðððüõòðû òøôõþðõöøüð. MOV ECX, OFFSET SzGrfSc2 //ð÷üõð ñóôõðð //øôõþÿðüÿòø (640 * 200 * 2) MOV EAX, 0 //úð÷ðýøõ òõðõýõóþ ûõòþóþ óóûð ýð ôøñÿûõõ. MOV EBX,EDX //òÿ÷ðòü ÿðððüõòðû ñ ñûþúþü ôðýýûõ. DEC EDX //þòûõ ÷ýð÷õýøÿ óñòðýðòûøòðþòüñÿ òEDX NEG EDX //ñûþòýðÿ ôøúñðöøÿ òþ ôûðóõ ðõóøñòððEDX CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //þññòòõýýþ, ôøúñðöøÿ ò ÿðüÿòø. //ñòðýþòøòü þòòõòýûù ñøóýðû þñððñþòðýýþóþ //÷þñððöõýøÿ ò ÿðüÿòü ÷ýðúþóõýõððòþðð //ððôø÷õñúþóþ ðôðÿòõðð. PUSH DS //ðñòðþøòü ñõóüõýòýûõ ðõóøñòðû POP ES //ð þñûðñòü ôðýýûõ. MOV ES,EAX MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 236 //N AL,EDX //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 0 //õóøñòð üðñúø öòõòð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ MOV AL, 0 //õóøñòð Öòõòð db 238 //UT EDX, AL //ñòðýþòúð öòõòð //÷øñòøòü ñðùò (òñõ ÿøúñõûû ñðùòð) //OV BYTE PTR ES:[BX], 0 //ðÿððòûõýøõ þòòõòýþóþ ñøóýðûð ò ÷ýðúþóõýõððòþð //ððôø÷õñúþóþ ðôðÿòõðð. // ýð÷ðûõ, ÿðþòõðøòü ôþñòóÿ ú òøôõþ ðôðÿòõðó OUT 10h, AL MOV ECX, OFFSET SizeBuff //ðúñ. ðð÷üõð ÷ðóðóöðõüþù //ðþóððüüû - 64 úñ. //þñûðòü ýð ýõóþ òõúóùõþ ñðùòþòóþ üðñúó IN AL, 10h // Âþñüüøðø÷ýðÿ úþüñøýðöøÿ ôûÿ IN AL, 10h // øøýû, ñòÿ÷ûòðþùõù òøôõþ ðôðÿòõð IN AL, 10h // ñ ôøñÿûõõü (üþýøòþðþü) IN AL, 10h // IN AL, 10h // IN AL, 10h // IN AL, 10h // IN AL, 10h // CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //ðôøúñøðþòðòü ò ÿðüÿòø //ðþ÷øòðýýûõ ÿðððüõòðû //ûòþô ÿøúñõûþò þòþñððöõýøÿ ýð ôøñÿûõù, //ðø ÷ðôðýýþü ðõöøüõ. INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EBX, 0000h //ð÷ðòü ñ ñðùòð 0 ÿþ ASCII MOV ECX, 0002h //òð ñðùòð. Îôøý úþôøðóõò ñðüþ //òþñððöõýøõ, ð ôðóóþù õóþ öòõò. //ûòõñòø ñðùò ÿøúñõûþò ýð ôøñÿûõù. MOV EDI, 0000h //ýð÷õýøÿ þòþñððöõýøÿ ýð MOV ESI, 0000h //øñÿûõõ ÿðþø÷òþûüýû. //OV BYTE PTR ES:[BX], 00Fh INC EBX // ñûõôóþùõüó ñðùòó CLD //þôóþòþòøòüñÿ ú òûòþôó REP MOVSW //ûòþô ÿøúñõûþò ýð ôøñÿûõù, ò ððñøøðõýýþü //õöøüõ. //ð òûõþô ø÷ ÿþôÿðþóððüüû JMP QuitSub //ððôø÷õñúøù ðõöøü 640 x 350 òþ÷õú, 2 öòõòð //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð Scr15: MOV EAX, 0B800h MOV DS,EAX //õðõô òõü, úðú ýð÷ðòü ÷ðóðó÷úó ýóöýþù //øñòõüýþù ÿðþóððüüû ø÷ úþýòðþû¸ðð //ððôø÷õñúþóþ ðôðÿòõðð ÿðþø÷òõñòø òõðñþòúó //þþòòõòñòòóþùõóþ òõúòþðð ÿðõðûòðýøÿ, ñ úþòþðûü //óôõü ððñþòðòü ø ÷ðýõñòø õóþ ò ñþþòòõòñòòóþùøù //ôðõñ ñõóüõýòýþóþ ñóôõðð þÿõððòøòýþù ÿðüÿòø. //2h - Ôûðó òõúòþðð ÷ðÿððøøòðõüþóþ þôýþ, ø÷ //ð¸õ þñýþòýûõ òøôõþðõöøüþò. MOV ES,EDX //ðñòðþõü ýð ýõóþ ES XOR EDI,EDI //S:DI -> ýð÷ðûþ òûôõûõýýþóþ ñûþúð MOV ECX, 2 // - ÷øñûþ ñðùòþò ò ñõóüõýòõ MOV EBX, 12h //õúòþð ÿðõðûòðýøÿ ÷ðýþñøüûù ò ñóôõð. PUSH EBX //ðôøúñøðþòðòü ÷ýð÷õýøõ ôûðóðEBX ø //þõððýøòü õóþ ôûÿ ôðûüýõùøøõ ôõùñòòøù. CLD //ðÿþûýÿòü òÿõð¸ô. REP STOSB //ðÿþûýõýøõ. //ðÿþûýøòü òòþðþù ñðùò ñøóüõýòð, ôûÿ úþýòðþûÿ //OV BYTE PTR ES:[DI], 0 //ðóðó÷øòü ýóöýóþ ñøñòõüýóþ ÿþôÿðþóððüüó ø÷ //øúðþñõõüû úþýòðþû¸ðð òøôõþðôðÿòõðð. MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 236 //N AL,EDX //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 0 //õóøñòð üðñúø öòõòð db 236 //N AL,EDX //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ MOV AL, 0 //õóøñòð Öòõòð db 236 //N AL,EDX //ñòðýþòúð öòõòð //õÿþñðõôñòòõýýðÿ ÷ðóðó÷úð ñøñòõüýþù ÿðþóððüüû //÷ ýðúþÿøòõûÿ úþýòðþû¸ðð óððôø÷õñúþóþ ðôðÿòõðð //õûøúþü, òðú úðú óñòðýþòûõý ýóöýûù ôûðó, ñóôõò //ûÿþûýÿòüñÿ ñþþòòõòñòòóþøðÿ ÿþôÿðþóððüüð. MOV ECX, OFFSET SizeBuff //ðúñ. ðð÷üõð ÷ðóðóöðõüþù //ðþóððüüû - 64 úñ. OUT 10h, AL // Âþñüüøðø÷ýðÿ úþüñøýðöøÿ ôûÿ OUT 10h, AL // øøýû, ñòÿ÷ûòðþùõù òøôõþ ðôðÿòõð OUT 10h, AL // ñ ôøñÿûõõü (üþýøòþðþü) OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //ðôøúñøðþòðòü ò ÿðüÿòø //ðþ÷øòðýýûõ ÿðððüõòðû POP DS //ñòþñþôøòü ñþõððý¸ýýûõ POP ES //õóøñòðû //ðôðòü ÿðððüõòðû òõðòøúðûüýþóþ ñüõùõýøÿ //ð ôøñÿûõõ, õñûø òðõñóõòüñÿ. Ýòþ ôõûðõòñÿ //ûÿ òþóþ, ÷òþ ýòøü ñüõùõýøõü øýøöøøðþòðòü //õûðòõûüýûù òõúñòþòþù øûø óððôø÷õñúøù ðõöøü // ÷ðôðýýûüø ÿðððüõòððüø. Íóöýûù ðõöøü //þñòøóðõòüñÿ ÷ð ñ÷¸ò øñúðöõýøÿ þòþñððöõýøÿ //ôýþóþ ø÷ òð¸õ þñýþòýûõ ðõöøüþò. // ýðøõü ñûó÷ðõ, þòþñððöõýøõ òøôõþðõöøüð 640 x 400 //ðñòÿóøòðõòñÿ ò þòþñððöõýøõ 640 x 200 ÿøúñõûõù. //óýúöøÿ - 12h þôýþóþ ø÷ òð¸õ þñýþòýûõ ðõöøüþò. MOV AH, 12h //óýúöøÿ 12h Âøôõþ ôððùòõðð. MOV ES,EAX //þòþóþ öøúûð ñ òøôõþñóôõðþü. MOV EAX, 1210h //þòòõðöôõýøõ þñýþòýþù ôóýúöøø. PUSH EAX //ðôøúñøðþòðòü ÷ýð÷õýøõ ôûðóðEAX. POP ECX //ýð÷õýøõ ôûðóðECX õù¸ ýõ þÿðõôõûõýþ. MOV AL, 00h //þô ÿðþø÷òþûüýþóþ ÿøúñõûð. MOV EAX, 0 //úð÷ðýøõ òõðõýõóþ ûõòþóþ óóûð ýð ôøñÿûõõ. MOV EBX, (1 * 1) + (640 * 400) //ðððüõòðû òøôõþðõöøüð. MOV EBX,EAX //ñòðýþòúð ñòÿ÷ø ðõóøñòðþò. MOV ECX, OFFSET SzGrfSc5 //ð÷üõð ñóôõðð //øôõþÿðüÿòø (640 * 400 * 2) //ðððüõòðû þòþñððöõýøÿ òõúñòð ò óððôø÷õñúþü ðõöøüõ. MOV CH, 01h //õòûù òõðõýøù óóþû MOV CL, 80h //ððòûù òõðõýøù óóþû MOV DH, 25h //õòûù ýøöýøù óóþû SUB DH, 03h //òýÿòü þò óúð÷ðýýþóþ ÷ýð÷õýøÿ ÿþ òõðò. DAA //þðõúöøÿ ñôõûðýýþóþ þðõôõûõýøÿ SUB EDX, 0050h //òýÿòü þò óúð÷ðýýþóþ ÷ýð÷õýøÿ ÿþ òõðò. MOV DL, 80h //ððòûù ýøöýøù óóþû AAA //ñ¸, óöõ þÿðõôõûõýþ úðú ýðôþ. MOV EBX, (1 * 1) + (640 * 350) //òðýôððòýûõ ÿðððüõòðû ðõöøüð. MOV EBX,EAX //þòòþðýðÿ óñòðýþòúð ñòÿ÷ø ðõóøñòðþò. DEC EDX //þòûõ ÷ýð÷õýøÿ óñòðýðòûøòðþòüñÿ òEDX NEG EDX //ñûþòýðÿ ôøúñðöøÿ òþ ôûðóõ ðõóøñòððEDX MOV ECX, OFFSET SzGrfSc3 //ð÷üõð ñóôõðð //øôõþÿðüÿòø (640 * 350 * 2) REPE CMPSB //ððòýõýøõ ÿþûó÷õýýûõ ÿðððüõòðþò òøôõþðõöøüð. //úðýøðþòðòü òøôõþñóôõð þòþñððöõýøÿ ÿøúñõûþò ñ öõûüþ //þûó÷õýøÿ, ÿþñûõôóþùõóþ õñòõñòòõýýþóþ øûø øñúðö¸ýýþóþ //òþñððöõýøÿ ÿøúñõûþò ýð ôøñÿûõõ ò öõûðõüþü òøôõþðõöøüõ. MOV ECX, 9999h //úð÷ðòõûü ýð úþýõö ÿðþóððüüû ò ñóôõðõ. CMP CL, 0 //ð÷üõð òõûð ÿðþóððüüû ò ñóôõðõ ýõ ø÷òõñòõý. XOR CH, CH //õÿõðüECX = CL ôûøýð ñóôõðð òøôõþÿðüÿòø. MOV EDI, 0000h //S:DI -> õòþñò ò PSP MOV EBX, 1210h //úð÷ðýøõ ýð ðôðõñ òõûð ñøñòõüýþù MOV EBX,ESI //ðþóððüüû ò òøôõþñóôõðõ ÿþ ñþþòòõò- MOV ESI, 1210h //òòóþùøü òõúòþððü: //2h - òõúòþð ðõöøüð //0h - òõúòþð òøôõþ ðôðÿòõðð XCHG AL, AH //òÿ÷ü ôûðóþò ðõóøñòðþò. AAA //þððõúöøÿ ôûðóþò ðõóøñòðð. MOV EAX,ESI MOV EAX, OFFSET SzGrfSc3 //ð÷üõð ñòðýôððòýþóþ òøôõþñóôõðð. CMC //þôóþòþòøòü ñóôõð ú ýþòþüó ÷ðÿþûýõýøþ CLD //úðýøðþòðòü òÿõð¸ô REPE SCASB //úðýøðþòðòü òøôõþñóôõð ôþ ÿþûýþóþ ðõ÷óûüòðòð. AAD //öõ ýõ ÿðõôÿðøýøüðòü, ýø úðúøõ ÿþÿûòþú ú óñòðýþòúõ //øôõþ ÿðððüõòðþò. //ðÿøñðòü ýòø ÿðððüõòðû ø üðññøò ñðüþóþ òøôõþñóôõðð // þÿõððòøòýóþ ÿðüÿòü, ôûÿ ôðûüýõûüøõóþ øñÿþûü÷þòðýøÿ // òõúóùõü òøôõþðõöøüõ. PUSH ECX //ð÷üõð ñóôõðð òøôõþÿðüÿòø ø÷òõñòõý. POP EDX //ðýýûõ, õóþ ñþôõðöøüþóþ ÿðþø÷òþûüýûõ. MOV EAX, 1210h //2h - ôóýúöøÿ//10h - òõúòþð ôþñòóÿð. MOV AL, 0Fh //Fh - Íþüõð ôóýúöøø óñòðýþòûõýýþóþ ðõö. MOV EBX, (1 * 1) + (640 * 350) //ðððüõòðû òøôõþðõöøüð. MOV ECX, OFFSET SzGrfSc3 //ð÷üõð ñóôõðð //øôõþÿðüÿòø (640 * 350 * 2) MOV EAX, 0 //úð÷ðýøõ òõðõýõóþ ûõòþóþ óóûð ýð ôøñÿûõõ. MOV EBX,EDX //òÿ÷ðòü ÿðððüõòðû ñ ñûþúþü ôðýýûõ. DEC EDX //þòûõ ÷ýð÷õýøÿ óñòðýðòûøòðþòüñÿ òEDX NEG EDX //ñûþòýðÿ ôøúñðöøÿ òþ ôûðóõ ðõóøñòððEDX CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //þññòòõýýþ, ôøúñðöøÿ ò ÿðüÿòø. //ñòðýþòøòü þòòõòýûù ñøóýðû þñððñþòðýýþóþ //÷þñððöõýøÿ ò ÿðüÿòü ÷ýðúþóõýõððòþðð //ððôø÷õñúþóþ ðôðÿòõðð. PUSH DS //ðñòðþøòü ñõóüõýòýûõ ðõóøñòðû POP ES //ð þñûðñòü ôðýýûõ. MOV ES,EAX MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 236 //N AL,EDX //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 0 //õóøñòð üðñúø öòõòð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ MOV AL, 0 //õóøñòð Öòõòð db 238 //UT EDX, AL //ñòðýþòúð öòõòð //÷øñòøòü ñðùò (òñõ ÿøúñõûû ñðùòð) //OV BYTE PTR ES:[BX], 0 //ðÿððòûõýøõ þòòõòýþóþ ñøóýðûð ò ÷ýðúþóõýõððòþð //ððôø÷õñúþóþ ðôðÿòõðð. // ýð÷ðûõ, ÿðþòõðøòü ôþñòóÿ ú òøôõþ ðôðÿòõðó OUT 10h, AL MOV ECX, OFFSET SizeBuff //ðúñ. ðð÷üõð ÷ðóðóöðõüþù //ðþóððüüû - 64 úñ. //þñûðòü ýð ýõóþ òõúóùõþ ñðùòþòóþ üðñúó IN AL, 10h // Âþñüüøðø÷ýðÿ úþüñøýðöøÿ ôûÿ IN AL, 10h // øøýû, ñòÿ÷ûòðþùõù òøôõþ ðôðÿòõð IN AL, 10h // ñ ôøñÿûõõü (üþýøòþðþü) IN AL, 10h // IN AL, 10h // IN AL, 10h // IN AL, 10h // IN AL, 10h // CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //ðôøúñøðþòðòü ò ÿðüÿòø //ðþ÷øòðýýûõ ÿðððüõòðû //ûòþô ÿøúñõûþò þòþñððöõýøÿ ýð ôøñÿûõù, //ðø ÷ðôðýýþü ðõöøüõ. INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EBX, 0000h //ð÷ðòü ñ ñðùòð 0 ÿþ ASCII MOV ECX, 0002h //òð ñðùòð. Îôøý úþôøðóõò ñðüþ //òþñððöõýøõ, ð ôðóóþù õóþ öòõò. //ûòõñòø ñðùò ÿøúñõûþò ýð ôøñÿûõù. MOV EDI, 0000h //ýð÷õýøÿ þòþñððöõýøÿ ýð MOV ESI, 0000h //øñÿûõõ ÿðþø÷òþûüýû. //OV BYTE PTR ES:[BX], 00Fh INC EBX // ñûõôóþùõüó ñðùòó CLD //þôóþòþòøòüñÿ ú òûòþôó REP MOVSW //ûòþô ÿøúñõûþò ýð ôøñÿûõù, ò ððñøøðõýýþü //õöøüõ. //ð òûõþô ø÷ ÿþôÿðþóððüüû JMP QuitSub //ððôø÷õñúøù ðõöøü 640 x 350 òþ÷õú, 16 öòõòþò //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð Scr16: MOV EAX, 0B800h MOV DS,EAX //õðõô òõü, úðú ýð÷ðòü ÷ðóðó÷úó ýóöýþù //øñòõüýþù ÿðþóððüüû ø÷ úþýòðþû¸ðð //ððôø÷õñúþóþ ðôðÿòõðð ÿðþø÷òõñòø òõðñþòúó //þþòòõòñòòóþùõóþ òõúòþðð ÿðõðûòðýøÿ, ñ úþòþðûü //óôõü ððñþòðòü ø ÷ðýõñòø õóþ ò ñþþòòõòñòòóþùøù //ôðõñ ñõóüõýòýþóþ ñóôõðð þÿõððòøòýþù ÿðüÿòø. //2h - Ôûðó òõúòþðð ÷ðÿððøøòðõüþóþ þôýþ, ø÷ //ð¸õ þñýþòýûõ òøôõþðõöøüþò. MOV ES,EDX //ðñòðþõü ýð ýõóþ ES XOR EDI,EDI //S:DI -> ýð÷ðûþ òûôõûõýýþóþ ñûþúð MOV ECX, 2 // - ÷øñûþ ñðùòþò ò ñõóüõýòõ MOV EBX, 12h //õúòþð ÿðõðûòðýøÿ ÷ðýþñøüûù ò ñóôõð. PUSH EBX //ðôøúñøðþòðòü ÷ýð÷õýøõ ôûðóðEBX ø //þõððýøòü õóþ ôûÿ ôðûüýõùøøõ ôõùñòòøù. CLD //ðÿþûýÿòü òÿõð¸ô. REP STOSB //ðÿþûýõýøõ. //ðÿþûýøòü òòþðþù ñðùò ñøóüõýòð, ôûÿ úþýòðþûÿ //OV BYTE PTR ES:[DI], 0 //ðóðó÷øòü ýóöýóþ ñøñòõüýóþ ÿþôÿðþóððüüó ø÷ //øúðþñõõüû úþýòðþû¸ðð òøôõþðôðÿòõðð. MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 236 //N AL,EDX //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 0 //õóøñòð üðñúø öòõòð db 236 //N AL,EDX //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ MOV AL, 0 //õóøñòð Öòõòð db 236 //N AL,EDX //ñòðýþòúð öòõòð //õÿþñðõôñòòõýýðÿ ÷ðóðó÷úð ñøñòõüýþù ÿðþóððüüû //÷ ýðúþÿøòõûÿ úþýòðþû¸ðð óððôø÷õñúþóþ ðôðÿòõðð //õûøúþü, òðú úðú óñòðýþòûõý ýóöýûù ôûðó, ñóôõò //ûÿþûýÿòüñÿ ñþþòòõòñòòóþøðÿ ÿþôÿðþóððüüð. MOV ECX, OFFSET SizeBuff //ðúñ. ðð÷üõð ÷ðóðóöðõüþù //ðþóððüüû - 64 úñ. OUT 10h, AL // Âþñüüøðø÷ýðÿ úþüñøýðöøÿ ôûÿ OUT 10h, AL // øøýû, ñòÿ÷ûòðþùõù òøôõþ ðôðÿòõð OUT 10h, AL // ñ ôøñÿûõõü (üþýøòþðþü) OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //ðôøúñøðþòðòü ò ÿðüÿòø //ðþ÷øòðýýûõ ÿðððüõòðû POP DS //ñòþñþôøòü ñþõððý¸ýýûõ POP ES //õóøñòðû //ðôðòü ÿðððüõòðû òõðòøúðûüýþóþ ñüõùõýøÿ //ð ôøñÿûõõ, õñûø òðõñóõòüñÿ. Ýòþ ôõûðõòñÿ //ûÿ òþóþ, ÷òþ ýòøü ñüõùõýøõü øýøöøøðþòðòü //õûðòõûüýûù òõúñòþòþù øûø óððôø÷õñúøù ðõöøü // ÷ðôðýýûüø ÿðððüõòððüø. Íóöýûù ðõöøü //þñòøóðõòüñÿ ÷ð ñ÷¸ò øñúðöõýøÿ þòþñððöõýøÿ //ôýþóþ ø÷ òð¸õ þñýþòýûõ ðõöøüþò. // ýðøõü ñûó÷ðõ, þòþñððöõýøõ òøôõþðõöøüð 640 x 400 //ðñòÿóøòðõòñÿ ò þòþñððöõýøõ 640 x 200 ÿøúñõûõù. //óýúöøÿ - 12h þôýþóþ ø÷ òð¸õ þñýþòýûõ ðõöøüþò. MOV AH, 12h //óýúöøÿ 12h Âøôõþ ôððùòõðð. MOV ES,EAX //þòþóþ öøúûð ñ òøôõþñóôõðþü. MOV EAX, 1210h //þòòõðöôõýøõ þñýþòýþù ôóýúöøø. PUSH EAX //ðôøúñøðþòðòü ÷ýð÷õýøõ ôûðóðEAX. POP ECX //ýð÷õýøõ ôûðóðECX õù¸ ýõ þÿðõôõûõýþ. MOV AL, 00h //þô ÿðþø÷òþûüýþóþ ÿøúñõûð. MOV EAX, 0 //úð÷ðýøõ òõðõýõóþ ûõòþóþ óóûð ýð ôøñÿûõõ. MOV EBX, (1 * 1) + (640 * 400) //ðððüõòðû òøôõþðõöøüð. MOV EBX,EAX //ñòðýþòúð ñòÿ÷ø ðõóøñòðþò. MOV ECX, OFFSET SzGrfSc5 //ð÷üõð ñóôõðð //øôõþÿðüÿòø (640 * 400 * 2) //ðððüõòðû þòþñððöõýøÿ òõúñòð ò óððôø÷õñúþü ðõöøüõ. MOV CH, 01h //õòûù òõðõýøù óóþû MOV CL, 80h //ððòûù òõðõýøù óóþû MOV DH, 25h //õòûù ýøöýøù óóþû SUB DH, 03h //òýÿòü þò óúð÷ðýýþóþ ÷ýð÷õýøÿ ÿþ òõðò. DAA //þðõúöøÿ ñôõûðýýþóþ þðõôõûõýøÿ SUB EDX, 0050h //òýÿòü þò óúð÷ðýýþóþ ÷ýð÷õýøÿ ÿþ òõðò. MOV DL, 80h //ððòûù ýøöýøù óóþû AAA //ñ¸, óöõ þÿðõôõûõýþ úðú ýðôþ. MOV EBX, (1 * 1) + (640 * 350) //òðýôððòýûõ ÿðððüõòðû ðõöøüð. MOV EBX,EAX //þòòþðýðÿ óñòðýþòúð ñòÿ÷ø ðõóøñòðþò. DEC EDX //þòûõ ÷ýð÷õýøÿ óñòðýðòûøòðþòüñÿ òEDX NEG EDX //ñûþòýðÿ ôøúñðöøÿ òþ ôûðóõ ðõóøñòððEDX MOV ECX, OFFSET SzGrfSc3 //ð÷üõð ñóôõðð //øôõþÿðüÿòø (640 * 350 * 2) REPE CMPSB //ððòýõýøõ ÿþûó÷õýýûõ ÿðððüõòðþò òøôõþðõöøüð. //úðýøðþòðòü òøôõþñóôõð þòþñððöõýøÿ ÿøúñõûþò ñ öõûüþ //þûó÷õýøÿ, ÿþñûõôóþùõóþ õñòõñòòõýýþóþ øûø øñúðö¸ýýþóþ //òþñððöõýøÿ ÿøúñõûþò ýð ôøñÿûõõ ò öõûðõüþü òøôõþðõöøüõ. MOV ECX, 9999h //úð÷ðòõûü ýð úþýõö ÿðþóððüüû ò ñóôõðõ. CMP CL, 0 //ð÷üõð òõûð ÿðþóððüüû ò ñóôõðõ ýõ ø÷òõñòõý. XOR CH, CH //õÿõðüECX = CL ôûøýð ñóôõðð òøôõþÿðüÿòø. MOV EDI, 0000h //S:DI -> õòþñò ò PSP MOV EBX, 1210h //úð÷ðýøõ ýð ðôðõñ òõûð ñøñòõüýþù MOV EBX,ESI //ðþóððüüû ò òøôõþñóôõðõ ÿþ ñþþòòõò- MOV ESI, 1210h //òòóþùøü òõúòþððü: //2h - òõúòþð ðõöøüð //0h - òõúòþð òøôõþ ðôðÿòõðð XCHG AL, AH //òÿ÷ü ôûðóþò ðõóøñòðþò. AAA //þððõúöøÿ ôûðóþò ðõóøñòðð. MOV EAX,ESI MOV EAX, OFFSET SzGrfSc3 //ð÷üõð ñòðýôððòýþóþ òøôõþñóôõðð. CMC //þôóþòþòøòü ñóôõð ú ýþòþüó ÷ðÿþûýõýøþ CLD //úðýøðþòðòü òÿõð¸ô REPE SCASB //úðýøðþòðòü òøôõþñóôõð ôþ ÿþûýþóþ ðõ÷óûüòðòð. AAD //öõ ýõ ÿðõôÿðøýøüðòü, ýø úðúøõ ÿþÿûòþú ú óñòðýþòúõ //øôõþ ÿðððüõòðþò. //ðÿøñðòü ýòø ÿðððüõòðû ø üðññøò ñðüþóþ òøôõþñóôõðð // þÿõððòøòýóþ ÿðüÿòü, ôûÿ ôðûüýõûüøõóþ øñÿþûü÷þòðýøÿ // òõúóùõü òøôõþðõöøüõ. PUSH ECX //ð÷üõð ñóôõðð òøôõþÿðüÿòø ø÷òõñòõý. POP EDX //ðýýûõ, õóþ ñþôõðöøüþóþ ÿðþø÷òþûüýûõ. MOV EAX, 1210h //2h - ôóýúöøÿ//10h - òõúòþð ôþñòóÿð. MOV AL, 10h //0h - Íþüõð ôóýúöøø óñòðýþòûõýýþóþ ðõö. MOV EBX, (1 * 1) + (640 * 350) //ðððüõòðû òøôõþðõöøüð. MOV ECX, OFFSET SzGrfSc3 //ð÷üõð ñóôõðð //øôõþÿðüÿòø (640 * 350 * 2) MOV EAX, 1 //úð÷ðýøõ òõðõýõóþ ûõòþóþ óóûð ýð ôøñÿûõõ. MOV EBX,EDX //òÿ÷ðòü ÿðððüõòðû ñ ñûþúþü ôðýýûõ. DEC EDX //þòûõ ÷ýð÷õýøÿ óñòðýðòûøòðþòüñÿ òEDX NEG EDX //ñûþòýðÿ ôøúñðöøÿ òþ ôûðóõ ðõóøñòððEDX CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //þññòòõýýþ, ôøúñðöøÿ ò ÿðüÿòø. //ñòðýþòøòü þòòõòýûù ñøóýðû þñððñþòðýýþóþ //÷þñððöõýøÿ ò ÿðüÿòü ÷ýðúþóõýõððòþðð //ððôø÷õñúþóþ ðôðÿòõðð. PUSH DS //ðñòðþøòü ñõóüõýòýûõ ðõóøñòðû POP ES //ð þñûðñòü ôðýýûõ. MOV ES,EAX MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 236 //N AL,EDX //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 0 //õóøñòð üðñúø öòõòð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ MOV AL, 0 //õóøñòð Öòõòð db 238 //UT EDX, AL //ñòðýþòúð öòõòð //÷øñòøòü ñðùò (òñõ ÿøúñõûû ñðùòð) //OV BYTE PTR ES:[BX], 0 //ðÿððòûõýøõ þòòõòýþóþ ñøóýðûð ò ÷ýðúþóõýõððòþð //ððôø÷õñúþóþ ðôðÿòõðð. // ýð÷ðûõ, ÿðþòõðøòü ôþñòóÿ ú òøôõþ ðôðÿòõðó OUT 10h, AL MOV ECX, OFFSET SizeBuff //ðúñ. ðð÷üõð ÷ðóðóöðõüþù //ðþóððüüû - 64 úñ. //þñûðòü ýð ýõóþ òõúóùõþ ñðùòþòóþ üðñúó IN AL, 10h // Âþñüüøðø÷ýðÿ úþüñøýðöøÿ ôûÿ IN AL, 10h // øøýû, ñòÿ÷ûòðþùõù òøôõþ ðôðÿòõð IN AL, 10h // ñ ôøñÿûõõü (üþýøòþðþü) IN AL, 10h // IN AL, 10h // IN AL, 10h // IN AL, 10h // IN AL, 10h // CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //ðôøúñøðþòðòü ò ÿðüÿòø //ðþ÷øòðýýûõ ÿðððüõòðû //ûòþô ÿøúñõûþò þòþñððöõýøÿ ýð ôøñÿûõù, //ðø ÷ðôðýýþü ðõöøüõ. INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EBX, 0000h //ð÷ðòü ñ ñðùòð 0 ÿþ ASCII MOV ECX, 0002h //òð ñðùòð. Îôøý úþôøðóõò ñðüþ //òþñððöõýøõ, ð ôðóóþù õóþ öòõò. //ûòõñòø ñðùò ÿøúñõûþò ýð ôøñÿûõù. MOV EDI, 0000h //ýð÷õýøÿ þòþñððöõýøÿ ýð MOV ESI, 0000h //øñÿûõõ ÿðþø÷òþûüýû. //OV BYTE PTR ES:[BX], 00Fh INC EBX // ñûõôóþùõüó ñðùòó CLD //þôóþòþòøòüñÿ ú òûòþôó REP MOVSW //ûòþô ÿøúñõûþò ýð ôøñÿûõù, ò ððñøøðõýýþü //õöøüõ. //ð òûõþô ø÷ ÿþôÿðþóððüüû JMP QuitSub //ððôø÷õñúøù ðõöøü 640 x 480 òþ÷õú, 2 öòõòð //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð Scr17: MOV EAX, 0B800h MOV DS,EAX //õðõô òõü, úðú ýð÷ðòü ÷ðóðó÷úó ýóöýþù //øñòõüýþù ÿðþóððüüû ø÷ úþýòðþû¸ðð //ððôø÷õñúþóþ ðôðÿòõðð ÿðþø÷òõñòø òõðñþòúó //þþòòõòñòòóþùõóþ òõúòþðð ÿðõðûòðýøÿ, ñ úþòþðûü //óôõü ððñþòðòü ø ÷ðýõñòø õóþ ò ñþþòòõòñòòóþùøù //ôðõñ ñõóüõýòýþóþ ñóôõðð þÿõððòøòýþù ÿðüÿòø. //2h - Ôûðó òõúòþðð ÷ðÿððøøòðõüþóþ þôýþ, ø÷ //ð¸õ þñýþòýûõ òøôõþðõöøüþò. MOV ES,EDX //ðñòðþõü ýð ýõóþ ES XOR EDI,EDI //S:DI -> ýð÷ðûþ òûôõûõýýþóþ ñûþúð MOV ECX, 2 // - ÷øñûþ ñðùòþò ò ñõóüõýòõ MOV EBX, 12h //õúòþð ÿðõðûòðýøÿ ÷ðýþñøüûù ò ñóôõð. PUSH EBX //ðôøúñøðþòðòü ÷ýð÷õýøõ ôûðóðEBX ø //þõððýøòü õóþ ôûÿ ôðûüýõùøøõ ôõùñòòøù. CLD //ðÿþûýÿòü òÿõð¸ô. REP STOSB //ðÿþûýõýøõ. //ðÿþûýøòü òòþðþù ñðùò ñøóüõýòð, ôûÿ úþýòðþûÿ //OV BYTE PTR ES:[DI], 0 //ðóðó÷øòü ýóöýóþ ñøñòõüýóþ ÿþôÿðþóððüüó ø÷ //øúðþñõõüû úþýòðþû¸ðð òøôõþðôðÿòõðð. MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 236 //N AL,EDX //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 0 //õóøñòð üðñúø öòõòð db 236 //N AL,EDX //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ MOV AL, 0 //õóøñòð Öòõòð db 236 //N AL,EDX //ñòðýþòúð öòõòð //õÿþñðõôñòòõýýðÿ ÷ðóðó÷úð ñøñòõüýþù ÿðþóððüüû //÷ ýðúþÿøòõûÿ úþýòðþû¸ðð óððôø÷õñúþóþ ðôðÿòõðð //õûøúþü, òðú úðú óñòðýþòûõý ýóöýûù ôûðó, ñóôõò //ûÿþûýÿòüñÿ ñþþòòõòñòòóþøðÿ ÿþôÿðþóððüüð. MOV ECX, OFFSET SizeBuff //ðúñ. ðð÷üõð ÷ðóðóöðõüþù //ðþóððüüû - 64 úñ. OUT 10h, AL // Âþñüüøðø÷ýðÿ úþüñøýðöøÿ ôûÿ OUT 10h, AL // øøýû, ñòÿ÷ûòðþùõù òøôõþ ðôðÿòõð OUT 10h, AL // ñ ôøñÿûõõü (üþýøòþðþü) OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //ðôøúñøðþòðòü ò ÿðüÿòø //ðþ÷øòðýýûõ ÿðððüõòðû POP DS //ñòþñþôøòü ñþõððý¸ýýûõ POP ES //õóøñòðû //ðôðòü ÿðððüõòðû òõðòøúðûüýþóþ ñüõùõýøÿ //ð ôøñÿûõõ, õñûø òðõñóõòüñÿ. Ýòþ ôõûðõòñÿ //ûÿ òþóþ, ÷òþ ýòøü ñüõùõýøõü øýøöøøðþòðòü //õûðòõûüýûù òõúñòþòþù øûø óððôø÷õñúøù ðõöøü // ÷ðôðýýûüø ÿðððüõòððüø. Íóöýûù ðõöøü //þñòøóðõòüñÿ ÷ð ñ÷¸ò øñúðöõýøÿ þòþñððöõýøÿ //ôýþóþ ø÷ òð¸õ þñýþòýûõ ðõöøüþò. // ýðøõü ñûó÷ðõ, þòþñððöõýøõ òøôõþðõöøüð 640 x 400 //öøüðõòüñÿ ôþ þòþñððöõýøÿ 640 x 480 ÿøúñõûõù. //óýúöøÿ - 12h þôýþóþ ø÷ òð¸õ þñýþòýûõ ðõöøüþò. MOV AH, 12h //óýúöøÿ 12h Âøôõþ ôððùòõðð. MOV ES,EAX //þòþóþ öøúûð ñ òøôõþñóôõðþü. MOV EAX, 1210h //þòòõðöôõýøõ þñýþòýþù ôóýúöøø. PUSH EAX //ðôøúñøðþòðòü ÷ýð÷õýøõ ôûðóðEAX. POP ECX //ýð÷õýøõ ôûðóðECX õù¸ ýõ þÿðõôõûõýþ. MOV AL, 00h //þô ÿðþø÷òþûüýþóþ ÿøúñõûð. MOV EAX, 1 //úð÷ðýøõ òõðõýõóþ ûõòþóþ óóûð ýð ôøñÿûõõ. MOV EBX, (1 * 1) + (640 * 400) //ðððüõòðû òøôõþðõöøüð. MOV EBX,EAX //ñòðýþòúð ñòÿ÷ø ðõóøñòðþò. MOV ECX, OFFSET SzGrfSc5 //ð÷üõð ñóôõðð //øôõþÿðüÿòø (640 * 400 * 2) //ðððüõòðû þòþñððöõýøÿ òõúñòð ò óððôø÷õñúþü ðõöøüõ. MOV CH, 01h //õòûù òõðõýøù óóþû MOV CL, 80h //ððòûù òõðõýøù óóþû MOV DH, 25h //õòûù ýøöýøù óóþû ADD DH, 04h //ðøñðòøòü ú óúð÷ðýýþüó ÷ýð÷õýøþ ÿþ òõðò. DAA //þðõúöøÿ ñôõûðýýþóþ þðõôõûõýøÿ ADD DH, 0080h //ðøñðòøòü ú óúð÷ðýýþüó ÷ýð÷õýøþ ÿþ òõðò. MOV DL, 80h //ððòûù ýøöýøù óóþû AAA //ñ¸, óöõ þÿðõôõûõýþ úðú ýðôþ. MOV EBX, (1 * 1) + (640 * 480) //òðýôððòýûõ ÿðððüõòðû ðõöøüð. MOV EBX,EAX //þòòþðýðÿ óñòðýþòúð ñòÿ÷ø ðõóøñòðþò. INC EDX //þòûõ ÷ýð÷õýøÿ óñòðýðòûøòðþòüñÿ òEDX NEG EDX //ñûþòýðÿ ôøúñðöøÿ òþ ôûðóõ ðõóøñòððEDX MOV ECX, OFFSET SzGrfSc4 //ð÷üõð ñóôõðð //øôõþÿðüÿòø (640 * 480 * 2) REPE CMPSB //ððòýõýøõ ÿþûó÷õýýûõ ÿðððüõòðþò òøôõþðõöøüð. //úðýøðþòðòü òøôõþñóôõð þòþñððöõýøÿ ÿøúñõûþò ñ öõûüþ //þûó÷õýøÿ, ÿþñûõôóþùõóþ õñòõñòòõýýþóþ øûø øñúðö¸ýýþóþ //òþñððöõýøÿ ÿøúñõûþò ýð ôøñÿûõõ ò öõûðõüþü òøôõþðõöøüõ. MOV ECX, 9999h //úð÷ðòõûü ýð úþýõö ÿðþóððüüû ò ñóôõðõ. CMP CL, 0 //ð÷üõð òõûð ÿðþóððüüû ò ñóôõðõ ýõ ø÷òõñòõý. XOR CH, CH //õÿõðüECX = CL ôûøýð ñóôõðð òøôõþÿðüÿòø. MOV EDI, 0000h //S:DI -> õòþñò ò PSP MOV EBX, 1210h //úð÷ðýøõ ýð ðôðõñ òõûð ñøñòõüýþù MOV EBX,ESI //ðþóððüüû ò òøôõþñóôõðõ ÿþ ñþþòòõò- MOV ESI, 1210h //òòóþùøü òõúòþððü: //2h - òõúòþð ðõöøüð //0h - òõúòþð òøôõþ ðôðÿòõðð XCHG AL, AH //òÿ÷ü ôûðóþò ðõóøñòðþò. AAA //þððõúöøÿ ôûðóþò ðõóøñòðð. MOV EAX,ESI MOV EAX, OFFSET SzGrfSc4 //ð÷üõð ñòðýôððòýþóþ òøôõþñóôõðð. CMC //þôóþòþòøòü ñóôõð ú ýþòþüó ÷ðÿþûýõýøþ CLD //úðýøðþòðòü òÿõð¸ô REPE SCASB //úðýøðþòðòü òøôõþñóôõð ôþ ÿþûýþóþ ðõ÷óûüòðòð. AAD //öõ ýõ ÿðõôÿðøýøüðòü, ýø úðúøõ ÿþÿûòþú ú óñòðýþòúõ //øôõþ ÿðððüõòðþò. //ðÿøñðòü ýòø ÿðððüõòðû ø üðññøò ñðüþóþ òøôõþñóôõðð // þÿõððòøòýóþ ÿðüÿòü, ôûÿ ôðûüýõûüøõóþ øñÿþûü÷þòðýøÿ // òõúóùõü òøôõþðõöøüõ. PUSH ECX //ð÷üõð ñóôõðð òøôõþÿðüÿòø ø÷òõñòõý. POP EDX //ðýýûõ, õóþ ñþôõðöøüþóþ ÿðþø÷òþûüýûõ. MOV EAX, 1210h //2h - ôóýúöøÿ//10h - òõúòþð ôþñòóÿð. MOV AL, 11h //1h - Íþüõð ôóýúöøø óñòðýþòûõýýþóþ ðõö. MOV EBX, (1 * 1) + (640 * 480) //ðððüõòðû òøôõþðõöøüð. MOV ECX, OFFSET SzGrfSc4 //ð÷üõð ñóôõðð //øôõþÿðüÿòø (640 * 480 * 2) MOV EAX, 0 //úð÷ðýøõ òõðõýõóþ ûõòþóþ óóûð ýð ôøñÿûõõ. MOV EBX,EDX //òÿ÷ðòü ÿðððüõòðû ñ ñûþúþü ôðýýûõ. DEC EDX //þòûõ ÷ýð÷õýøÿ óñòðýðòûøòðþòüñÿ òEDX NEG EDX //ñûþòýðÿ ôøúñðöøÿ òþ ôûðóõ ðõóøñòððEDX CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //þññòòõýýþ, ôøúñðöøÿ ò ÿðüÿòø. //ñòðýþòøòü þòòõòýûù ñøóýðû þñððñþòðýýþóþ //÷þñððöõýøÿ ò ÿðüÿòü ÷ýðúþóõýõððòþðð //ððôø÷õñúþóþ ðôðÿòõðð. PUSH DS //ðñòðþøòü ñõóüõýòýûõ ðõóøñòðû POP ES //ð þñûðñòü ôðýýûõ. MOV ES,EAX MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 236 //N AL,EDX //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 0 //õóøñòð üðñúø öòõòð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ MOV AL, 0 //õóøñòð Öòõòð db 238 //UT EDX, AL //ñòðýþòúð öòõòð //÷øñòøòü ñðùò (òñõ ÿøúñõûû ñðùòð) //OV BYTE PTR ES:[BX], 0 //ðÿððòûõýøõ þòòõòýþóþ ñøóýðûð ò ÷ýðúþóõýõððòþð //ððôø÷õñúþóþ ðôðÿòõðð. // ýð÷ðûõ, ÿðþòõðøòü ôþñòóÿ ú òøôõþ ðôðÿòõðó OUT 10h, AL MOV ECX, OFFSET SizeBuff //ðúñ. ðð÷üõð ÷ðóðóöðõüþù //ðþóððüüû - 64 úñ. //þñûðòü ýð ýõóþ òõúóùõþ ñðùòþòóþ üðñúó IN AL, 10h // Âþñüüøðø÷ýðÿ úþüñøýðöøÿ ôûÿ IN AL, 10h // øøýû, ñòÿ÷ûòðþùõù òøôõþ ðôðÿòõð IN AL, 10h // ñ ôøñÿûõõü (üþýøòþðþü) IN AL, 10h // IN AL, 10h // IN AL, 10h // IN AL, 10h // IN AL, 10h // CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //ðôøúñøðþòðòü ò ÿðüÿòø //ðþ÷øòðýýûõ ÿðððüõòðû //ûòþô ÿøúñõûþò þòþñððöõýøÿ ýð ôøñÿûõù, //ðø ÷ðôðýýþü ðõöøüõ. INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EBX, 0000h //ð÷ðòü ñ ñðùòð 0 ÿþ ASCII MOV ECX, 0002h //òð ñðùòð. Îôøý úþôøðóõò ñðüþ //òþñððöõýøõ, ð ôðóóþù õóþ öòõò. //ûòõñòø ñðùò ÿøúñõûþò ýð ôøñÿûõù. MOV EDI, 0000h //ýð÷õýøÿ þòþñððöõýøÿ ýð MOV ESI, 0000h //øñÿûõõ ÿðþø÷òþûüýû. //OV BYTE PTR ES:[BX], 00Fh INC EBX // ñûõôóþùõüó ñðùòó CLD //þôóþòþòøòüñÿ ú òûòþôó REP MOVSW //ûòþô ÿøúñõûþò ýð ôøñÿûõù, ò ððñøøðõýýþü //õöøüõ. //ð òûõþô ø÷ ÿþôÿðþóððüüû JMP QuitSub //ððôø÷õñúøù ðõöøü 640 x 480 òþ÷õú, 16 öòõòþò //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð Scr18: MOV EAX, 0B800h MOV DS,EAX //õðõô òõü, úðú ýð÷ðòü ÷ðóðó÷úó ýóöýþù //øñòõüýþù ÿðþóððüüû ø÷ úþýòðþû¸ðð //ððôø÷õñúþóþ ðôðÿòõðð ÿðþø÷òõñòø òõðñþòúó //þþòòõòñòòóþùõóþ òõúòþðð ÿðõðûòðýøÿ, ñ úþòþðûü //óôõü ððñþòðòü ø ÷ðýõñòø õóþ ò ñþþòòõòñòòóþùøù //ôðõñ ñõóüõýòýþóþ ñóôõðð þÿõððòøòýþù ÿðüÿòø. //2h - Ôûðó òõúòþðð ÷ðÿððøøòðõüþóþ þôýþ, ø÷ //ð¸õ þñýþòýûõ òøôõþðõöøüþò. MOV ES,EDX //ðñòðþõü ýð ýõóþ ES XOR EDI,EDI //S:DI -> ýð÷ðûþ òûôõûõýýþóþ ñûþúð MOV ECX, 2 // - ÷øñûþ ñðùòþò ò ñõóüõýòõ MOV EBX, 12h //õúòþð ÿðõðûòðýøÿ ÷ðýþñøüûù ò ñóôõð. PUSH EBX //ðôøúñøðþòðòü ÷ýð÷õýøõ ôûðóðEBX ø //þõððýøòü õóþ ôûÿ ôðûüýõùøøõ ôõùñòòøù. CLD //ðÿþûýÿòü òÿõð¸ô. REP STOSB //ðÿþûýõýøõ. //ðÿþûýøòü òòþðþù ñðùò ñøóüõýòð, ôûÿ úþýòðþûÿ //OV BYTE PTR ES:[DI], 0 //ðóðó÷øòü ýóöýóþ ñøñòõüýóþ ÿþôÿðþóððüüó ø÷ //øúðþñõõüû úþýòðþû¸ðð òøôõþðôðÿòõðð. MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 236 //N AL,EDX //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 0 //õóøñòð üðñúø öòõòð db 236 //N AL,EDX //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ MOV AL, 0 //õóøñòð Öòõòð db 236 //N AL,EDX //ñòðýþòúð öòõòð //õÿþñðõôñòòõýýðÿ ÷ðóðó÷úð ñøñòõüýþù ÿðþóððüüû //÷ ýðúþÿøòõûÿ úþýòðþû¸ðð óððôø÷õñúþóþ ðôðÿòõðð //õûøúþü, òðú úðú óñòðýþòûõý ýóöýûù ôûðó, ñóôõò //ûÿþûýÿòüñÿ ñþþòòõòñòòóþøðÿ ÿþôÿðþóððüüð. MOV ECX, OFFSET SizeBuff //ðúñ. ðð÷üõð ÷ðóðóöðõüþù //ðþóððüüû - 64 úñ. OUT 10h, AL // Âþñüüøðø÷ýðÿ úþüñøýðöøÿ ôûÿ OUT 10h, AL // øøýû, ñòÿ÷ûòðþùõù òøôõþ ðôðÿòõð OUT 10h, AL // ñ ôøñÿûõõü (üþýøòþðþü) OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //ðôøúñøðþòðòü ò ÿðüÿòø //ðþ÷øòðýýûõ ÿðððüõòðû POP DS //ñòþñþôøòü ñþõððý¸ýýûõ POP ES //õóøñòðû //ðôðòü ÿðððüõòðû òõðòøúðûüýþóþ ñüõùõýøÿ //ð ôøñÿûõõ, õñûø òðõñóõòüñÿ. Ýòþ ôõûðõòñÿ //ûÿ òþóþ, ÷òþ ýòøü ñüõùõýøõü øýøöøøðþòðòü //õûðòõûüýûù òõúñòþòþù øûø óððôø÷õñúøù ðõöøü // ÷ðôðýýûüø ÿðððüõòððüø. Íóöýûù ðõöøü //þñòøóðõòüñÿ ÷ð ñ÷¸ò øñúðöõýøÿ þòþñððöõýøÿ //ôýþóþ ø÷ òð¸õ þñýþòýûõ ðõöøüþò. // ýðøõü ñûó÷ðõ, þòþñððöõýøõ òøôõþðõöøüð 640 x 400 //öøüðõòüñÿ ôþ þòþñððöõýøÿ 640 x 480 ÿøúñõûõù. //óýúöøÿ - 12h þôýþóþ ø÷ òð¸õ þñýþòýûõ ðõöøüþò. MOV AH, 12h //óýúöøÿ 12h Âøôõþ ôððùòõðð. MOV ES,EAX //þòþóþ öøúûð ñ òøôõþñóôõðþü. MOV EAX, 1210h //þòòõðöôõýøõ þñýþòýþù ôóýúöøø. PUSH EAX //ðôøúñøðþòðòü ÷ýð÷õýøõ ôûðóðEAX. POP ECX //ýð÷õýøõ ôûðóðECX õù¸ ýõ þÿðõôõûõýþ. MOV AL, 00h //þô ÿðþø÷òþûüýþóþ ÿøúñõûð. MOV EAX, 0 //úð÷ðýøõ òõðõýõóþ ûõòþóþ óóûð ýð ôøñÿûõõ. MOV EBX, (1 * 1) + (640 * 400) //ðððüõòðû òøôõþðõöøüð. MOV EBX,EAX //ñòðýþòúð ñòÿ÷ø ðõóøñòðþò. MOV ECX, OFFSET SzGrfSc5 //ð÷üõð ñóôõðð //øôõþÿðüÿòø (640 * 400 * 2) //ðððüõòðû þòþñððöõýøÿ òõúñòð ò óððôø÷õñúþü ðõöøüõ. MOV CH, 01h //õòûù òõðõýøù óóþû MOV CL, 80h //ððòûù òõðõýøù óóþû MOV DH, 25h //õòûù ýøöýøù óóþû ADD DH, 04h //ðøñðòøòü ú óúð÷ðýýþüó ÷ýð÷õýøþ ÿþ òõðò. DAA //þðõúöøÿ ñôõûðýýþóþ þðõôõûõýøÿ ADD DH, 0080h //ðøñðòøòü ú óúð÷ðýýþüó ÷ýð÷õýøþ ÿþ òõðò. MOV DL, 80h //ððòûù ýøöýøù óóþû AAA //ñ¸, óöõ þÿðõôõûõýþ úðú ýðôþ. MOV EBX, (1 * 1) + (640 * 480) //òðýôððòýûõ ÿðððüõòðû ðõöøüð. MOV EBX,EAX //þòòþðýðÿ óñòðýþòúð ñòÿ÷ø ðõóøñòðþò. INC EDX //þòûõ ÷ýð÷õýøÿ óñòðýðòûøòðþòüñÿ òEDX NEG EDX //ñûþòýðÿ ôøúñðöøÿ òþ ôûðóõ ðõóøñòððEDX MOV ECX, OFFSET SzGrfSc4 //ð÷üõð ñóôõðð //øôõþÿðüÿòø (640 * 480 * 2) REPE CMPSB //ððòýõýøõ ÿþûó÷õýýûõ ÿðððüõòðþò òøôõþðõöøüð. //úðýøðþòðòü òøôõþñóôõð þòþñððöõýøÿ ÿøúñõûþò ñ öõûüþ //þûó÷õýøÿ, ÿþñûõôóþùõóþ õñòõñòòõýýþóþ øûø øñúðö¸ýýþóþ //òþñððöõýøÿ ÿøúñõûþò ýð ôøñÿûõõ ò öõûðõüþü òøôõþðõöøüõ. MOV ECX, 9999h //úð÷ðòõûü ýð úþýõö ÿðþóððüüû ò ñóôõðõ. CMP CL, 0 //ð÷üõð òõûð ÿðþóððüüû ò ñóôõðõ ýõ ø÷òõñòõý. XOR CH, CH //õÿõðüECX = CL ôûøýð ñóôõðð òøôõþÿðüÿòø. MOV EDI, 0000h //S:DI -> õòþñò ò PSP MOV EBX, 1210h //úð÷ðýøõ ýð ðôðõñ òõûð ñøñòõüýþù MOV EBX,ESI //ðþóððüüû ò òøôõþñóôõðõ ÿþ ñþþòòõò- MOV ESI, 1210h //òòóþùøü òõúòþððü: //2h - òõúòþð ðõöøüð //0h - òõúòþð òøôõþ ðôðÿòõðð XCHG AL, AH //òÿ÷ü ôûðóþò ðõóøñòðþò. AAA //þððõúöøÿ ôûðóþò ðõóøñòðð. MOV EAX,ESI MOV EAX, OFFSET SzGrfSc4 //ð÷üõð ñòðýôððòýþóþ òøôõþñóôõðð. CMC //þôóþòþòøòü ñóôõð ú ýþòþüó ÷ðÿþûýõýøþ CLD //úðýøðþòðòü òÿõð¸ô REPE SCASB //úðýøðþòðòü òøôõþñóôõð ôþ ÿþûýþóþ ðõ÷óûüòðòð. AAD //öõ ýõ ÿðõôÿðøýøüðòü, ýø úðúøõ ÿþÿûòþú ú óñòðýþòúõ //øôõþ ÿðððüõòðþò. //ðÿøñðòü ýòø ÿðððüõòðû ø üðññøò ñðüþóþ òøôõþñóôõðð // þÿõððòøòýóþ ÿðüÿòü, ôûÿ ôðûüýõûüøõóþ øñÿþûü÷þòðýøÿ // òõúóùõü òøôõþðõöøüõ. PUSH ECX //ð÷üõð ñóôõðð òøôõþÿðüÿòø ø÷òõñòõý. POP EDX //ðýýûõ, õóþ ñþôõðöøüþóþ ÿðþø÷òþûüýûõ. MOV EAX, 1210h //2h - ôóýúöøÿ//10h - òõúòþð ôþñòóÿð. MOV AL, 12h //2h - Íþüõð ôóýúöøø óñòðýþòûõýýþóþ ðõö. MOV EBX, (1 * 1) + (640 * 480) //ðððüõòðû òøôõþðõöøüð. MOV ECX, OFFSET SzGrfSc4 //ð÷üõð ñóôõðð //øôõþÿðüÿòø (640 * 480 * 2) MOV EAX, 0 //úð÷ðýøõ òõðõýõóþ ûõòþóþ óóûð ýð ôøñÿûõõ. MOV EBX,EDX //òÿ÷ðòü ÿðððüõòðû ñ ñûþúþü ôðýýûõ. DEC EDX //þòûõ ÷ýð÷õýøÿ óñòðýðòûøòðþòüñÿ òEDX NEG EDX //ñûþòýðÿ ôøúñðöøÿ òþ ôûðóõ ðõóøñòððEDX CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //þññòòõýýþ, ôøúñðöøÿ ò ÿðüÿòø. //ñòðýþòøòü þòòõòýûù ñøóýðû þñððñþòðýýþóþ //÷þñððöõýøÿ ò ÿðüÿòü ÷ýðúþóõýõððòþðð //ððôø÷õñúþóþ ðôðÿòõðð. PUSH DS //ðñòðþøòü ñõóüõýòýûõ ðõóøñòðû POP ES //ð þñûðñòü ôðýýûõ. MOV ES,EAX MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 236 //N AL,EDX //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 0 //õóøñòð üðñúø öòõòð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ MOV AL, 0 //õóøñòð Öòõòð db 238 //UT EDX, AL //ñòðýþòúð öòõòð //÷øñòøòü ñðùò (òñõ ÿøúñõûû ñðùòð) //OV BYTE PTR ES:[BX], 0 //ðÿððòûõýøõ þòòõòýþóþ ñøóýðûð ò ÷ýðúþóõýõððòþð //ððôø÷õñúþóþ ðôðÿòõðð. // ýð÷ðûõ, ÿðþòõðøòü ôþñòóÿ ú òøôõþ ðôðÿòõðó OUT 10h, AL MOV ECX, OFFSET SizeBuff //ðúñ. ðð÷üõð ÷ðóðóöðõüþù //ðþóððüüû - 64 úñ. //þñûðòü ýð ýõóþ òõúóùõþ ñðùòþòóþ üðñúó IN AL, 10h // Âþñüüøðø÷ýðÿ úþüñøýðöøÿ ôûÿ IN AL, 10h // øøýû, ñòÿ÷ûòðþùõù òøôõþ ðôðÿòõð IN AL, 10h // ñ ôøñÿûõõü (üþýøòþðþü) IN AL, 10h // IN AL, 10h // IN AL, 10h // IN AL, 10h // IN AL, 10h // CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //ðôøúñøðþòðòü ò ÿðüÿòø //ðþ÷øòðýýûõ ÿðððüõòðû //ûòþô ÿøúñõûþò þòþñððöõýøÿ ýð ôøñÿûõù, //ðø ÷ðôðýýþü ðõöøüõ. INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EBX, 0000h //ð÷ðòü ñ ñðùòð 0 ÿþ ASCII MOV ECX, 0002h //òð ñðùòð. Îôøý úþôøðóõò ñðüþ //òþñððöõýøõ, ð ôðóóþù õóþ öòõò. //ûòõñòø ñðùò ÿøúñõûþò ýð ôøñÿûõù. MOV EDI, 0000h //ýð÷õýøÿ þòþñððöõýøÿ ýð MOV ESI, 0000h //øñÿûõõ ÿðþø÷òþûüýû. //OV BYTE PTR ES:[BX], 00Fh INC EBX // ñûõôóþùõüó ñðùòó CLD //þôóþòþòøòüñÿ ú òûòþôó REP MOVSW //ûòþô ÿøúñõûþò ýð ôøñÿûõù, ò ððñøøðõýýþü //õöøüõ. //ð òûõþô ø÷ ÿþôÿðþóððüüû JMP QuitSub //ððôø÷õñúøù ðõöøü 320 x 200 òþ÷õú, 256 öòõòþò //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð. Scr19: MOV EAX, 0B800h MOV DS,EAX //ýøöøðûø÷øðþòðòü ôþñòóÿ ú óððôø÷õñúþüó ðôðÿòõðó ø //ñòðýþòøòü ðõöøü ôøúñðöøø öòõòþòþóþ ðõóøñòðð MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 2 //õöøü ôøúñðöøø öòõòþòþóþ ðõóøñòðð db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EBX, 0000h //ð÷ðòü ñ ñðùòð 0 ÿþ ASCII MOV ECX, 2 * 16 //ñùøõ ÷øñûþ ÷ðôõùñòòþòðýýûõ ñðùòþò //ñòðýþòúð ÿþûýþù üðñúø öòõòð. MOV EDX, 3C4h //ôðõñýûù ðõóøñòð ñõúòõýñõðð MOV AL, 2 //õóøñòð üðñúø öòõòð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ //õúòõýñõðð MOV AL, 0Fh //ñõ ñøòû (ÿðúþ ñõûûù) db 238 //UT EDX, AL //ñòðýþòúð üðñúø öòõòð //ñòðýþòúð üðñúø ñøòþò. MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 8 //õóøñòð üðñúø ñøòþò db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ MOV AL, 0FFh //ñõ ÿøúñõûû ñðùòþò ðð÷üðñúøðþòðòü db 238 //UT EDX, AL //ñòðýþòúð üðñúø ñøòþò //ñòðýþòúð öòõòð. MOV EDX, RezerfSub2 //ðóðó÷øòü ñóôõð ôûÿ ÷ðÿþûýõýøÿ MOV ECX, 32 //þ þôýþüó ñðùòó ýð ÿøúñõû //÷þñððöõýøÿ ø öòõò. REP STOSB //ðôøúñøðþòðòü //ðþöõôóðð óñòðýþòúø öòõòþòþù ÿðûøòðû ôûÿ þôýþóþ //òõòþòþóþ þòòõýúð MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV EAX, 2 //õóøñòð üðñúø öòõòð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ //ñòðýþòúð ÿðûøòðû ø÷ 16-òø þòòõýúþò ôûÿ þôýþóþ òûñððýýþóþ //òõòð. Êðöôûù ýþòûù þòòõýþú, òõüýõõ ÿðõôûôóùõóþ. Òðú úðú //ðøýöõÿ ÿþûó÷õýøÿ ýþòþóþ þòòõýúð ñòþôøòüñÿ ú ôþñðòûõýøþ // úþô øñõþôýþóþ öòõòð ûøøýõóþ ýþûõòþóþ ñðùòð. MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV EAX, 2 //õóøñòð üðñúø öòõòð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ ADC AH, 00h //ðõôòððøòõûüýþ, ÷ðôøúñøðþòðòü //õóøñòð ýð üýøüþõ ÿðøððùõýøõ AAA //ñòðòøòü ðõóøñòð ò òðõñóõüþü ñþñòðÿýøø //òõò (÷¸ðýûù) MOV EBX, 00h //øñúðøÿòþð ÷¸ðýþóþ öòõòð MOV EAX, OFFSET Color0 //ðóðó÷úð úþôþò òðõñóõüþóþ öòõòð MOV ECX, 4 //øñûþ ñðùòþò, úþòþðûüø úþôøðóõòñÿ öòõò ADD EAX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EAX //ðøððùõýøõ ADC EAX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð öòõòð NOT EAX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //ðóðó÷úð úþôþò 16-òø þòòõýúþò þôýþóþ ø òþóþ öõ öòõòð // ñþ÷ôðòðõüþù ÿðûøòðõ. MOV EBX, OFFSET Palette0 MOV ECX, 16 //ûÿ 16-òø òþ÷üþöýûõ þòòõýúþò ADD EBX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EBX //ðøððùõýøõ ADC EBX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð ÿðûøòðû ôûÿ òðõñóõüþóþ öòõòð NOT EBX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //òõò (ñøýøù) MOV EBX, 01h //øñúðøÿòþð ñøýøóþ öòõòð MOV EAX, OFFSET Color1 //ðóðó÷úð úþôþò òðõñóõüþóþ öòõòð MOV ECX, 4 //øñûþ ñðùòþò, úþòþðûüø úþôøðóõòñÿ öòõò ADD EAX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EAX //ðøððùõýøõ ADC EAX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð öòõòð NOT EAX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //ðóðó÷úð úþôþò 16-òø þòòõýúþò þôýþóþ ø òþóþ öõ öòõòð // ñþ÷ôðòðõüþù ÿðûøòðõ. MOV EBX, OFFSET Palette1 MOV ECX, 16 //ûÿ 16-òø òþ÷üþöýûõ þòòõýúþò ADD EBX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EBX //ðøððùõýøõ ADC EBX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð ÿðûøòðû ôûÿ òðõñóõüþóþ öòõòð NOT EBX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //òõò (÷õû¸ýûù) MOV EBX, 02h //øñúðøÿòþð ÷õû¸ýþóþ öòõòð MOV EAX, OFFSET Color2 //ðóðó÷úð úþôþò òðõñóõüþóþ öòõòð MOV ECX, 4 //øñûþ ñðùòþò, úþòþðûüø úþôøðóõòñÿ öòõò ADD EAX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EAX //ðøððùõýøõ ADC EAX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð öòõòð NOT EAX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //ðóðó÷úð úþôþò 16-òø þòòõýúþò þôýþóþ ø òþóþ öõ öòõòð // ñþ÷ôðòðõüþù ÿðûøòðõ. MOV EBX, OFFSET Palette2 MOV ECX, 16 //ûÿ 16-òø òþ÷üþöýûõ þòòõýúþò ADD EBX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EBX //ðøððùõýøõ ADC EBX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð ÿðûøòðû ôûÿ òðõñóõüþóþ öòõòð NOT EBX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //òõò (ñõðþ÷þòûù) MOV EBX, 03h //øñúðøÿòþð ñõðõ÷þòþóþ öòõòð MOV EAX, OFFSET Color3 //ðóðó÷úð úþôþò òðõñóõüþóþ öòõòð MOV ECX, 4 //øñûþ ñðùòþò, úþòþðûüø úþôøðóõòñÿ öòõò ADD EAX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EAX //ðøððùõýøõ ADC EAX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð öòõòð NOT EAX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //ðóðó÷úð úþôþò 16-òø þòòõýúþò þôýþóþ ø òþóþ öõ öòõòð // ñþ÷ôðòðõüþù ÿðûøòðõ. MOV EBX, OFFSET Palette3 MOV ECX, 16 //ûÿ 16-òø òþ÷üþöýûõ þòòõýúþò ADD EBX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EBX //ðøððùõýøõ ADC EBX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð ÿðûøòðû ôûÿ òðõñóõüþóþ öòõòð NOT EBX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //òõò (úððñýûù) MOV EBX, 04h //øñúðøÿòþð úððñýþóþ öòõòð MOV EAX, OFFSET Color4 //ðóðó÷úð úþôþò òðõñóõüþóþ öòõòð MOV ECX, 4 //øñûþ ñðùòþò, úþòþðûüø úþôøðóõòñÿ öòõò ADD EAX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EAX //ðøððùõýøõ ADC EAX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð öòõòð NOT EAX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //ðóðó÷úð úþôþò 16-òø þòòõýúþò þôýþóþ ø òþóþ öõ öòõòð // ñþ÷ôðòðõüþù ÿðûøòðõ. MOV EBX, OFFSET Palette4 MOV ECX, 16 //ûÿ 16-òø òþ÷üþöýûõ þòòõýúþò ADD EBX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EBX //ðøððùõýøõ ADC EBX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð ÿðûøòðû ôûÿ òðõñóõüþóþ öòõòð NOT EBX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //òõò (úððø÷ýõòûù) MOV EBX, 05h //øñúðøÿòþð úððø÷ýõòþóþ öòõòð MOV EAX, OFFSET Color5 //ðóðó÷úð úþôþò òðõñóõüþóþ öòõòð MOV ECX, 4 //øñûþ ñðùòþò, úþòþðûüø úþôøðóõòñÿ öòõò ADD EAX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EAX //ðøððùõýøõ ADC EAX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð öòõòð NOT EAX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //ðóðó÷úð úþôþò 16-òø þòòõýúþò þôýþóþ ø òþóþ öõ öòõòð // ñþ÷ôðòðõüþù ÿðûøòðõ. MOV EBX, OFFSET Palette5 MOV ECX, 16 //ûÿ 16-òø òþ÷üþöýûõ þòòõýúþò ADD EBX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EBX //ðøððùõýøõ ADC EBX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð ÿðûøòðû ôûÿ òðõñóõüþóþ öòõòð NOT EBX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //òõò (ôøþûõòþòûù) MOV EBX, 06h //øñúðøÿòþð ôøþûõòþòþóþ öòõòð MOV EAX, OFFSET Color6 //ðóðó÷úð úþôþò òðõñóõüþóþ öòõòð MOV ECX, 4 //øñûþ ñðùòþò, úþòþðûüø úþôøðóõòñÿ öòõò ADD EAX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EAX //ðøððùõýøõ ADC EAX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð öòõòð NOT EAX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //ðóðó÷úð úþôþò 16-òø þòòõýúþò þôýþóþ ø òþóþ öõ öòõòð // ñþ÷ôðòðõüþù ÿðûøòðõ. MOV EBX, OFFSET Palette6 MOV ECX, 16 //ûÿ 16-òø òþ÷üþöýûõ þòòõýúþò ADD EBX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EBX //ðøððùõýøõ ADC EBX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð ÿðûøòðû ôûÿ òðõñóõüþóþ öòõòð NOT EBX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //òõò (ñõðûù) MOV EBX, 07h //øñúðøÿòþð ñõðþóþ öòõòð MOV EAX, OFFSET Color7 //ðóðó÷úð úþôþò òðõñóõüþóþ öòõòð MOV ECX, 4 //øñûþ ñðùòþò, úþòþðûüø úþôøðóõòñÿ öòõò ADD EAX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EAX //ðøððùõýøõ ADC EAX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð öòõòð NOT EAX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //ðóðó÷úð úþôþò 16-òø þòòõýúþò þôýþóþ ø òþóþ öõ öòõòð // ñþ÷ôðòðõüþù ÿðûøòðõ. MOV EBX, OFFSET Palette7 MOV ECX, 16 //ûÿ 16-òø òþ÷üþöýûõ þòòõýúþò ADD EBX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EBX //ðøððùõýøõ ADC EBX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð ÿðûøòðû ôûÿ òðõñóõüþóþ öòõòð NOT EBX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //òõò (ò¸üýþ-ñõðûù) MOV EBX, 08h //øñúðøÿòþð ò¸üýþ-ñõðþóþ öòõòð MOV EAX, OFFSET Color8 //ðóðó÷úð úþôþò òðõñóõüþóþ öòõòð MOV ECX, 4 //øñûþ ñðùòþò, úþòþðûüø úþôøðóõòñÿ öòõò ADD EAX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EAX //ðøððùõýøõ ADC EAX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð öòõòð NOT EAX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //ðóðó÷úð úþôþò 16-òø þòòõýúþò þôýþóþ ø òþóþ öõ öòõòð // ñþ÷ôðòðõüþù ÿðûøòðõ. MOV EBX, OFFSET Palette8 MOV ECX, 16 //ûÿ 16-òø òþ÷üþöýûõ þòòõýúþò ADD EBX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EBX //ðøððùõýøõ ADC EBX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð ÿðûøòðû ôûÿ òðõñóõüþóþ öòõòð NOT EBX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //òõò (ÿðúþ-óþûóñþù) MOV EBX, 09h //øñúðøÿòþð ÿðúþ-óþûóñþóþ öòõòð MOV EAX, OFFSET Color9 //ðóðó÷úð úþôþò òðõñóõüþóþ öòõòð MOV ECX, 4 //øñûþ ñðùòþò, úþòþðûüø úþôøðóõòñÿ öòõò ADD EAX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EAX //ðøððùõýøõ ADC EAX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð öòõòð NOT EAX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //ðóðó÷úð úþôþò 16-òø þòòõýúþò þôýþóþ ø òþóþ öõ öòõòð // ñþ÷ôðòðõüþù ÿðûøòðõ. MOV EBX, OFFSET Palette9 MOV ECX, 16 //ûÿ 16-òø òþ÷üþöýûõ þòòõýúþò ADD EBX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EBX //ðøððùõýøõ ADC EBX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð ÿðûøòðû ôûÿ òðõñóõüþóþ öòõòð NOT EBX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //òõò (ñòõòûþ-÷õû¸ýûù) MOV EBX, 10h //øñúðøÿòþð ñòõòûþ-÷õû¸ýþóþ öòõòð MOV EAX, OFFSET Color10 //ðóðó÷úð úþôþò òðõñóõüþóþ öòõòð MOV ECX, 4 //øñûþ ñðùòþò, úþòþðûüø úþôøðóõòñÿ öòõò ADD EAX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EAX //ðøððùõýøõ ADC EAX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð öòõòð NOT EAX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //ðóðó÷úð úþôþò 16-òø þòòõýúþò þôýþóþ ø òþóþ öõ öòõòð // ñþ÷ôðòðõüþù ÿðûøòðõ. MOV EBX, OFFSET Palette10 MOV ECX, 16 //ûÿ 16-òø òþ÷üþöýûõ þòòõýúþò ADD EBX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EBX //ðøððùõýøõ ADC EBX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð ÿðûøòðû ôûÿ òðõñóõüþóþ öòõòð NOT EBX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //òõò (ñòõòûþ-óþûóñþù) MOV EBX, 11h //øñúðøÿòþð ñòõòûþ-óþûóñþóþ öòõòð MOV EAX, OFFSET Color11 //ðóðó÷úð úþôþò òðõñóõüþóþ öòõòð MOV ECX, 4 //øñûþ ñðùòþò, úþòþðûüø úþôøðóõòñÿ öòõò ADD EAX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EAX //ðøððùõýøõ ADC EAX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð öòõòð NOT EAX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //ðóðó÷úð úþôþò 16-òø þòòõýúþò þôýþóþ ø òþóþ öõ öòõòð // ñþ÷ôðòðõüþù ÿðûøòðõ. MOV EBX, OFFSET Palette11 MOV ECX, 16 //ûÿ 16-òø òþ÷üþöýûõ þòòõýúþò ADD EBX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EBX //ðøððùõýøõ ADC EBX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð ÿðûøòðû ôûÿ òðõñóõüþóþ öòõòð NOT EBX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //òõò (ðþ÷þòûù) MOV EBX, 12h //øñúðøÿòþð ðþ÷þòþóþ öòõòð MOV EAX, OFFSET Color12 //ðóðó÷úð úþôþò òðõñóõüþóþ öòõòð MOV ECX, 4 //øñûþ ñðùòþò, úþòþðûüø úþôøðóõòñÿ öòõò ADD EAX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EAX //ðøððùõýøõ ADC EAX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð öòõòð NOT EAX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //ðóðó÷úð úþôþò 16-òø þòòõýúþò þôýþóþ ø òþóþ öõ öòõòð // ñþ÷ôðòðõüþù ÿðûøòðõ. MOV EBX, OFFSET Palette12 MOV ECX, 16 //ûÿ 16-òø òþ÷üþöýûõ þòòõýúþò ADD EBX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EBX //ðøððùõýøõ ADC EBX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð ÿðûøòðû ôûÿ òðõñóõüþóþ öòõòð NOT EBX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //òõò (üðûøýþòûù) MOV EBX, 13h //øñúðøÿòþð üðûøýþòþóþ öòõòð MOV EAX, OFFSET Color13 //ðóðó÷úð úþôþò òðõñóõüþóþ öòõòð MOV ECX, 4 //øñûþ ñðùòþò, úþòþðûüø úþôøðóõòñÿ öòõò ADD EAX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EAX //ðøððùõýøõ ADC EAX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð öòõòð NOT EAX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //ðóðó÷úð úþôþò 16-òø þòòõýúþò þôýþóþ ø òþóþ öõ öòõòð // ñþ÷ôðòðõüþù ÿðûøòðõ. MOV EBX, OFFSET Palette13 MOV ECX, 16 //ûÿ 16-òø òþ÷üþöýûõ þòòõýúþò ADD EBX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EBX //ðøððùõýøõ ADC EBX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð ÿðûøòðû ôûÿ òðõñóõüþóþ öòõòð NOT EBX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //òõò (ö¸ûòûù) MOV EBX, 14h //øñúðøÿòþð ö¸ûòþóþ öòõòð MOV EAX, OFFSET Color14 //ðóðó÷úð úþôþò òðõñóõüþóþ öòõòð MOV ECX, 4 //øñûþ ñðùòþò, úþòþðûüø úþôøðóõòñÿ öòõò ADD EAX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EAX //ðøððùõýøõ ADC EAX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð öòõòð NOT EAX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //ðóðó÷úð úþôþò 16-òø þòòõýúþò þôýþóþ ø òþóþ öõ öòõòð // ñþ÷ôðòðõüþù ÿðûøòðõ. MOV EBX, OFFSET Palette14 MOV ECX, 16 //ûÿ 16-òø òþ÷üþöýûõ þòòõýúþò ADD EBX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EBX //ðøððùõýøõ ADC EBX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð ÿðûøòðû ôûÿ òðõñóõüþóþ öòõòð NOT EBX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //òõò (ñõûûù) MOV EBX, 15h //øñúðøÿòþð ñõûþóþ öòõòð MOV EAX, OFFSET Color15 //ðóðó÷úð úþôþò òðõñóõüþóþ öòõòð MOV ECX, 4 //øñûþ ñðùòþò, úþòþðûüø úþôøðóõòñÿ öòõò ADD EAX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EAX //ðøððùõýøõ ADC EAX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð öòõòð NOT EAX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //ðóðó÷úð úþôþò 16-òø þòòõýúþò þôýþóþ ø òþóþ öõ öòõòð // ñþ÷ôðòðõüþù ÿðûøòðõ. MOV EBX, OFFSET Palette15 MOV ECX, 16 //ûÿ 16-òø òþ÷üþöýûõ þòòõýúþò ADD EBX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EBX //ðøððùõýøõ ADC EBX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð ÿðûøòðû ôûÿ òðõñóõüþóþ öòõòð NOT EBX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //õðõô òõü, úðú ýð÷ðòü ÷ðóðó÷úó ýóöýþù //øñòõüýþù ÿðþóððüüû ø÷ úþýòðþû¸ðð //ððôø÷õñúþóþ ðôðÿòõðð ÿðþø÷òõñòø òõðñþòúó //þþòòõòñòòóþùõóþ òõúòþðð ÿðõðûòðýøÿ, ñ úþòþðûü //óôõü ððñþòðòü ø ÷ðýõñòø õóþ ò ñþþòòõòñòòóþùøù //ôðõñ ñõóüõýòýþóþ ñóôõðð þÿõððòøòýþù ÿðüÿòø. //3h - Ôûðó òõúòþðð ÷ðÿððøøòðõüþóþ þôýþ, ø÷ //ð¸õ þñýþòýûõ òøôõþðõöøüþò. MOV ES,EDX //ðñòðþõü ýð ýõóþ ES XOR EDI,EDI //S:DI -> ýð÷ðûþ òûôõûõýýþóþ ñûþúð MOV ECX, 2 // - ÷øñûþ ñðùòþò ò ñõóüõýòõ MOV EBX, 13h //õúòþð ÿðõðûòðýøÿ ÷ðýþñøüûù ò ñóôõð. PUSH EBX //ðôøúñøðþòðòü ÷ýð÷õýøõ ôûðóðEBX ø //þõððýøòü õóþ ôûÿ ôðûüýõùøøõ ôõùñòòøù. CLD //ðÿþûýÿòü òÿõð¸ô. REP STOSB //ðÿþûýõýøõ. //ðÿþûýøòü òòþðþù ñðùò ñøóüõýòð, ôûÿ úþýòðþûÿ //OV BYTE PTR ES:[DI], 0 //ðóðó÷øòü ýóöýóþ ñøñòõüýóþ ÿþôÿðþóððüüó ø÷ //øúðþñõõüû úþýòðþû¸ðð òøôõþðôðÿòõðð. MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 236 //N AL,EDX //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 0 //õóøñòð üðñúø öòõòð db 236 //N AL,EDX //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ MOV AL, 0 //õóøñòð Öòõòð db 236 //N AL,EDX //ñòðýþòúð öòõòð //õÿþñðõôñòòõýýðÿ ÷ðóðó÷úð ñøñòõüýþù ÿðþóððüüû //÷ ýðúþÿøòõûÿ úþýòðþû¸ðð óððôø÷õñúþóþ ðôðÿòõðð //õûøúþü, òðú úðú óñòðýþòûõý ýóöýûù ôûðó, ñóôõò //ûÿþûýÿòüñÿ ñþþòòõòñòòóþøðÿ ÿþôÿðþóððüüð. MOV ECX, OFFSET SizeBuff //ðúñ. ðð÷üõð ÷ðóðóöðõüþù //ðþóððüüû - 64 úñ. OUT 10h, AL // Âþñüüøðø÷ýðÿ úþüñøýðöøÿ ôûÿ OUT 10h, AL // øøýû, ñòÿ÷ûòðþùõù òøôõþ ðôðÿòõð OUT 10h, AL // ñ ôøñÿûõõü (üþýøòþðþü) OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //ðôøúñøðþòðòü ò ÿðüÿòø //ðþ÷øòðýýûõ ÿðððüõòðû POP DS //ñòþñþôøòü ñþõððý¸ýýûõ POP ES //õóøñòðû //ðôðòü ÿðððüõòðû òõðòøúðûüýþóþ ñüõùõýøÿ //ð ôøñÿûõõ, õñûø òðõñóõòüñÿ. Ýòþ ôõûðõòñÿ //ûÿ òþóþ, ÷òþ ýòøü ñüõùõýøõü øýøöøøðþòðòü //õûðòõûüýûù òõúñòþòþù øûø óððôø÷õñúøù ðõöøü // ÷ðôðýýûüø ÿðððüõòððüø. Íóöýûù ðõöøü //þñòøóðõòüñÿ ÷ð ñ÷¸ò øñúðöõýøÿ þòþñððöõýøÿ //ôýþóþ ø÷ òð¸õ þñýþòýûõ ðõöøüþò. // ýðøõü ñûó÷ðõ, ýòþ þòþñððöõýøõ òøôõþðõöøüð 320 x 200 //óýúöøÿ - 13h þôýþóþ ø÷ òð¸õ þñýþòýûõ ðõöøüþò. MOV AH, 13h //óýúöøÿ 13h Âøôõþ ôððùòõðð. MOV ES,EAX //þòþóþ öøúûð ñ òøôõþñóôõðþü. MOV EAX, 1310h //þòòõðöôõýøõ þñýþòýþù ôóýúöøø. PUSH EAX //ðôøúñøðþòðòü ÷ýð÷õýøõ ôûðóðEAX. POP ECX //ýð÷õýøõ ôûðóðECX õù¸ ýõ þÿðõôõûõýþ. MOV AL, 00h //þô ÿðþø÷òþûüýþóþ ÿøúñõûð. MOV EAX, 0 //úð÷ðýøõ òõðõýõóþ ûõòþóþ óóûð ýð ôøñÿûõõ. MOV EBX, (2 * 2) + (320 * 200) //ðððüõòðû òøôõþðõöøüð. MOV EBX,EAX //ñòðýþòúð ñòÿ÷ø ðõóøñòðþò. //ðððüõòðû þòþñððöõýøÿ òõúñòð ò óððôø÷õñúþü ðõöøüõ. MOV CH, 01h //õòûù òõðõýøù óóþû MOV CL, 40h //ððòûù òõðõýøù óóþû MOV DH, 25h //õòûù ýøöýøù óóþû MOV DL, 40h //ððòûù ýøöýøù óóþû AAA //ñ¸, óöõ þÿðõôõûõýþ úðú ýðôþ. MOV EBX, (2 * 2) + (320 * 200) //òðýôððòýûõ ÿðððüõòðû ðõöøüð. MOV EBX,EAX //þòòþðýðÿ óñòðýþòúð ñòÿ÷ø ðõóøñòðþò. DEC EDX //þòûõ ÷ýð÷õýøÿ óñòðýðòûøòðþòüñÿ òEDX NEG EDX //ñûþòýðÿ ôøúñðöøÿ òþ ôûðóõ ðõóøñòððEDX MOV ECX, OFFSET SzGrfSc1 //ð÷üõð ñóôõðð //øôõþÿðüÿòø (320 * 200 * 2) REPE CMPSB //ððòýõýøõ ÿþûó÷õýýûõ ÿðððüõòðþò òøôõþðõöøüð. //úðýøðþòðòü òøôõþñóôõð þòþñððöõýøÿ ÿøúñõûþò ñ öõûüþ //þûó÷õýøÿ, ÿþñûõôóþùõóþ õñòõñòòõýýþóþ øûø øñúðö¸ýýþóþ //òþñððöõýøÿ ÿøúñõûþò ýð ôøñÿûõõ ò öõûðõüþü òøôõþðõöøüõ. MOV ECX, 9999h //úð÷ðòõûü ýð úþýõö ÿðþóððüüû ò ñóôõðõ. CMP CL, 0 //ð÷üõð òõûð ÿðþóððüüû ò ñóôõðõ ýõ ø÷òõñòõý. XOR CH, CH //õÿõðüECX = CL ôûøýð ñóôõðð òøôõþÿðüÿòø. MOV EDI, 0000h //S:DI -> õòþñò ò PSP MOV EBX, 1310h //úð÷ðýøõ ýð ðôðõñ òõûð ñøñòõüýþù MOV EBX,ESI //ðþóððüüû ò òøôõþñóôõðõ ÿþ ñþþòòõò- MOV ESI, 1310h //òòóþùøü òõúòþððü: //3h - òõúòþð ðõöøüð //0h - òõúòþð òøôõþ ðôðÿòõðð XCHG AL, AH //òÿ÷ü ôûðóþò ðõóøñòðþò. AAA //þððõúöøÿ ôûðóþò ðõóøñòðð. MOV EAX,ESI MOV EAX, OFFSET SzGrfSc1 //ð÷üõð ñòðýôððòýþóþ òøôõþñóôõðð. CMC //þôóþòþòøòü ñóôõð ú ýþòþüó ÷ðÿþûýõýøþ CLD //úðýøðþòðòü òÿõð¸ô REPE SCASB //úðýøðþòðòü òøôõþñóôõð ôþ ÿþûýþóþ ðõ÷óûüòðòð. AAD //öõ ýõ ÿðõôÿðøýøüðòü, ýø úðúøõ ÿþÿûòþú ú óñòðýþòúõ //øôõþ ÿðððüõòðþò. //ðÿøñðòü ýòø ÿðððüõòðû ø üðññøò ñðüþóþ òøôõþñóôõðð // þÿõððòøòýóþ ÿðüÿòü, ôûÿ ôðûüýõûüøõóþ øñÿþûü÷þòðýøÿ // òõúóùõü òøôõþðõöøüõ. PUSH ECX //ð÷üõð ñóôõðð òøôõþÿðüÿòø ø÷òõñòõý. POP EDX //ðýýûõ, õóþ ñþôõðöøüþóþ ÿðþø÷òþûüýûõ. MOV EAX, 1310h //3h - ôóýúöøÿ//10h - òõúòþð ôþñòóÿð. MOV AL, 13h //3h - Íþüõð ôóýúöøø óñòðýþòûõýýþóþ ðõö. MOV EBX, (2 * 2) + (320 * 200) //ðððüõòðû òøôõþðõöøüð. MOV ECX, OFFSET SzGrfSc1 //ð÷üõð ñóôõðð //øôõþÿðüÿòø (320 * 200 * 2) MOV EAX, 0 //úð÷ðýøõ òõðõýõóþ ûõòþóþ óóûð ýð ôøñÿûõõ. MOV EBX,EDX //òÿ÷ðòü ÿðððüõòðû ñ ñûþúþü ôðýýûõ. DEC EDX //þòûõ ÷ýð÷õýøÿ óñòðýðòûøòðþòüñÿ òEDX NEG EDX //ñûþòýðÿ ôøúñðöøÿ òþ ôûðóõ ðõóøñòððEDX CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //þññòòõýýþ, ôøúñðöøÿ ò ÿðüÿòø. //ñòðýþòøòü þòòõòýûù ñøóýðû þñððñþòðýýþóþ //÷þñððöõýøÿ ò ÿðüÿòü ÷ýðúþóõýõððòþðð //ððôø÷õñúþóþ ðôðÿòõðð. PUSH DS //ðñòðþøòü ñõóüõýòýûõ ðõóøñòðû POP ES //ð þñûðñòü ôðýýûõ. MOV ES,EAX MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 236 //N AL,EDX //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 0 //õóøñòð üðñúø öòõòð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ MOV AL, 0 //õóøñòð Öòõòð db 238 //UT EDX, AL //ñòðýþòúð öòõòð //÷øñòøòü ñðùò (òñõ ÿøúñõûû ñðùòð) //OV BYTE PTR ES:[BX], 0 //ðÿððòûõýøõ þòòõòýþóþ ñøóýðûð ò ÷ýðúþóõýõððòþð //ððôø÷õñúþóþ ðôðÿòõðð. // ýð÷ðûõ, ÿðþòõðøòü ôþñòóÿ ú òøôõþ ðôðÿòõðó OUT 10h, AL MOV ECX, OFFSET SizeBuff //ðúñ. ðð÷üõð ÷ðóðóöðõüþù //ðþóððüüû - 64 úñ. //þñûðòü ýð ýõóþ òõúóùõþ ñðùòþòóþ üðñúó IN AL, 10h // Âþñüüøðø÷ýðÿ úþüñøýðöøÿ ôûÿ IN AL, 10h // øøýû, ñòÿ÷ûòðþùõù òøôõþ ðôðÿòõð IN AL, 10h // ñ ôøñÿûõõü (üþýøòþðþü) IN AL, 10h // IN AL, 10h // IN AL, 10h // IN AL, 10h // IN AL, 10h // CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //ðôøúñøðþòðòü ò ÿðüÿòø //ðþ÷øòðýýûõ ÿðððüõòðû //ûòþô ÿøúñõûþò þòþñððöõýøÿ ýð ôøñÿûõù, //ðø ÷ðôðýýþü ðõöøüõ. INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EBX, 0000h //ð÷ðòü ñ ñðùòð 0 ÿþ ASCII MOV ECX, 0002h //òð ñðùòð. Îôøý úþôøðóõò ñðüþ //òþñððöõýøõ, ð ôðóóþù õóþ öòõò. //ûòõñòø ñðùò ÿøúñõûþò ýð ôøñÿûõù. MOV EDI, 0000h //ýð÷õýøÿ þòþñððöõýøÿ ýð MOV ESI, 0000h //øñÿûõõ ÿðþø÷òþûüýû. //OV BYTE PTR ES:[BX], 00Fh INC EBX // ñûõôóþùõüó ñðùòó CLD //þôóþòþòøòüñÿ ú òûòþôó REP MOVSW //ûòþô ÿøúñõûþò ýð ôøñÿûõù, ò ððñøøðõýýþü //õöøüõ. //ð òûõþô ø÷ ÿþôÿðþóððüüû JMP QuitSub QuitSub: //ET //ûùòø ø÷ ÿþôÿðþóððüüû JMP ScNxt //RAPH ENDP //ntr10hLen = $ - Intr10h //þýõö ÿþôÿðþóððüüû þñððñþò÷øúð INT 10h //õðõõþô ú þúþý÷ðýøþ óñòðýþòþ÷ýþù ÿðþöõôóðû GraphSc1: //ñòðýþòúð ðõöøüð þòþñððöõýøÿ øûø ñúðûòøÿ úóðñþðð. //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð MOV EAX, 0B800h MOV DS,EAX //ñòðýþòøòü ðõöøü ÷ðÿøñø 0 MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 238 //UT EDX, EAX //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EBX, 0000h //ð÷ðòü ñ ñðùòð 0 ÿþ ASCII MOV ECX, 80 * 175 //ñùøõ ÷øñûþ ÷ðôõùñòòþòðýýûõ ñðùòþò //ðõôòððøòõûüýðÿ þ÷øñòúð ñðùòð ø÷þñððöõýøÿ. //ñòðýþòúð ÿþûýþù üðñúø öòõòð. MOV EDX, 3C4h //ôðõñýûù ðõóøñòð ñõúòõýñõðð MOV AL, 2 //õóøñòð üðñúø öòõòð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ //õúòõýñõðð MOV AL, 0Fh //ñõ ñøòû (ÿðúþ ñõûûù) db 238 //UT EDX, AL //ñòðýþòúð üðñúø öòõòð //ñòðýþòúð üðñúø ñøòþò. MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 8 //õóøñòð üðñúø ñøòþò db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ MOV AL, 0FFh //ñõ ÿøúñõûû ñðùòþò ðð÷üðñúøðþòðòü db 238 //UT EDX, AL //ñòðýþòúð üðñúø ñøòþò //÷øñòøòü ñðùò (òñõ ÿøúñõûû ñðùòð) //OV BYTE PTR ES:[BX], 0 //õÿõðü, òûòõñòø ñðùò ø÷þñððöõýøÿ. //ñòðýþòúð öòõòð. MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 2 //õóøñòð üðñúø öòõòð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ MOV AL, 1 //òõò db 238 //UT EDX, AL //ñòðýþòúð öòõòð //ûòõñòø ñðùò ÿøúñõûþò. //OV BYTE PTR ES:[BX], 95 //õðõõþô ú þúþý÷ðýøþ óñòðýþòþ÷ýþù ÿðþöõôóðû JMP ScNxt GraphSc2: //ñòðýþòúð üõñòð ÿþûþöõýøÿ úóðñþðð ýð ôøñÿûõõ. //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð MOV EAX, 0B800h MOV DS,EAX //ðýÿòü ðõóøñòðû PUSH EAX PUSH EBX PUSH ECX PUSH EDX //óýúöøÿ òûòþôð ýð ôøñÿûõù //ýð÷õýøÿ ø ðôðõñð, óñûþòýþ ýõ þÿðõôõûõýû MOV AH, 00h MOV AL, 0 MOV EAX, 0000h MOV ES,EAX //OV ES:0,EAX //õðòðÿ ÿþ÷øöøÿ ýð ýúððýõ MOV ES,EBX //ûõôóùðÿ ÿþ÷øöøÿ MOV AH, 00h MOV AL, 0 //þô õþûþñòþóþ ñøóýðûð MOV EBX, 0 //þ÷øöøÿ þò úþýöð ñóôõðð MOV EBX,EAX MOV ESI, 0000h //ôðõñ ñòðþúø MOV EDI, 0000h // ýø÷ ýúððýð MOV ECX, 0000h //ûøýð ñòðþúø REP STOSB //øúñðöøÿ ò ñóôõðõ þÿõððòøòýþù ÿðüÿòø MOV AL, 00 MOV DS,EAX MOV EAX, 0B800h //ôðõñ òøôõþñóôõðð MOV ES,EAX MOV EDI, 0000h //üõùõýøõ ÿþ ýúððýó MOV ESI, atd5 //ôðõñ ñþþñùõýøÿ MOV ECX, 0000h //øñûþ òûòþôøüûõ ñðùòþò REP MOVSB //øúñðöøÿ þòþñððöõýøÿ ýð ôøñÿûõõ //ñòþñþôøòü ðõóøñòðû POP EAX POP EBX POP ECX POP EDX //õðõõþô ú þúþý÷ðýøþ óñòðýþòþ÷ýþù ÿðþöõôóðû JMP ScNxt GraphSc3: //þûó÷õýøõ ðõöøüð þòþñððöõýøÿ ø ðð÷üõðð úóðñþðð. //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð MOV EAX, 0B800h MOV DS,EAX MOV EAX, 0100 //óýúöøÿ 01h Âøôõþ ôððùòõðð //ñòðýþòøòü ðõöøü ÷ðÿøñø 0 MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EBX, 0000h //ð÷ðòü ñ ñðùòð 0 ÿþ ASCII MOV ECX, 80 * 175 //ñùøõ ÷øñûþ ÷ðôõùñòòþòðýýûõ ñðùòþò //ñòðýþòúð ÿþûýþù üðñúø öòõòð. MOV EDX, 3C4h //ôðõñýûù ðõóøñòð ñõúòõýñõðð MOV AL, 2 //õóøñòð üðñúø öòõòð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ //õúòõýñõðð MOV AL, 0Fh //ñõ ñøòû (ÿðúþ ñõûûù) db 238 //UT EDX, AL //ñòðýþòúð üðñúø öòõòð //ñòðýþòúð üðñúø ñøòþò. MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 8 //õóøñòð üðñúø ñøòþò db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //óýúöøÿ óòõûø÷õýøÿ ðð÷üõðð úóðñþðð AAM IMUL EDX AAA ADD EDX, 00h //óýúöøÿ óüõýüøõýøÿ ðð÷üõðð úóðñþðð MOV AL, 0FFh db 238 //UT EDX, AL INC EDX AAS SUB EDX, 00h AAD IDIV EDX //ûòõñòø ñðùò ÿøúñõûþò. //OV BYTE PTR ES:[BX], 95 //õðõõþô ú þúþý÷ðýøþ óñòðýþòþ÷ýþù ÿðþöõôóðû JMP ScNxt GraphSc4: //õóóûøðþòðýøõ ÿðúþñòø öòõòþòþù ÿðûøòðû, ñ ÿþüþùø //ðôðòðõüûõ ÿðððüõòðþò, ÿðø ÷ðÿðþñõ ôóýúöøø INT 10h. MOV EAX, 0B800h MOV DS,EAX MOV EAX, 0400h //óýúöøÿ 04h Âøôõþ ôððùòõðð //ðóðó÷øòü ÿðððüõòðû þñýþòýûõ 16-òø öòõòþò ø÷ //þýòðþû¸ðð òøôõþðôðÿòõðð MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 2 //õóøñòð üðñúø öòõòð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ MOV AL, 0 //õóøñòð Öòõò db 238 //UT EDX, AL //ñòðýþòúð öòõòð //õÿþñðõôñòòõýýþõ ÷òõýøõ ÿðððüõòðð, úðöôþóþ //÷ 16-òø þñýþòýûõ öòõòþò ø÷ óñòðþùñòòð //þýòðþû¸ðð òøôõþðôðÿòõðð MOV ECX, 000Fh //ñõóþ öòõòþò ôþûöýþ ñûòü 16 OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL //0 OUT 10h, AL //1 OUT 10h, AL //2 OUT 10h, AL //3 OUT 10h, AL //4 OUT 10h, AL //5 OUT 10h, AL //6 CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //ðôøúñøðþòðòü ò ÿðüÿòø //ðþ÷øòðýýûõ ÿðððüõòðû //ðûøòðð ø÷ 256-òø òþ÷üþöýûõ öòõòþò ÿþûó÷ðõòñÿ ÿðøüõýõýøõü //øúûð ø÷ 16-òø úððòýþóþ ôþÿþòûõýøÿ ýþòþóþ 1-óþ ñðùòð ú //þôó øüõþùõóþñÿ öòõòð. Óñòðýþòúð ÿþ ÿðøýöõÿó 16 x 16 = 256. SetClr0: MOV ECX, 16 //õñü öøúû, ýðôþ 16 ðð÷ ÿþòòþðøòü ôûÿ //þóþ, ÷òþñû ÿþûó÷øòü ÿðûøòðó ø÷ 256-òø //òõòþò. DAA //ðýõõ ôþñðòûõýýûõ ñðùòû ñþõððýõýû MOV EBX, 0014h //ðúñøüðûüýþõ ÷ýð÷õýøõ, ÿðø ôþñðòûõýøÿõ. MOV ECX, 4 //ðöôûù öòõò úþôøðóõòñÿ 4-üÿ ñðùòðüø. MOV EDX, OFFSET Color0 //ðóðó÷úð úþôð þòþñððöõýøÿ ýóöýþóþ öòõòð. ADC DL, 01h //ðöôûù ðð÷ ôþñðòûÿòü ÿþ 1 ñðùòó, ò ýþòûù. MOV EDX, OFFSET PlusClr //þñðòûÿõüûù ñðùò ú úþôó öòõòð. INC EDX //ðøððñòøòü ÷ðóðóöõýýûù ñðùò ú þñòðûüýûü. AAA //ñ¸, óöõ þÿðõôõûõýþ úðú ýðôþ. AAD //þúð ýõ ÿðõôÿðøýøüðòü ýõ úðúøõ ÿþÿûòþú ú ø÷úÿòøþ. CBW //ñúõôõýøòü ðõóøñòðû öòõòð ò þôýþ ÷ýð÷õýøõ. LOOPZ SetClr0 //øúûø÷õñúøù ÿõðõõþô ÿþ ðôðõñó. SetClr1: MOV ECX, 16 //õñü öøúû, ýðôþ ÿþòòþðøòü 16 ðð÷. DAA //ðýõõ ôþñðòûõýýûõ ñðùòû ñþõððýõýû MOV EBX, 0014h //ðúñøüðûüýþõ ÷ýð÷õýøõ, ÿðø ôþñðòûõýøÿõ. MOV ECX, 4 //ðöôûù öòõò úþôøðóõòñÿ 4-üÿ ñðùòðüø. MOV EDX, OFFSET Color1 //ðóðó÷úð úþôð þòþñððöõýøÿ ýóöýþóþ öòõòð. ADC DL, 01h //ðöôûù ðð÷ ôþñðòûÿòü ÿþ 1 ñðùòó, ò ýþòûù. MOV EDX, OFFSET PlusClr //þñðòûÿõüûù ñðùò ú úþôó öòõòð. INC EDX //ðøððñòøòü ÷ðóðóöõýýûù ñðùò ú þñòðûüýûü. AAA //ñ¸, óöõ þÿðõôõûõýþ úðú ýðôþ. AAD //þúð ýõ ÿðõôÿðøýøüðòü ýõ úðúøõ ÿþÿûòþú ú ø÷úÿòøþ. CBW //ñúõôõýøòü ðõóøñòðû öòõòð ò þôýþ ÷ýð÷õýøõ. LOOPZ SetClr1 //øúûø÷õñúøù ÿõðõõþô ÿþ ðôðõñó. SetClr2: MOV ECX, 16 //õñü öøúû, ýðôþ ÿþòòþðøòü 16 ðð÷. DAA //ðýõõ ôþñðòûõýýûõ ñðùòû ñþõððýõýû MOV EBX, 0014h //ðúñøüðûüýþõ ÷ýð÷õýøõ, ÿðø ôþñðòûõýøÿõ. MOV ECX, 4 //ðöôûù öòõò úþôøðóõòñÿ 4-üÿ ñðùòðüø. MOV EDX, OFFSET Color2 //ðóðó÷úð úþôð þòþñððöõýøÿ ýóöýþóþ öòõòð. ADC DL, 01h //ðöôûù ðð÷ ôþñðòûÿòü ÿþ 1 ñðùòó, ò ýþòûù. MOV EDX, OFFSET PlusClr //þñðòûÿõüûù ñðùò ú úþôó öòõòð. INC EDX //ðøððñòøòü ÷ðóðóöõýýûù ñðùò ú þñòðûüýûü. AAA //ñ¸, óöõ þÿðõôõûõýþ úðú ýðôþ. AAD //þúð ýõ ÿðõôÿðøýøüðòü ýõ úðúøõ ÿþÿûòþú ú ø÷úÿòøþ. CBW //ñúõôõýøòü ðõóøñòðû öòõòð ò þôýþ ÷ýð÷õýøõ. LOOPZ SetClr2 //øúûø÷õñúøù ÿõðõõþô ÿþ ðôðõñó. SetClr3: MOV ECX, 16 //õñü öøúû, ýðôþ ÿþòòþðøòü 16 ðð÷. DAA //ðýõõ ôþñðòûõýýûõ ñðùòû ñþõððýõýû MOV EBX, 0014h //ðúñøüðûüýþõ ÷ýð÷õýøõ, ÿðø ôþñðòûõýøÿõ. MOV ECX, 4 //ðöôûù öòõò úþôøðóõòñÿ 4-üÿ ñðùòðüø. MOV EDX, OFFSET Color3 //ðóðó÷úð úþôð þòþñððöõýøÿ ýóöýþóþ öòõòð. ADC DL, 01h //ðöôûù ðð÷ ôþñðòûÿòü ÿþ 1 ñðùòó, ò ýþòûù. MOV EDX, OFFSET PlusClr //þñðòûÿõüûù ñðùò ú úþôó öòõòð. INC EDX //ðøððñòøòü ÷ðóðóöõýýûù ñðùò ú þñòðûüýûü. AAA //ñ¸, óöõ þÿðõôõûõýþ úðú ýðôþ. AAD //þúð ýõ ÿðõôÿðøýøüðòü ýõ úðúøõ ÿþÿûòþú ú ø÷úÿòøþ. CBW //ñúõôõýøòü ðõóøñòðû öòõòð ò þôýþ ÷ýð÷õýøõ. LOOPZ SetClr3 //øúûø÷õñúøù ÿõðõõþô ÿþ ðôðõñó. SetClr4: MOV ECX, 16 //õñü öøúû, ýðôþ ÿþòòþðøòü 16 ðð÷. DAA //ðýõõ ôþñðòûõýýûõ ñðùòû ñþõððýõýû MOV EBX, 0014h //ðúñøüðûüýþõ ÷ýð÷õýøõ, ÿðø ôþñðòûõýøÿõ. MOV ECX, 4 //ðöôûù öòõò úþôøðóõòñÿ 4-üÿ ñðùòðüø. MOV EDX, OFFSET Color4 //ðóðó÷úð úþôð þòþñððöõýøÿ ýóöýþóþ öòõòð. ADC DL, 01h //ðöôûù ðð÷ ôþñðòûÿòü ÿþ 1 ñðùòó, ò ýþòûù. MOV EDX, OFFSET PlusClr //þñðòûÿõüûù ñðùò ú úþôó öòõòð. INC EDX //ðøððñòøòü ÷ðóðóöõýýûù ñðùò ú þñòðûüýûü. AAA //ñ¸, óöõ þÿðõôõûõýþ úðú ýðôþ. AAD //þúð ýõ ÿðõôÿðøýøüðòü ýõ úðúøõ ÿþÿûòþú ú ø÷úÿòøþ. CBW //ñúõôõýøòü ðõóøñòðû öòõòð ò þôýþ ÷ýð÷õýøõ. LOOPZ SetClr4 //øúûø÷õñúøù ÿõðõõþô ÿþ ðôðõñó. SetClr5: MOV ECX, 16 //õñü öøúû, ýðôþ ÿþòòþðøòü 16 ðð÷. DAA //ðýõõ ôþñðòûõýýûõ ñðùòû ñþõððýõýû MOV EBX, 0014h //ðúñøüðûüýþõ ÷ýð÷õýøõ, ÿðø ôþñðòûõýøÿõ. MOV ECX, 4 //ðöôûù öòõò úþôøðóõòñÿ 4-üÿ ñðùòðüø. MOV EDX, OFFSET Color5 //ðóðó÷úð úþôð þòþñððöõýøÿ ýóöýþóþ öòõòð. ADC DL, 01h //ðöôûù ðð÷ ôþñðòûÿòü ÿþ 1 ñðùòó, ò ýþòûù. MOV EDX, OFFSET PlusClr //þñðòûÿõüûù ñðùò ú úþôó öòõòð. INC EDX //ðøððñòøòü ÷ðóðóöõýýûù ñðùò ú þñòðûüýûü. AAA //ñ¸, óöõ þÿðõôõûõýþ úðú ýðôþ. AAD //þúð ýõ ÿðõôÿðøýøüðòü ýõ úðúøõ ÿþÿûòþú ú ø÷úÿòøþ. CBW //ñúõôõýøòü ðõóøñòðû öòõòð ò þôýþ ÷ýð÷õýøõ. LOOPZ SetClr5 //øúûø÷õñúøù ÿõðõõþô ÿþ ðôðõñó. SetClr6: MOV ECX, 16 //õñü öøúû, ýðôþ ÿþòòþðøòü 16 ðð÷. DAA //ðýõõ ôþñðòûõýýûõ ñðùòû ñþõððýõýû MOV EBX, 0014h //ðúñøüðûüýþõ ÷ýð÷õýøõ, ÿðø ôþñðòûõýøÿõ. MOV ECX, 4 //ðöôûù öòõò úþôøðóõòñÿ 4-üÿ ñðùòðüø. MOV EDX, OFFSET Color6 //ðóðó÷úð úþôð þòþñððöõýøÿ ýóöýþóþ öòõòð. ADC DL, 01h //ðöôûù ðð÷ ôþñðòûÿòü ÿþ 1 ñðùòó, ò ýþòûù. MOV EDX, OFFSET PlusClr //þñðòûÿõüûù ñðùò ú úþôó öòõòð. INC EDX //ðøððñòøòü ÷ðóðóöõýýûù ñðùò ú þñòðûüýûü. AAA //ñ¸, óöõ þÿðõôõûõýþ úðú ýðôþ. AAD //þúð ýõ ÿðõôÿðøýøüðòü ýõ úðúøõ ÿþÿûòþú ú ø÷úÿòøþ. CBW //ñúõôõýøòü ðõóøñòðû öòõòð ò þôýþ ÷ýð÷õýøõ. LOOPZ SetClr6 //øúûø÷õñúøù ÿõðõõþô ÿþ ðôðõñó. SetClr7: MOV ECX, 16 //õñü öøúû, ýðôþ ÿþòòþðøòü 16 ðð÷. DAA //ðýõõ ôþñðòûõýýûõ ñðùòû ñþõððýõýû MOV EBX, 0014h //ðúñøüðûüýþõ ÷ýð÷õýøõ, ÿðø ôþñðòûõýøÿõ. MOV ECX, 4 //ðöôûù öòõò úþôøðóõòñÿ 4-üÿ ñðùòðüø. MOV EDX, OFFSET Color7 //ðóðó÷úð úþôð þòþñððöõýøÿ ýóöýþóþ öòõòð. ADC DL, 01h //ðöôûù ðð÷ ôþñðòûÿòü ÿþ 1 ñðùòó, ò ýþòûù. MOV EDX, OFFSET PlusClr //þñðòûÿõüûù ñðùò ú úþôó öòõòð. INC EDX //ðøððñòøòü ÷ðóðóöõýýûù ñðùò ú þñòðûüýûü. AAA //ñ¸, óöõ þÿðõôõûõýþ úðú ýðôþ. AAD //þúð ýõ ÿðõôÿðøýøüðòü ýõ úðúøõ ÿþÿûòþú ú ø÷úÿòøþ. CBW //ñúõôõýøòü ðõóøñòðû öòõòð ò þôýþ ÷ýð÷õýøõ. LOOPZ SetClr7 //øúûø÷õñúøù ÿõðõõþô ÿþ ðôðõñó. SetClr8: MOV ECX, 16 //õñü öøúû, ýðôþ ÿþòòþðøòü 16 ðð÷. DAA //ðýõõ ôþñðòûõýýûõ ñðùòû ñþõððýõýû MOV EBX, 0014h //ðúñøüðûüýþõ ÷ýð÷õýøõ, ÿðø ôþñðòûõýøÿõ. MOV ECX, 4 //ðöôûù öòõò úþôøðóõòñÿ 4-üÿ ñðùòðüø. MOV EDX, OFFSET Color8 //ðóðó÷úð úþôð þòþñððöõýøÿ ýóöýþóþ öòõòð. ADC DL, 01h //ðöôûù ðð÷ ôþñðòûÿòü ÿþ 1 ñðùòó, ò ýþòûù. MOV EDX, OFFSET PlusClr //þñðòûÿõüûù ñðùò ú úþôó öòõòð. INC EDX //ðøððñòøòü ÷ðóðóöõýýûù ñðùò ú þñòðûüýûü. AAA //ñ¸, óöõ þÿðõôõûõýþ úðú ýðôþ. AAD //þúð ýõ ÿðõôÿðøýøüðòü ýõ úðúøõ ÿþÿûòþú ú ø÷úÿòøþ. CBW //ñúõôõýøòü ðõóøñòðû öòõòð ò þôýþ ÷ýð÷õýøõ. LOOPZ SetClr8 //øúûø÷õñúøù ÿõðõõþô ÿþ ðôðõñó. SetClr9: MOV ECX, 16 //õñü öøúû, ýðôþ ÿþòòþðøòü 16 ðð÷. DAA //ðýõõ ôþñðòûõýýûõ ñðùòû ñþõððýõýû MOV EBX, 0014h //ðúñøüðûüýþõ ÷ýð÷õýøõ, ÿðø ôþñðòûõýøÿõ. MOV ECX, 4 //ðöôûù öòõò úþôøðóõòñÿ 4-üÿ ñðùòðüø. MOV EDX, OFFSET Color9 //ðóðó÷úð úþôð þòþñððöõýøÿ ýóöýþóþ öòõòð. ADC DL, 01h //ðöôûù ðð÷ ôþñðòûÿòü ÿþ 1 ñðùòó, ò ýþòûù. MOV EDX, OFFSET PlusClr //þñðòûÿõüûù ñðùò ú úþôó öòõòð. INC EDX //ðøððñòøòü ÷ðóðóöõýýûù ñðùò ú þñòðûüýûü. AAA //ñ¸, óöõ þÿðõôõûõýþ úðú ýðôþ. AAD //þúð ýõ ÿðõôÿðøýøüðòü ýõ úðúøõ ÿþÿûòþú ú ø÷úÿòøþ. CBW //ñúõôõýøòü ðõóøñòðû öòõòð ò þôýþ ÷ýð÷õýøõ. LOOPZ SetClr9 //øúûø÷õñúøù ÿõðõõþô ÿþ ðôðõñó. SetClr10: MOV ECX, 16 //õñü öøúû, ýðôþ ÿþòòþðøòü 16 ðð÷. DAA //ðýõõ ôþñðòûõýýûõ ñðùòû ñþõððýõýû MOV EBX, 0014h //ðúñøüðûüýþõ ÷ýð÷õýøõ, ÿðø ôþñðòûõýøÿõ. MOV ECX, 4 //ðöôûù öòõò úþôøðóõòñÿ 4-üÿ ñðùòðüø. MOV EDX, OFFSET Color10 //ðóðó÷úð úþôð þòþñððöõýøÿ ýóöýþóþ öòõòð. ADC DL, 01h //ðöôûù ðð÷ ôþñðòûÿòü ÿþ 1 ñðùòó, ò ýþòûù. MOV EDX, OFFSET PlusClr //þñðòûÿõüûù ñðùò ú úþôó öòõòð. INC EDX //ðøððñòøòü ÷ðóðóöõýýûù ñðùò ú þñòðûüýûü. AAA //ñ¸, óöõ þÿðõôõûõýþ úðú ýðôþ. AAD //þúð ýõ ÿðõôÿðøýøüðòü ýõ úðúøõ ÿþÿûòþú ú ø÷úÿòøþ. CBW //ñúõôõýøòü ðõóøñòðû öòõòð ò þôýþ ÷ýð÷õýøõ. LOOPZ SetClr10 //øúûø÷õñúøù ÿõðõõþô ÿþ ðôðõñó. SetClr11: MOV ECX, 16 //õñü öøúû, ýðôþ ÿþòòþðøòü 16 ðð÷. DAA //ðýõõ ôþñðòûõýýûõ ñðùòû ñþõððýõýû MOV EBX, 0014h //ðúñøüðûüýþõ ÷ýð÷õýøõ, ÿðø ôþñðòûõýøÿõ. MOV ECX, 4 //ðöôûù öòõò úþôøðóõòñÿ 4-üÿ ñðùòðüø. MOV EDX, OFFSET Color11 //ðóðó÷úð úþôð þòþñððöõýøÿ ýóöýþóþ öòõòð. ADC DL, 01h //ðöôûù ðð÷ ôþñðòûÿòü ÿþ 1 ñðùòó, ò ýþòûù. MOV EDX, OFFSET PlusClr //þñðòûÿõüûù ñðùò ú úþôó öòõòð. INC EDX //ðøððñòøòü ÷ðóðóöõýýûù ñðùò ú þñòðûüýûü. AAA //ñ¸, óöõ þÿðõôõûõýþ úðú ýðôþ. AAD //þúð ýõ ÿðõôÿðøýøüðòü ýõ úðúøõ ÿþÿûòþú ú ø÷úÿòøþ. CBW //ñúõôõýøòü ðõóøñòðû öòõòð ò þôýþ ÷ýð÷õýøõ. LOOPZ SetClr11 //øúûø÷õñúøù ÿõðõõþô ÿþ ðôðõñó. SetClr12: MOV ECX, 16 //õñü öøúû, ýðôþ ÿþòòþðøòü 16 ðð÷. DAA //ðýõõ ôþñðòûõýýûõ ñðùòû ñþõððýõýû MOV EBX, 0014h //ðúñøüðûüýþõ ÷ýð÷õýøõ, ÿðø ôþñðòûõýøÿõ. MOV ECX, 4 //ðöôûù öòõò úþôøðóõòñÿ 4-üÿ ñðùòðüø. MOV EDX, OFFSET Color12 //ðóðó÷úð úþôð þòþñððöõýøÿ ýóöýþóþ öòõòð. ADC DL, 01h //ðöôûù ðð÷ ôþñðòûÿòü ÿþ 1 ñðùòó, ò ýþòûù. MOV EDX, OFFSET PlusClr //þñðòûÿõüûù ñðùò ú úþôó öòõòð. INC EDX //ðøððñòøòü ÷ðóðóöõýýûù ñðùò ú þñòðûüýûü. AAA //ñ¸, óöõ þÿðõôõûõýþ úðú ýðôþ. AAD //þúð ýõ ÿðõôÿðøýøüðòü ýõ úðúøõ ÿþÿûòþú ú ø÷úÿòøþ. CBW //ñúõôõýøòü ðõóøñòðû öòõòð ò þôýþ ÷ýð÷õýøõ. LOOPZ SetClr12 //øúûø÷õñúøù ÿõðõõþô ÿþ ðôðõñó. SetClr13: MOV ECX, 16 //õñü öøúû, ýðôþ ÿþòòþðøòü 16 ðð÷. DAA //ðýõõ ôþñðòûõýýûõ ñðùòû ñþõððýõýû MOV EBX, 0014h //ðúñøüðûüýþõ ÷ýð÷õýøõ, ÿðø ôþñðòûõýøÿõ. MOV ECX, 4 //ðöôûù öòõò úþôøðóõòñÿ 4-üÿ ñðùòðüø. MOV EDX, OFFSET Color13 //ðóðó÷úð úþôð þòþñððöõýøÿ ýóöýþóþ öòõòð. ADC DL, 01h //ðöôûù ðð÷ ôþñðòûÿòü ÿþ 1 ñðùòó, ò ýþòûù. MOV EDX, OFFSET PlusClr //þñðòûÿõüûù ñðùò ú úþôó öòõòð. INC EDX //ðøððñòøòü ÷ðóðóöõýýûù ñðùò ú þñòðûüýûü. AAA //ñ¸, óöõ þÿðõôõûõýþ úðú ýðôþ. AAD //þúð ýõ ÿðõôÿðøýøüðòü ýõ úðúøõ ÿþÿûòþú ú ø÷úÿòøþ. CBW //ñúõôõýøòü ðõóøñòðû öòõòð ò þôýþ ÷ýð÷õýøõ. LOOPZ SetClr13 //øúûø÷õñúøù ÿõðõõþô ÿþ ðôðõñó. SetClr14: DAA //ðýõõ ôþñðòûõýýûõ ñðùòû ñþõððýõýû MOV EBX, 0014h //ðúñøüðûüýþõ ÷ýð÷õýøõ, ÿðø ôþñðòûõýøÿõ. MOV ECX, 4 //ðöôûù öòõò úþôøðóõòñÿ 4-üÿ ñðùòðüø. MOV EDX, OFFSET Color14 //ðóðó÷úð úþôð þòþñððöõýøÿ ýóöýþóþ öòõòð. ADC DL, 01h //ðöôûù ðð÷ ôþñðòûÿòü ÿþ 1 ñðùòó, ò ýþòûù. MOV EDX, OFFSET PlusClr //þñðòûÿõüûù ñðùò ú úþôó öòõòð. INC EDX //ðøððñòøòü ÷ðóðóöõýýûù ñðùò ú þñòðûüýûü. AAA //ñ¸, óöõ þÿðõôõûõýþ úðú ýðôþ. AAD //þúð ýõ ÿðõôÿðøýøüðòü ýõ úðúøõ ÿþÿûòþú ú ø÷úÿòøþ. CBW //ñúõôõýøòü ðõóøñòðû öòõòð ò þôýþ ÷ýð÷õýøõ. LOOPZ SetClr14 //øúûø÷õñúøù ÿõðõõþô ÿþ ðôðõñó. SetClr15: DAA //ðýõõ ôþñðòûõýýûõ ñðùòû ñþõððýõýû MOV EBX, 0014h //ðúñøüðûüýþõ ÷ýð÷õýøõ, ÿðø ôþñðòûõýøÿõ. MOV ECX, 4 //ðöôûù öòõò úþôøðóõòñÿ 4-üÿ ñðùòðüø. MOV EDX, OFFSET Color15 //ðóðó÷úð úþôð þòþñððöõýøÿ ýóöýþóþ öòõòð. ADC DL, 01h //ðöôûù ðð÷ ôþñðòûÿòü ÿþ 1 ñðùòó, ò ýþòûù. MOV EDX, OFFSET PlusClr //þñðòûÿõüûù ñðùò ú úþôó öòõòð. INC EDX //ðøððñòøòü ÷ðóðóöõýýûù ñðùò ú þñòðûüýûü. AAA //ñ¸, óöõ þÿðõôõûõýþ úðú ýðôþ. AAD //þúð ýõ ÿðõôÿðøýøüðòü ýõ úðúøõ ÿþÿûòþú ú ø÷úÿòøþ. CBW //ñúõôõýøòü ðõóøñòðû öòõòð ò þôýþ ÷ýð÷õýøõ. LOOPZ SetClr15 //øúûø÷õñúøù ÿõðõõþô ÿþ ðôðõñó. //ðúûþ÷øòü ò öøúûõ 16 ÿþ 16 ððòýþ 256. LODSB //øúûø÷õñúøù ÿõðõõþô ÿþ ðôðõñó MOV CH, 255 //þûó÷øûþñü ðð÷ûø÷ýûõ 256 öòõòþò. CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //ðôøúñøðþòðòü ò ÿðüÿòø ÿðððüõòðû ÿþûó÷õýýûõ //òõòþò. //ðóðó÷øòü ÿðððüõòðû 256-òø ÿþûó÷õýýûõ öòõòþò ò //þýòðþû¸ð òøôõþðôðÿòõðð. MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 236 //N AL,EDX //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 2 //õóøñòð üðñúø öòõòð db 236 //N AL,EDX //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ MOV AL, 0 //õóøñòð Öòõò db 236 //N AL,EDX //ñòðýþòúð öòõòð //õÿþñðõôñòòõýýðÿ ÷ðóðó÷úð ÿðððüõòðð, úðöôþóþ //÷ 256-òø þñýþòýûõ öòõòþò ò óñòðþùñòòþ //þýòðþû¸ðð òøôõþðôðÿòõðð. Çôõñü ôþñòðòþ÷ýþ, //þñÿþûü÷þòðòñÿ 8-üø ðð÷ðÿôýûü ñøóýðûþü, úþòþðûù //úð÷ûòðõò ýð ÿõðõôð÷ó úðöôþóþ þòôõûüýþóþ ñðùòð, // ýõ öòõòð. MOV ECX, 00FFh //ñõóþ öòõòþò ôþûöýþ ñûòü 256 IN AL, 10h // Áðùòþòûù ÿðøýöõÿ: IN AL, 10h // ÿþ 8 IN AL, 10h // IN AL, 10h // IN AL, 10h // IN AL, 10h // IN AL, 10h // IN AL, 10h // CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //ðôøúñøðþòðòü ò ÿðüÿòø //ðþ÷øòðýýûõ ÿðððüõòðû //õðõõþô ú þúþý÷ðýøþ óñòðýþòþ÷ýþù ÿðþöõôóðû JMP ScNxt GraphSc5: //ñòðýþòúð òøôõþñòððýøöû. //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð. MOV EAX, 0B800h MOV DS,EAX //ýøöøðûø÷ðöøÿ óñòðýþòúø ýþòþù òøôõþñòððýøöû. //òþñû õ¸ øýøöøûø÷øðþòðòü, ýóöýþ óñððòü ñ //øñÿûõÿ þòþñððöõýøõ ñòððþù ñòððýøöû. Cistka: MOV ECX, 50 //þòòþðøòü 50 ðð÷ ÿþôðÿô. MOV EDI, 0001h //ð÷ðòü ñ ÿõðòþóþ ÿøúñõûð. MOV ESP, 80H //þýõö ÷ðóðó÷ðõüþóþ úþôð. MOV ESI, SpeedStr //ðóðó÷úð úþôð ÷øñòÿùõù ñòðþúø. LOOPZ Cistka //õðõõþô ýð òûÿþûýõýøõ öøúûð. MOV CH, 80 //ðúñ. ÷øñûþ ñøüòþûþò ÿþ óþðø÷þýòðûø. MOV ECX, 50 //ðúñ. ÷øñûþ ñøüòþûþò ÿþ òõðòøúðûø. CLD //øúñøðþòðòü óñòðýþòúó òÿõð¸ô REP MOVSB //aüa ôøúcaöøÿ //eÿõðü øñÿþûýøòü úþô þ÷øñòøòõûüýþù ñòðþúø, //ðú úþô òõûð øñÿþûýÿõüþù ÿðþóððüüû, ÷òþñû //ðôøúñøðþòðòü øýøöøðûø÷ðöøþ ýþòþù ñòððýøöû. SpeedStr dd 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 dd 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 //peedStrLen = $ - SpeedStr //õðõõþô ú þúþý÷ðýøþ óñòðýþòþ÷ýþù ÿðþöõôóðû JMP ScNxt GraphSc6: //ýøöøðûø÷ðöøÿ øûø ÿðþúðóòúð þúýð òòõðõ. //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð. MOV EAX, 0B800h MOV DS,EAX //ðþúðó÷øòðýøõ ø÷þñððöõýøÿ ò óððôø÷õñúþü ðõöøüõ //òõðõ, þñóùõñòòûÿõòñÿ ñüõùõýøõü ÿõðòþóþ ÿøúñõûð //ð ôøñÿûõõ ò þòðøöðòõûüýóþ ÿþ÷øöøþ. Ýòþ þôýð ø÷ //ðüûõ ñûþöýûõ þÿõððöøù. Âõôü, ñðüþÿðþø÷òþûüýþ ÿþ //øñÿûõþ üþöýþ ÿõðõüõùðòüñÿ òþûüúþ òýø÷. MOV EDI, 0000h //ñòðýþòøòü ýþûõòþõ ÷ýð÷õýøõ //ð÷ðûüýþóþ üõñòð ÿþûþöõýøÿ //óðþñð ýð ôøñÿûõõ. PUSH DS //ðñòðþøòü ES ýð ñõóüõýò POP ES //ûþúð ôðýýûõ. MOV ECX, 0280h //40 - üðúñøüðûüýþõ ÷øñûþ ÿøúñõûþò //þ óþðø÷þýòðûø ò óððôø÷õñúþü ðõöøüõ. AAS //ñòðýþòøòü ôûðó óôðûõýøÿ øñõþôýþóþ ÷øñûð ÿøúñõûþò. SUB EDI, 99h //ôðûÿòü ø÷ ðõóøñòððEDI øñõþôýþõ ÷ýð÷õýøõ. DAS //ñòðýþòøòü ôûðó ôûÿ óôðûõýøÿ ôøúñøðþòðýýþóþ ÷ýð÷õýøÿ. SBB EDI, 99h //ôðûÿòü ø÷ ðõóøñòððEDI ôøúñøðþòðýýþõ //ýð÷õýøõ ÷øñûð òûòõôõýýûõ ÿøúñõûþò. SBB ECX, 0560h //ôðûøòü òõúóùøõ ÷ýð÷õýøõ ø ø÷ ôûðóðECX. //ýþ ôþûöýþ ÿðõòûøðòü ÷øñûþ 640. 0480 = 1280. DEC EDI //ðôøúñøðþòðòü ÿþñûõ óôðûõýøÿ, ò þñþøõ DEC ECX //õóøñòððõEDI øECX þòðøöðòõûüýþõ ÿðøððùõýøõ. DAS //þòòþðýþ óñòðýþòøòü ôûðó óñûòðýøÿ ÿøúñõûþò, ôûÿ //þòòõðöôõýøÿ ÷ðúþýýþñòø ýòþù þÿõððöøø. AAS //õúóùðÿ þÿõððöøÿ ÷ðòõðøõýð. Ìþöýþ ÿðøñòóÿðòü ú ôðóóþù. NEG EDI //þûó÷øòü úþô ôþÿþûýøòõûüýþóþ ÷ýð÷õýøÿ NEG ECX //ûÿ þñþøõ ðõóøñòðþòEDI øECX. //ðôøúñøðþòðòü ðõóøñòðû ôûÿ òõôõýøÿ ôðûüýõùøõóþ ÿðþöõññð. //õóøñòðECX ÷ðýÿòü, a ðõóøñòðEDI ýðþñþðþò þñòþñþôøòü. PUSH ECX POP EDI CLD //õÿõðü, ÿðþöõññ ôòøöõýøÿ òòõðõ óöõ ñòðû //õþñððòøüûü. REP MOVSB //ýøöøðûø÷ðöøÿ þòþñððöõýøÿ ÿðþúðóòúø òòõðõ ýð ôøñÿûõõ. //õðõõþô ú þúþý÷ðýøþ óñòðýþòþ÷ýþù ÿðþöõôóðû JMP ScNxt GraphSc7: //ýøöøðûø÷ðöøÿ øûø ÿðþúðóòúð þúýð òýø÷. //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð. MOV EAX, 0B800h MOV DS,EAX //ðþúðó÷øòðýøõ ø÷þñððöõýøÿ ò óððôø÷õñúþü ðõöøüõ //ýø÷, þñóùõñòòûÿõòñÿ ñüõùõýøõü ÿþñûõôýõóþ ÿøúñõûð //ð ôøñÿûõõ ò ñþûõõ ýøöýõþ ÿþ÷øöøþ. Ïþ ÿðøýöõÿó, //òð þÿõððöøÿ, ðýðûþóø÷ýð ÿðõôûôóùõù ò úþòþðþù //õðõüõùõýøõ þñóùõñòòûÿõòñÿ, ýðþñþðþò òòõðõ. MOV EDI, 9999h //üõùõýøõ ú úþýöó ýúððýð. PUSH DS //ðñòðþøòü ES ýð ñõóüõýò POP ES //ûþúð ôðýýûõ. MOV ECX, 0280h //40 - üðúñøüðûüýþõ ÷øñûþ ÿøúñõûþò //þ óþðø÷þýòðûø ò óððôø÷õñúþü ðõöøüõ. AAA //ñòðýþòøòü ôûðó ÿþÿþûýõýøÿ øñõþôýþóþ ÷øñûð ÿøúñõûþò. ADD EDI, 99h //ðøñðòûÿòü ú ðõóøñòðóEDI ýþòþõ ÷ýð÷õýøõ. DAA //ñòðýþòøòü ôûðó ôûÿ óôðûõýøÿ ôøúñøðþòðýýþóþ ÷ýð÷õýøÿ. ADC EDI, 99h //ðøñðòûÿòü ú ðõóøñòðóEDI ôøúñøðþòðýýþõ //ýð÷õýøõ ÷øñûð òûòõôõýýûõ ÿøúñõûþò. ADC ECX, 0560h //ðøñðòûÿòü ú òõúóùøüó ÷ýð÷õýøþ ôûðóðECX. //ýþ ôþûöýþ ÿðõòûøðòü ÷øñûþ 640. 0480 = 1280. INC EDI //ðôøúñøðþòðòü ÿþñûõ ÿþÿþûýõýøÿ, ò þñþøõ INC ECX //õóøñòððõEDI øECX ÿðøððùõýøõ. DAS //þòòþðýþ óñòðýþòøòü ôûðó ÿþÿþûýõýøÿ ÿøúñõûþò. AAA //õúóùðÿ þÿõððöøÿ ÷ðòõðøõýð. Ìþöýþ ÿðøñòóÿðòü ú ôðóóþù. NOT EDI //þûó÷øòü úþô ôþÿþûýøòõûüýþóþ ÷ýð÷õýøÿ NOT ECX //ûÿ þñþøõ ðõóøñòðþòEDI øECX. //ðôøúñøðþòðòü ðõóøñòðû ôûÿ òõôõýøÿ ôðûüýõùøõóþ ÿðþöõññð. //õóøñòðECX ÷ðýÿòü, a ðõóøñòðEDI ýðþñþðþò þñòþñþôøòü. PUSH ECX POP EDI CLD //õÿõðü, ÿðþöõññ ôòøöõýøÿ òòõðõ óöõ ñòðû //õþñððòøüûü. REP MOVSB //ýøöøðûø÷ðöøÿ þòþñððöõýøÿ ÿðþúðóòúø òòõðõ ýð ôøñÿûõõ. //õðõõþô ú þúþý÷ðýøþ óñòðýþòþ÷ýþù ÿðþöõôóðû JMP ScNxt GraphSc8: //òõýøõ ñøüòþûð ø õóþ ðòðøñóòð ò ÿþ÷øöøø úóðñþðð. //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð. MOV EAX, 0B800h MOV DS,EAX //ñòðýþòøòü ðõöøü ÷ðÿøñø 0 MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EBX, 0000h //ð÷ðòü ñ ñðùòð 0 ÿþ ASCII MOV ECX, 80 * 175 //ñùøõ ÷øñûþ ÷ðôõùñòòþòðýýûõ ñðùòþò //õóøñòððöøÿ öòõòð òûòþôøüþóþ ñøüòþûð. MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 2 //õóøñòð üðñúø öòõòð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ //ûòõñòø ñðùò ÿøúñõûþò. //OV BYTE PTR ES:[BX], 0FFh INC EBX // ñûõôóþùõüó ñðùòó //õðõõþô ú þúþý÷ðýøþ óñòðýþòþ÷ýþù ÿðþöõôóðû JMP ScNxt GraphSc9: //ðÿøñü ñøüòþûð ø õóþ ðòðøñóòð ò ÿþ÷øöøþ úóðñþðð. //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð. MOV EAX, 0B800h MOV DS,EAX //ñòðýþòøòü ðõöøü ÷ðÿøñø 0 MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 236 //N AL,EDX //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 236 //N AL,EDX //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EBX, 0000h //ð÷ðòü ñ ñðùòð 0 ÿþ ASCII MOV ECX, 80 * 175 //ñùøõ ÷øñûþ ÷ðôõùñòòþòðýýûõ ñðùòþò //ñòðýþòúð ÿþûýþù üðñúø öòõòð. MOV EDX, 3C4h //ôðõñýûù ðõóøñòð ñõúòõýñõðð MOV AL, 2 //õóøñòð üðñúø öòõòð db 236 //N AL,EDX //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ //õúòõýñõðð MOV AL, 0Fh //ñõ ñøòû (ÿðúþ ñõûûù) db 236 //N AL,EDX //ñòðýþòúð üðñúø öòõòð //ñòðýþòúð üðñúø ñøòþò. MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 8 //õóøñòð üðñúø ñøòþò db 236 //N AL,EDX //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ MOV AL, 0FFh //ñõ ÿøúñõûû ñðùòþò ðð÷üðñúøðþòðòü db 236 //N AL,EDX //ñòðýþòúð üðñúø ñøòþò //ñòðýþòúð öòõòð. MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 2 //õóøñòð üðñúø öòõòð db 236 //N AL,EDX //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ MOV AL, 0 //õóøñòð öòõòð db 236 //N AL,EDX //ñòðýþòúð öòõòð //ûòõñòø ñðùò ÿøúñõûþò. //OV BYTE PTR ES:[BX], 0 INC EBX // ñûõôóþùõüó ñðùòó //õðõõþô ú þúþý÷ðýøþ óñòðýþòþ÷ýþù ÿðþöõôóðû JMP ScNxt GraphSc10: //ðÿøñü ñøüòþûð, ñõ÷ ðòðøñóòð ò ÿþ÷øöøþ úóðñþðð. //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð. MOV EAX, 0B800h MOV DS,EAX //ñòðýþòøòü ðõöøü ÷ðÿøñø 0 MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 236 //N AL,EDX //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 236 //N AL,EDX //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EBX, 0000h //ð÷ðòü ñ ñðùòð 0 ÿþ ASCII MOV ECX, 80 * 175 //ñùøõ ÷øñûþ ÷ðôõùñòòþòðýýûõ ñðùòþò //ñòðýþòúð üðñúø ñøòþò. MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 8 //õóøñòð üðñúø ñøòþò db 236 //N AL,EDX //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ MOV AL, 0FFh //ñõ ÿøúñõûû ñðùòþò ðð÷üðñúøðþòðòü db 236 //N AL,EDX //ñòðýþòúð üðñúø ñøòþò //ûòõñòø ñðùò ÿøúñõûþò. //OV BYTE PTR ES:[BX], 0 INC EBX // ñûõôóþùõüó ñðùòó //õðõõþô ú þúþý÷ðýøþ óñòðýþòþ÷ýþù ÿðþöõôóðû JMP ScNxt GraphSc11: //ððõ÷õðòýðÿ ôóýúöøÿ ôûÿ ððñþòû ñ òøôõþôððùòõððüø, //ððôø÷õñúøõ þÿõððöøþýýûõ ñøñòõü, òøÿð Windows, Linix, //S/2 ø Unix ýõñþòüõñòøüûõ ñþ ñòðýôððòýûüø òøôõþ //ðððüõòððüø BIOS ø DOS. //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð. MOV EAX, 0B800h MOV DS,EAX //ððõ÷õðòøðþòðýýûù ñóôõð ôûÿ ñøñòõüýþù ÿðþóððüüû //ûÿþûýÿþùõù ôóýúöøø, ýõ ÿðõôóñüþòðõýýþù òøôõþ //ððùòõðþü ROM BIOS RezerfSub: db 96 Dup (?) //õðõõþô ú þúþý÷ðýøþ óñòðýþòþ÷ýþù ÿðþöõôóðû JMP ScNxt GraphSc12: //ðÿøñü ÿøúñõûð ò òøôõþñóôõð. //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð. MOV EAX, 0B800h MOV DS,EAX //ñòðýþòøòü ðõöøü ÷ðÿøñø 0 MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EBX, 0000h //ð÷ðòü ñ ñðùòð 0 ÿþ ASCII MOV ECX, 0002h //òð ñðùòð. Îôøý úþôøðóõò ñðüþ //òþñððöõýøõ, ð ôðóóþù õóþ öòõò. //õóøñòððöøÿ öòõòð òûòþôøüþóþ ñøüòþûð. MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 2 //õóøñòð üðñúø öòõòð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ //ûòõñòø ñðùò ÿøúñõûþò ýð ôøñÿûõù. //OV BYTE PTR ES:[BX], 00Fh INC EBX // ñûõôóþùõüó ñðùòó CLD //þôóþòþòøòüñÿ ú òûòþôó REP MOVSB //ûòþô ñðùòð ø÷ ñóôõðð ýð ôøñÿûõù. //õðõõþô ú þúþý÷ðýøþ óñòðýþòþ÷ýþù ÿðþöõôóðû JMP ScNxt GraphSc13: //òõýøõ ÿøúñõûð ø÷ òøôõþñóôõðð. //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð. MOV EAX, 0B800h MOV DS,EAX //ñòðýþòøòü ðõöøü ÷ðÿøñø 0 MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 236 //N AL,EDX //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 236 //N AL,EDX //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EBX, 0000h //ð÷ðòü ñ ñðùòð 0 ÿþ ASCII MOV ECX, 0001h //ôøý ñðùò //õóøñòððöøÿ öòõòð òûòþôøüþóþ ñøüòþûð. MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 2 //õóøñòð üðñúø öòõòð db 236 //N AL,EDX //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ //ðýõñòø ñðùò ÿøúñõûþò ò ñóôõð þÿõððòøòýþù ÿðüÿòø. //OV BYTE PTR ES:[BX], 00Fh INC EBX // ñûõôóþùõüó ñðùòó CLD //øúñøðþòðòü òÿõð¸ô. REP STOSB //øúñðöøÿ ñðùòð ò ÿðüÿòø. //õðõõþô ú þúþý÷ðýøþ óñòðýþòþ÷ýþù ÿðþöõôóðû JMP ScNxt GraphSc14: //ðÿøñü ñøüòþûð ò ðõöøüõ òõûõòðùÿð. //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð. MOV EAX, 0B800h MOV DS,EAX //ñòðýþòøòü ðõöøü ÷ðÿøñø 0 MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 236 //N AL,EDX //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð PUSH DS //ðñòðþøòü ñõóüõýòýûõ ðõóøñòðû POP ES //ð þñûðñòü ôðýýûõ. INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 236 //N AL,EDX //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EBX, 0000h //ð÷ðòü ñ ñðùòð 0 ÿþ ASCII MOV ECX, 0002h //òð ñðùòð. Îôøý úþôøðóõò ñðüþ //òþñððöõýøõ, ð ôðóóþù õóþ öòõò. //õóøñòððöøÿ öòõòð òûòþôøüþóþ ñøüòþûð. MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 2 //õóøñòð üðñúø öòõòð db 236 //N AL,EDX //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ //ûòõñòø ñðùò ÿøúñõûþò ýð ôøñÿûõù. MOV EDI, 0000h //ýð÷õýøÿ þòþñððöõýøÿ ýð MOV ESI, 0000h //øñÿûõõ ÿðþø÷òþûüýû. //OV BYTE PTR ES:[BX], 00Fh INC EBX // ñûõôóþùõüó ñðùòó CLD //þôóþòþòøòüñÿ ú òûòþôó REP MOVSB //ûòþô 2-õ ñðùòð ýð ôøñÿûõù. //õðõõþô ú þúþý÷ðýøþ óñòðýþòþ÷ýþù ÿðþöõôóðû JMP ScNxt GraphSc15: //þûó÷õýøõ øýôþðüðöøø, þ òõúóùõü ðõöøüõ òøôõþúþýòðþû¸ðð. //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð. MOV EAX, 0B800h MOV DS,EAX //øñòõüýðÿ ÿþôðþóððüüð øýøöøøðóþùðÿ ððñþòó òòþôð/òûòþôð //ñòðþùñòòð ððñþòû òøôõþÿûðòû (óððôø÷õñúþóþ ðôðÿòõðð). //ðþóððüüð ôþñòóÿð ú òøôõþðôðÿòõðó, ýðÿøñðýýðÿ ÿþ //ðþöõôóðõ IOS, ÿþôþñýðÿ òþù, úþòþððÿ ýðõþôøòñÿ ò //øúðþñõõüõ úþýòðþû¸ðð òøôõþÿûðòû, ýð üðòõðøýñúþù ÿûðòõ. CLI //ðÿðõòøòü ÿðõðûòðýøÿ. PUSHF //oxpaýøòü ôûaóø ôûÿ úþüðýôû IRET. MOV AH, 10h //ýð÷ðûð ÿõðõùô¸ü ò ôððùòõð 10h MOV EBX, 00h //õúòþð 10h õù¸ ýõ þÿðõôõû¸ý MOV ECX, 0002 //ideoVectLen MOV EDX, VideoVect //ðóðó÷øòü ñûþú ôûÿ òõúòþðð MOV EDX, 0010h //ðÿþûýøòü ñûþú õóþ óúð÷ðýøõü CLD //ñþ÷ýð÷øòü òõúòþð REP STOSB //ðòõðñþòðòü òõúòþð 10h ò ÿðüÿòø //ðþöõôóðð IOS øýøöøðûø÷ðöøø ÿðþóððüüû ÿðõðûòðýøÿ 10Í PUSH DS //ode begin the execute program PUSH EAX PUSH ECX MOV EAX,0040H MOV DS,EAX MOV AL,10H MOV AL,10H MOV AL,10H OUT 20,AL OUT 225,AL IN AL,20 OUT 225,AL MOV AH,AL OR AL,AL JZ VdSb1 MOV AL,10h OUT 160,AL MOV AL,10h OUT 225,AL MOV AL,10h OUT 245,AL IN AL,160 OUT 225,AL MOV CL,AL OR AL,AL JZ VdSb2 IN AL,161 OUT 225,AL OR AL,CL OUT 161,AL OUT 225,AL MOV AL,20 OUT 160,AL JB VdSb4 VdSb2: IN AL,21 OR AL,AH OUT 225,AL AND AL,251 OUT 21,AL IN AL,10h VdSb4: MOV AL,20 OUT 225,AL MOV EAX,20 OUT 20,AL JB VdSb3 VdSb1: MOV EAX, 0000h VdSb3: MOV AH, 0000h IN AL, 10h POP ECX POP EAX POP EDX //ðôøúñøðþòðòü ÿðþ÷øòðýýûõ ôðýýûõ þ //õúóùõü òøôõþðõöøüõ, ò ñóôõðõ ÿðüÿòø //ûÿ ôðûüýõùøõóþ ÷òõýøÿ ø øñÿþûü÷þòðýøÿ XCHG AL, DH //òÿ÷ðòü ðõóøñòð AL ñ //õóøñòðþü ôðýýûõ DH. SAHF //ðóðó÷úð AH ò üûðôøøù ñðùò. INC DH //ðýýûõ ÷ðôõùñòòþòðýû // óúð÷ðýýþü ðõóøñòðõ. XOR DH, BH //õóøñòð ýðñòðþõý ýð //ðñþòó ñ ôðýýûüø. PUSH DS //ðñòðþøòü ñõóüõýòýûù POP ES //õóøñòð ýð þñûðñòü ôðýýûõ. MOV ECX, 128 //ñùøù ðð÷üõð úþôð ôðýýûõ //õ ôþûöõý ÿðõòûøðòü 128 ñðùò. MOV EBX, 1 //øñúðøÿòþð ÷ðôõùñòòþòðý CLD //ðÿþûýÿòü òÿõð¸ô REP STOSB //ñ¸, ôðýýûõ þ òõúóùõü òøôõþðõöøüõ //þüõùõýû ò ñóôõð ÿðüÿòø, ôûÿ //ðûüýõùøõóþ øñÿþûü÷þòðýøÿ. STC //öøôðýøõ òûÿþûýõýøÿ ýþòþù þÿõððöøø. //õðõõþô ú þúþý÷ðýøþ óñòðýþòþ÷ýþù ÿðþöõôóðû JMP ScNxt VideoVect dw 0 //òóõñðùòýðÿ ÿ÷õùúð ôûÿ ôøñúðøÿòþðð. //ideoVectLen = $ - VideoVect GraphSc16: //ñòðýþòúð ðõóøñòðð öòõòð ôþýð ø ñøüòþûþò ýð ôøñÿûõõ. //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð. MOV EAX, 0B800h MOV DS,EAX //ñòðýþòøòü ðõöøü ÷ðÿøñø 0 MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 236 //N AL,EDX //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð PUSH DS //ðñòðþøòü ñõóüõýòýûõ ðõóøñòðû POP ES //ð þñûðñòü ôðýýûõ. INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 236 //N AL,EDX //ñòðýþòúð ðõöøüð ÷ðÿøñø //ðõôòððøòõûüýðÿ þ÷øñòúð ñðùòð ø÷þñððöõýøÿ. //ñòðýþòúð ÿþûýþù üðñúø öòõòð. MOV EDX, 3C4h //ôðõñýûù ðõóøñòð ñõúòõýñõðð MOV AL, 2 //õóøñòð üðñúø öòõòð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ //õúòõýñõðð MOV AL, 0Fh //ñõ ñøòû (ÿðúþ ñõûûù) db 238 //UT EDX, AL //ñòðýþòúð üðñúø öòõòð //ñòðýþòúð üðñúø ñøòþò. MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 8 //õóøñòð üðñúø ñøòþò db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ MOV AL, 0FFh //ñõ ÿøúñõûû ñðùòþò ðð÷üðñúøðþòðòü db 238 //UT EDX, AL //ñòðýþòúð üðñúø ñøòþò //÷øñòøòü ñðùò (òñõ ÿøúñõûû ñðùòð) //OV BYTE PTR ES:[BX], 0 //ñòðýþòúð öòõòð. MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 2 //õóøñòð üðñúø öòõòð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ MOV EAX,EDX //òõò (ÿþúð, ýõ þÿðõôõû¸ý) db 238 //UT EDX, AL //ñòðýþòúð öòõòð //õóøñòððöøÿ öòõòð òûòþôøüþóþ ñøüòþûð. MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 2 //õóøñòð üðñúø öòõòð db 236 //N AL,EDX //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ //ûòõñòø ñðùò ÿøúñõûþò ýð ôøñÿûõù. MOV EDI, 0000h //ýð÷õýøÿ þòþñððöõýøÿ ýð MOV ESI, 0000h //øñÿûõõ ÿðþø÷òþûüýû. //OV BYTE PTR ES:[BX], 00Fh INC EBX // ñûõôóþùõüó ñðùòó CLD //ðôøúñøðþòðòü ÿþûó÷õýýûõ ÿðððüõòðû REP MOVSB //ðÿøñü ýòøõ ÿðððüõòðþò ò ÿðüÿòü //õðõõþô ú þúþý÷ðýøþ óñòðýþòþ÷ýþù ÿðþöõôóðû JMP ScNxt GraphSc17: //ðóðó÷úð øðøôòð ÿþûü÷þòðòõûÿ. //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð. MOV EAX, 0B800h MOV DS,EAX //ðóðó÷øòü ÿðððüõòðû ýóöýþóþ øðøôòð ÿþûü÷þòðòõûÿ 8 x 14 MOV BH, 14 //ûñþòð 14 òþ÷õú MOV BL, 0 //ûþú 0 ÷ýðúþóõýõððòþðð MOV ECX, 256 //øñûþ ñøüòþûþò ò òðñûøöõ MOV EDX, 00h //þô ÿõðòþóþ ñøüòþûð REP STOSB //ðôøúñøðþòðòü ýòø ÿðððüõòðû ò ÿðüÿòø, //ûÿ þòþñððöõýøÿ ñøüòþûþò ýð ôøñÿûõõ //ñòðýþòúð ÿðððüõòðþò òõúñòòþóþ øðøôòð 8 x 14. MOV AH, 11h //óýúöøÿ 11h - øðøôò 8 x 14 MOV AL, 1 //ðóðó÷úð üðòðøöû ôûÿ þôýþóþ ñøüòþûð MOV CH, 0 //õðòûù ñøüòþû òðñûøöû MOV CL, 255 //þñûõôýøù ñøüòþû òðñûøöû MOV DH, 1 //þ øøðøýõ þòþñððöõýøÿ MOV DL, 14 //þ òûñþòõ þòþñððöõýøÿ PUSH DS //ðýÿòûù ðõóøñòð POP ES //òþñþôýûù ðõóøñòð ////MOV ECX, FontLoadLen //ð÷üõð ÷ðóðóöðõüþóþ ñûþúð. ////LEA EDX, FontLoad //ðóðó÷úð üðòðøö ÷ðóðóöðõüþóþ //ðøôòð ôûÿ úðöôþóþ ø÷ 256-òø //øüòþûþò. MOV DL, 14 //þôòòõðôøòü ôõûõýøõ ñûþúð ýð 14 //DIV EDX //õûõýøõ ÿþ 14 AAD //ñòðýþòøòüñÿ ýð ôþñòøóýóòþü. SHR DL, 1 //ôøý ñôòøó òÿððòþ ÿðø ôøúñðöøø //ýøüþóþ ñøüòþûð ýð ôøñÿûõõ. AAA //ðøýÿòü ñôòøó ò ðõóøñòð. //ðþòõðúð óñòðýþòûõýýûõ ÿðððüõòðþò ýóöýþóþ øðøôòð //þûü÷þòðòõûÿ 8 x 14 MOV BH, 14 //ûñþòð 14 òþ÷õú MOV EBX, 1 // ñðùò (8 ñøò) ÿþ øøðøýõ MOV BL, 0 //ûþú 0 ÷ýðúþóõýõððòþðð MOV ECX, 256 //øñûþ ñøüòþûþò ò òðñûøöõ MOV EDX, 00h //þô ÿõðòþóþ ñøüòþûð CLD //ððòýøòðòü òÿõð¸ô REP CMPSB //ððòýõýøõ //ðôøúñøðóõü þòþñððöõýøõ ýòþóþ ýð ýúððýõ //þüÿüþòõðð (ôøñÿûõõ) ñ ÿþüþùø ÷ðóðóöõýýþù //ûÿ ýõóþ üðòðøöû, ÿþ ñþþòòõòñòòóþùõù ÿðþöõôóðõ //ûÿþûýõýøÿ úþüðýô IOS, ñõ÷ ÷ðÿðþñð ÿðõðûòðýøù BIOS ø DOS ADC DL, 1 //ðøñðòøòü ÿðòõýöøðûüýþ, ñóùõñòòóþùøù //ôøý ñðùò. SAR DL, 1 //ôòøó òÿððòþ ýð ÿðþø÷òþûüýþõ //þûø÷õñòòþ ðð÷ðÿôþò. AAA //þòòõðôøòü þÿõððöøþ. CLD //ðôøúñøðþòðòü óþòþòýþñòü òûòþôð. MOV ESI, 0 //þô ASCII ýõ þÿðõôõû¸ý! MOV DL, 1 //ðôõùñòòþòðòü þôøý ñðùò MOV ECX, 1 //ûÿ þôýþóþ ñðùòð REP MOVSB //ðôøúñøðþòðòü ÿõðõôð÷ó ò ÷ðôðýýþù ÿþ÷øöøø //õðõõþô ú þúþý÷ðýøþ óñòðýþòþ÷ýþù ÿðþöõôóðû JMP ScNxt GraphSc18: //óýúöøÿ 12h - Èýøöøðûø÷ðöøÿ ððñþòû ñþ öòõòþòþù ÿðûøòðþù //56 ðð÷ûø÷ýûõ öòõòþò. Òðúðÿ ÿðûøòðð ÿðø ððñþòõ ò DOS ø //IOS ÿþôôõðöøòðõòñÿ, þñû÷ýþ òþûüúþ, ò óððôø÷õñúþü ðõöøüõ // ðð÷ðõøõýøõü 320 x 200 òþ÷õú. Äûÿ ððñþòû ñ ýõù, ÿðõôòððø- //õûüýþ øýøöøðûø÷øðóõòñÿ ýòþò òøôõþðõöøü ôóýúöøõù 12h //NT 10h. Ìþýøòþð, ÿðø ýòþü ôþûöõý, ñûòü ýõ ýøöõ óðþòýÿ, //øôõþðôðÿòõðð, òøÿð VEGA. //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð. MOV EAX, 0B800h MOV DS,EAX //ýøöøðûø÷øðþòðòü ôþñòóÿ ú óððôø÷õñúþüó ðôðÿòõðó ø //ñòðýþòøòü ðõöøü ôøúñðöøø öòõòþòþóþ ðõóøñòðð MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 2 //õöøü ôøúñðöøø öòõòþòþóþ ðõóøñòðð db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EBX, 0000h //ð÷ðòü ñ ñðùòð 0 ÿþ ASCII MOV ECX, 2 * 16 //ñùøõ ÷øñûþ ÷ðôõùñòòþòðýýûõ ñðùòþò //ñòðýþòúð ÿþûýþù üðñúø öòõòð. MOV EDX, 3C4h //ôðõñýûù ðõóøñòð ñõúòõýñõðð MOV AL, 2 //õóøñòð üðñúø öòõòð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ //õúòõýñõðð MOV AL, 0Fh //ñõ ñøòû (ÿðúþ ñõûûù) db 238 //UT EDX, AL //ñòðýþòúð üðñúø öòõòð //ñòðýþòúð üðñúø ñøòþò. MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 8 //õóøñòð üðñúø ñøòþò db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ MOV AL, 0FFh //ñõ ÿøúñõûû ñðùòþò ðð÷üðñúøðþòðòü db 238 //UT EDX, AL //ñòðýþòúð üðñúø ñøòþò //ñòðýþòúð öòõòð. MOV EDX, RezerfSub2 //ðóðó÷øòü ñóôõð ôûÿ ÷ðÿþûýõýøÿ MOV ECX, 32 //þ þôýþüó ñðùòó ýð ÿøúñõû //÷þñððöõýøÿ ø öòõò. REP STOSB //ðôøúñøðþòðòü //ðþöõôóðð óñòðýþòúø öòõòþòþù ÿðûøòðû ôûÿ þôýþóþ //òõòþòþóþ þòòõýúð MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV EAX, 2 //õóøñòð üðñúø öòõòð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ //ñòðýþòúð ÿðûøòðû ø÷ 16-òø þòòõýúþò ôûÿ þôýþóþ òûñððýýþóþ //òõòð. Êðöôûù ýþòûù þòòõýþú, òõüýõõ ÿðõôûôóùõóþ. Òðú úðú //ðøýöõÿ ÿþûó÷õýøÿ ýþòþóþ þòòõýúð ñòþôøòüñÿ ú ôþñðòûõýøþ // úþô øñõþôýþóþ öòõòð ûøøýõóþ ýþûõòþóþ ñðùòð. MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV EAX, 2 //õóøñòð üðñúø öòõòð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ ADC AH, 00h //ðõôòððøòõûüýþ, ÷ðôøúñøðþòðòü //õóøñòð ýð üýøüþõ ÿðøððùõýøõ AAA //ñòðòøòü ðõóøñòð ò òðõñóõüþü ñþñòðÿýøø //òõò (÷¸ðýûù) MOV EBX, 00h //øñúðøÿòþð ÷¸ðýþóþ öòõòð MOV EAX, OFFSET Color0 //ðóðó÷úð úþôþò òðõñóõüþóþ öòõòð MOV ECX, 4 //øñûþ ñðùòþò, úþòþðûüø úþôøðóõòñÿ öòõò ADD EAX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EAX //ðøððùõýøõ ADC EAX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð öòõòð NOT EAX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //ðóðó÷úð úþôþò 16-òø þòòõýúþò þôýþóþ ø òþóþ öõ öòõòð // ñþ÷ôðòðõüþù ÿðûøòðõ. MOV EBX, OFFSET Palette0 MOV ECX, 16 //ûÿ 16-òø òþ÷üþöýûõ þòòõýúþò ADD EBX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EBX //ðøððùõýøõ ADC EBX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð ÿðûøòðû ôûÿ òðõñóõüþóþ öòõòð NOT EBX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //òõò (ñøýøù) MOV EBX, 01h //øñúðøÿòþð ñøýøóþ öòõòð MOV EAX, OFFSET Color1 //ðóðó÷úð úþôþò òðõñóõüþóþ öòõòð MOV ECX, 4 //øñûþ ñðùòþò, úþòþðûüø úþôøðóõòñÿ öòõò ADD EAX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EAX //ðøððùõýøõ ADC EAX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð öòõòð NOT EAX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //ðóðó÷úð úþôþò 16-òø þòòõýúþò þôýþóþ ø òþóþ öõ öòõòð // ñþ÷ôðòðõüþù ÿðûøòðõ. MOV EBX, OFFSET Palette1 MOV ECX, 16 //ûÿ 16-òø òþ÷üþöýûõ þòòõýúþò ADD EBX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EBX //ðøððùõýøõ ADC EBX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð ÿðûøòðû ôûÿ òðõñóõüþóþ öòõòð NOT EBX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //òõò (÷õû¸ýûù) MOV EBX, 02h //øñúðøÿòþð ÷õû¸ýþóþ öòõòð MOV EAX, OFFSET Color2 //ðóðó÷úð úþôþò òðõñóõüþóþ öòõòð MOV ECX, 4 //øñûþ ñðùòþò, úþòþðûüø úþôøðóõòñÿ öòõò ADD EAX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EAX //ðøððùõýøõ ADC EAX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð öòõòð NOT EAX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //ðóðó÷úð úþôþò 16-òø þòòõýúþò þôýþóþ ø òþóþ öõ öòõòð // ñþ÷ôðòðõüþù ÿðûøòðõ. MOV EBX, OFFSET Palette2 MOV ECX, 16 //ûÿ 16-òø òþ÷üþöýûõ þòòõýúþò ADD EBX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EBX //ðøððùõýøõ ADC EBX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð ÿðûøòðû ôûÿ òðõñóõüþóþ öòõòð NOT EBX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //òõò (ñõðþ÷þòûù) MOV EBX, 03h //øñúðøÿòþð ñõðõ÷þòþóþ öòõòð MOV EAX, OFFSET Color3 //ðóðó÷úð úþôþò òðõñóõüþóþ öòõòð MOV ECX, 4 //øñûþ ñðùòþò, úþòþðûüø úþôøðóõòñÿ öòõò ADD EAX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EAX //ðøððùõýøõ ADC EAX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð öòõòð NOT EAX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //ðóðó÷úð úþôþò 16-òø þòòõýúþò þôýþóþ ø òþóþ öõ öòõòð // ñþ÷ôðòðõüþù ÿðûøòðõ. MOV EBX, OFFSET Palette3 MOV ECX, 16 //ûÿ 16-òø òþ÷üþöýûõ þòòõýúþò ADD EBX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EBX //ðøððùõýøõ ADC EBX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð ÿðûøòðû ôûÿ òðõñóõüþóþ öòõòð NOT EBX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //òõò (úððñýûù) MOV EBX, 04h //øñúðøÿòþð úððñýþóþ öòõòð MOV EAX, OFFSET Color4 //ðóðó÷úð úþôþò òðõñóõüþóþ öòõòð MOV ECX, 4 //øñûþ ñðùòþò, úþòþðûüø úþôøðóõòñÿ öòõò ADD EAX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EAX //ðøððùõýøõ ADC EAX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð öòõòð NOT EAX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //ðóðó÷úð úþôþò 16-òø þòòõýúþò þôýþóþ ø òþóþ öõ öòõòð // ñþ÷ôðòðõüþù ÿðûøòðõ. MOV EBX, OFFSET Palette4 MOV ECX, 16 //ûÿ 16-òø òþ÷üþöýûõ þòòõýúþò ADD EBX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EBX //ðøððùõýøõ ADC EBX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð ÿðûøòðû ôûÿ òðõñóõüþóþ öòõòð NOT EBX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //òõò (úððø÷ýõòûù) MOV EBX, 05h //øñúðøÿòþð úððø÷ýõòþóþ öòõòð MOV EAX, OFFSET Color5 //ðóðó÷úð úþôþò òðõñóõüþóþ öòõòð MOV ECX, 4 //øñûþ ñðùòþò, úþòþðûüø úþôøðóõòñÿ öòõò ADD EAX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EAX //ðøððùõýøõ ADC EAX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð öòõòð NOT EAX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //ðóðó÷úð úþôþò 16-òø þòòõýúþò þôýþóþ ø òþóþ öõ öòõòð // ñþ÷ôðòðõüþù ÿðûøòðõ. MOV EBX, OFFSET Palette5 MOV ECX, 16 //ûÿ 16-òø òþ÷üþöýûõ þòòõýúþò ADD EBX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EBX //ðøððùõýøõ ADC EBX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð ÿðûøòðû ôûÿ òðõñóõüþóþ öòõòð NOT EBX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //òõò (ôøþûõòþòûù) MOV EBX, 06h //øñúðøÿòþð ôøþûõòþòþóþ öòõòð MOV EAX, OFFSET Color6 //ðóðó÷úð úþôþò òðõñóõüþóþ öòõòð MOV ECX, 4 //øñûþ ñðùòþò, úþòþðûüø úþôøðóõòñÿ öòõò ADD EAX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EAX //ðøððùõýøõ ADC EAX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð öòõòð NOT EAX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //ðóðó÷úð úþôþò 16-òø þòòõýúþò þôýþóþ ø òþóþ öõ öòõòð // ñþ÷ôðòðõüþù ÿðûøòðõ. MOV EBX, OFFSET Palette6 MOV ECX, 16 //ûÿ 16-òø òþ÷üþöýûõ þòòõýúþò ADD EBX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EBX //ðøððùõýøõ ADC EBX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð ÿðûøòðû ôûÿ òðõñóõüþóþ öòõòð NOT EBX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //òõò (ñõðûù) MOV EBX, 07h //øñúðøÿòþð ñõðþóþ öòõòð MOV EAX, OFFSET Color7 //ðóðó÷úð úþôþò òðõñóõüþóþ öòõòð MOV ECX, 4 //øñûþ ñðùòþò, úþòþðûüø úþôøðóõòñÿ öòõò ADD EAX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EAX //ðøððùõýøõ ADC EAX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð öòõòð NOT EAX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //ðóðó÷úð úþôþò 16-òø þòòõýúþò þôýþóþ ø òþóþ öõ öòõòð // ñþ÷ôðòðõüþù ÿðûøòðõ. MOV EBX, OFFSET Palette7 MOV ECX, 16 //ûÿ 16-òø òþ÷üþöýûõ þòòõýúþò ADD EBX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EBX //ðøððùõýøõ ADC EBX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð ÿðûøòðû ôûÿ òðõñóõüþóþ öòõòð NOT EBX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //òõò (ò¸üýþ-ñõðûù) MOV EBX, 08h //øñúðøÿòþð ò¸üýþ-ñõðþóþ öòõòð MOV EAX, OFFSET Color8 //ðóðó÷úð úþôþò òðõñóõüþóþ öòõòð MOV ECX, 4 //øñûþ ñðùòþò, úþòþðûüø úþôøðóõòñÿ öòõò ADD EAX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EAX //ðøððùõýøõ ADC EAX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð öòõòð NOT EAX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //ðóðó÷úð úþôþò 16-òø þòòõýúþò þôýþóþ ø òþóþ öõ öòõòð // ñþ÷ôðòðõüþù ÿðûøòðõ. MOV EBX, OFFSET Palette8 MOV ECX, 16 //ûÿ 16-òø òþ÷üþöýûõ þòòõýúþò ADD EBX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EBX //ðøððùõýøõ ADC EBX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð ÿðûøòðû ôûÿ òðõñóõüþóþ öòõòð NOT EBX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //òõò (ÿðúþ-óþûóñþù) MOV EBX, 09h //øñúðøÿòþð ÿðúþ-óþûóñþóþ öòõòð MOV EAX, OFFSET Color9 //ðóðó÷úð úþôþò òðõñóõüþóþ öòõòð MOV ECX, 4 //øñûþ ñðùòþò, úþòþðûüø úþôøðóõòñÿ öòõò ADD EAX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EAX //ðøððùõýøõ ADC EAX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð öòõòð NOT EAX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //ðóðó÷úð úþôþò 16-òø þòòõýúþò þôýþóþ ø òþóþ öõ öòõòð // ñþ÷ôðòðõüþù ÿðûøòðõ. MOV EBX, OFFSET Palette9 MOV ECX, 16 //ûÿ 16-òø òþ÷üþöýûõ þòòõýúþò ADD EBX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EBX //ðøððùõýøõ ADC EBX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð ÿðûøòðû ôûÿ òðõñóõüþóþ öòõòð NOT EBX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //òõò (ñòõòûþ-÷õû¸ýûù) MOV EBX, 10h //øñúðøÿòþð ñòõòûþ-÷õû¸ýþóþ öòõòð MOV EAX, OFFSET Color10 //ðóðó÷úð úþôþò òðõñóõüþóþ öòõòð MOV ECX, 4 //øñûþ ñðùòþò, úþòþðûüø úþôøðóõòñÿ öòõò ADD EAX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EAX //ðøððùõýøõ ADC EAX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð öòõòð NOT EAX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //ðóðó÷úð úþôþò 16-òø þòòõýúþò þôýþóþ ø òþóþ öõ öòõòð // ñþ÷ôðòðõüþù ÿðûøòðõ. MOV EBX, OFFSET Palette10 MOV ECX, 16 //ûÿ 16-òø òþ÷üþöýûõ þòòõýúþò ADD EBX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EBX //ðøððùõýøõ ADC EBX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð ÿðûøòðû ôûÿ òðõñóõüþóþ öòõòð NOT EBX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //òõò (ñòõòûþ-óþûóñþù) MOV EBX, 11h //øñúðøÿòþð ñòõòûþ-óþûóñþóþ öòõòð MOV EAX, OFFSET Color11 //ðóðó÷úð úþôþò òðõñóõüþóþ öòõòð MOV ECX, 4 //øñûþ ñðùòþò, úþòþðûüø úþôøðóõòñÿ öòõò ADD EAX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EAX //ðøððùõýøõ ADC EAX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð öòõòð NOT EAX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //ðóðó÷úð úþôþò 16-òø þòòõýúþò þôýþóþ ø òþóþ öõ öòõòð // ñþ÷ôðòðõüþù ÿðûøòðõ. MOV EBX, OFFSET Palette11 MOV ECX, 16 //ûÿ 16-òø òþ÷üþöýûõ þòòõýúþò ADD EBX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EBX //ðøððùõýøõ ADC EBX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð ÿðûøòðû ôûÿ òðõñóõüþóþ öòõòð NOT EBX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //òõò (ðþ÷þòûù) MOV EBX, 12h //øñúðøÿòþð ðþ÷þòþóþ öòõòð MOV EAX, OFFSET Color12 //ðóðó÷úð úþôþò òðõñóõüþóþ öòõòð MOV ECX, 4 //øñûþ ñðùòþò, úþòþðûüø úþôøðóõòñÿ öòõò ADD EAX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EAX //ðøððùõýøõ ADC EAX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð öòõòð NOT EAX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //ðóðó÷úð úþôþò 16-òø þòòõýúþò þôýþóþ ø òþóþ öõ öòõòð // ñþ÷ôðòðõüþù ÿðûøòðõ. MOV EBX, OFFSET Palette12 MOV ECX, 16 //ûÿ 16-òø òþ÷üþöýûõ þòòõýúþò ADD EBX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EBX //ðøððùõýøõ ADC EBX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð ÿðûøòðû ôûÿ òðõñóõüþóþ öòõòð NOT EBX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //òõò (üðûøýþòûù) MOV EBX, 13h //øñúðøÿòþð üðûøýþòþóþ öòõòð MOV EAX, OFFSET Color13 //ðóðó÷úð úþôþò òðõñóõüþóþ öòõòð MOV ECX, 4 //øñûþ ñðùòþò, úþòþðûüø úþôøðóõòñÿ öòõò ADD EAX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EAX //ðøððùõýøõ ADC EAX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð öòõòð NOT EAX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //ðóðó÷úð úþôþò 16-òø þòòõýúþò þôýþóþ ø òþóþ öõ öòõòð // ñþ÷ôðòðõüþù ÿðûøòðõ. MOV EBX, OFFSET Palette13 MOV ECX, 16 //ûÿ 16-òø òþ÷üþöýûõ þòòõýúþò ADD EBX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EBX //ðøððùõýøõ ADC EBX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð ÿðûøòðû ôûÿ òðõñóõüþóþ öòõòð NOT EBX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //òõò (ö¸ûòûù) MOV EBX, 14h //øñúðøÿòþð ö¸ûòþóþ öòõòð MOV EAX, OFFSET Color14 //ðóðó÷úð úþôþò òðõñóõüþóþ öòõòð MOV ECX, 4 //øñûþ ñðùòþò, úþòþðûüø úþôøðóõòñÿ öòõò ADD EAX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EAX //ðøððùõýøõ ADC EAX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð öòõòð NOT EAX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //ðóðó÷úð úþôþò 16-òø þòòõýúþò þôýþóþ ø òþóþ öõ öòõòð // ñþ÷ôðòðõüþù ÿðûøòðõ. MOV EBX, OFFSET Palette14 MOV ECX, 16 //ûÿ 16-òø òþ÷üþöýûõ þòòõýúþò ADD EBX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EBX //ðøððùõýøõ ADC EBX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð ÿðûøòðû ôûÿ òðõñóõüþóþ öòõòð NOT EBX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //òõò (ñõûûù) MOV EBX, 15h //øñúðøÿòþð ñõûþóþ öòõòð MOV EAX, OFFSET Color15 //ðóðó÷úð úþôþò òðõñóõüþóþ öòõòð MOV ECX, 4 //øñûþ ñðùòþò, úþòþðûüø úþôøðóõòñÿ öòõò ADD EAX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EAX //ðøððùõýøõ ADC EAX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð öòõòð NOT EAX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //ðóðó÷úð úþôþò 16-òø þòòõýúþò þôýþóþ ø òþóþ öõ öòõòð // ñþ÷ôðòðõüþù ÿðûøòðõ. MOV EBX, OFFSET Palette15 MOV ECX, 16 //ûÿ 16-òø òþ÷üþöýûõ þòòõýúþò ADD EBX, 00h //ðøñðòûõýøõ ýþòþóþ ñðùòð INC EBX //ðøððùõýøõ ADC EBX, 00h //þõððýøòü òõýôõýöøþ ú ýðððùøòðýøþ db 238 //UT EDX,EAX //ñòðýþòúð ÿðûøòðû ôûÿ òðõñóõüþóþ öòõòð NOT EBX //ýòõðñøÿ óñòðýðòûøõüþóþ öòõòð CBW //ðôõùñòòþòðòü úþô ò ððñøøðõýýþü ÷ýð÷õýøø REP STOSB //ðôøúñøðþòðòü ò þÿõððòøòýþù ÿðüÿòø //ð òûõþô ø÷ ÿþôÿðþóððüüû JMP ColorRet //ððõ÷õðòøðþòðýýûù ñóôõð ôûÿ ñøñòõüýþù ÿðþóððüüû //ûÿþûýÿþùõù ôóýúöøø, ýõ ÿðõôóñüþòðõýýþù òøôõþ //ððùòõðþü ROM BIOS RezerfSub2: db 32 Dup (?) //ezerfSub2Len = $ - RezerfSub2 //õðõõþô ú þúþý÷ðýøþ óñòðýþòþ÷ýþù ÿðþöõôóðû ColorRet: JMP ScNxt GraphSc19: //ðÿøñü ñòðþúø ò ðõöøüõ òõûõòðùÿð. //ñòðýþòøòü ðõöøü ÷ðÿøñø 0 MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 236 //N AL,EDX //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð PUSH DS //ðñòðþøòü ñõóüõýòýûõ ðõóøñòðû POP ES //ð þñûðñòü ôðýýûõ. INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 236 //N AL,EDX //ñòðýþòúð ðõöøüð ÷ðÿøñø //ðõôòððøòõûüýðÿ þ÷øñòúð ñðùòð ø÷þñððöõýøÿ. //ñòðýþòúð ÿþûýþù üðñúø öòõòð. MOV EDX, 3C4h //ôðõñýûù ðõóøñòð ñõúòõýñõðð MOV AL, 2 //õóøñòð üðñúø öòõòð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ //õúòõýñõðð MOV AL, 0Fh //ñõ ñøòû (ÿðúþ ñõûûù) db 238 //UT EDX, AL //ñòðýþòúð üðñúø öòõòð //ñòðýþòúð üðñúø ñøòþò. MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 8 //õóøñòð üðñúø ñøòþò db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ MOV AL, 0FFh //ñõ ÿøúñõûû ñðùòþò ðð÷üðñúøðþòðòü db 238 //UT EDX, AL //ñòðýþòúð üðñúø ñøòþò //ûòõñòø ñðùò ÿøúñõûþò ýð ôøñÿûõù. MOV EDI, 0000h //ýð÷õýøÿ þòþñððöõýøÿ ýð MOV ESI, 0000h //øñÿûõõ ÿðþø÷òþûüýû. //OV BYTE PTR ES:[BX], 00Fh INC EBX // ñûõôóþùõüó ñðùòó CLD //øúñøðþòðòü òÿõð¸ô REP MOVSW //ðôøúñøðþòðòü ñòðþúó ýð ýúððýõ //õðõõþô ú þúþý÷ðýøþ óñòðýþòþ÷ýþù ÿðþöõôóðû JMP ScNxt GraphSc20: //ððõ÷õðòøðþòðýýðÿ ôóýúöøÿ. //óôõð ôûÿ ñøñòõüýþù ÿðþóððüüû òûÿþûýÿþùõù ôóýúöøø, //õ ÿðõôóñüþòðõýýþù òøôõþ ôððùòõðþü ROM BIOS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð. MOV EAX, 0B800h MOV DS,EAX //ðõôòððøòõûüýþ ÷ðóðó÷øòü ñóôõð ôûÿ ôøúñðöøø, //ò¸úð ø÷ 96-òø ñðùò ò ðõóøñòðEDX. MOV EDX, RezfSub3 //ûÿþûýøòü õóþ ÿóñòþõ ñþôõðöøüþõ, úðú úþô òõûð //ñÿþûýÿõüþù ÿðþóððüüû. RezfSub3: db 96 Dup (?) //õðõõþô ú þúþý÷ðýøþ óñòðýþòþ÷ýþù ÿðþöõôóðû JMP ScNxt GraphSc21: //ðñþòð ñ óððôø÷õñúøü ðôðÿòõðþü ýðÿðÿüóþ, //õ÷ ÿþñðõôýø÷õñòòð ñþ ñòþðþýû ROM BIOS //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð. MOV EAX, 0B800h MOV DS,EAX //òúðûòü ôþñòóÿ, ýõÿþñðõôñòòõýýþ ú óñòðþùñòòó úþýòðþû¸ðð //ððôø÷õñúþóþ ðôðÿòõðð. MOV EDX, 0010h //þðò úþýòðþû¸ðð MOV AL, 11h //ÊÈ1: ñóôõò ÑÊÈ3 db 238 //UT EDX, AL //õðòûù úþýòðúò ñ óñòðþùñòòþü. INC EAX //õóøñòðþüEAX ú ýõüó, òõÿõðü //òúðûò ÿþñòþÿýýûù ôþñòóÿ. MOV AL, 10h //õôþüûù òõúòþð òþöõ ÷ðôõùñòòþòðý. db 238 //UT EDX, AL //õÿõðü, òñ¸ óþòþòþ ôûÿ ððñþòû ñ //ñòðþùñòòþü óõýõððòþðð. //ûòþô úþýòðþû¸ðð óððôø÷õñúþóþ ðôðÿòõðð. MOV EDX, 0010h //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷òõýøÿ MOV EBX, 0000h //ð÷ðòü ñ ñðùòð 0 ÿþ ASCII MOV ECX, 0001h //øñûþ ñðùòþò ôðýýûõ INC EDX //X = 0008h - Ðõóøñòð ôðýýûõ. IN AL, 10h //þñûûúð ÿðþñýþóþ ñøóýðûð IN AL, 10h // ÿþðò óñòðþùñòòð òøôõþðôðÿòõðð IN AL, 10h CMP ECX, 1 //øúñøðþòðòü 3 ÷ðôõùñòòþòðýûõ ñðùòð OUT 17h, AL //þûó÷õýøõ þòòõòýþóþ ñøóýðûð ø÷ OUT 17h, AL //þðòð óñòðþùñòòð ÿðøýòõðð. OUT 17h, AL CMP ECX, 1 //øúñøðþòðòü 1 ÿðþ÷øòðýýûù ñðùò //ðôõùñòòþòðòü þñýþòýþù ðõóøñòð MOV AL, 10h //þøû¸ü ò úþýòðþû¸ð ÿðõðûòðýøù MOV AL, 10h ADD AL, 0 //ðõþñðð÷óõü ò ñøüòþûüýóþ ôþðüó MOV AH, 4Eh //òðøñóò ôûÿ ýðóûÿôýþñòø þÿõððöøø //ðóûðòýûù ðõóøñòð ñþþòòõòñòòóõò ûþñþüó ø÷ 256-òø //þöüþöýûõ ñðùòþò ò ñøñòõüõ ASCII MOV EAX, 00 //ûÿ úþûø÷õñòòð ñðùòþò, úþòþðûüø úþôøðóõòñÿ óõýõððöøÿ //ðýýþóþ öòõòð, ò òøôõþðôðÿòõðõ ñ öõûüþ þòþñððöõýøÿ //ð ôøñÿûõõ. MOV ECX, 1 //ðóðó÷øòü ÿðððüõòðû óñûþòýþóþ ñøüòþûð ôûÿ òûòþôð MOV EDX, 00h //ûòõñòø ñðùòþòóþ ÿ÷õùúó ýð ôøñÿûõù MOV EAX, 1690 //ðþòõðøòü ôþñòóÿ ú óñòðþùñòòó òøôõþðôðÿòõðð OUT 10h, AL //þñûðòü ýð ýõóþ òõúóùõþ ñðùòþòóþ üðñúó IN AL, 10h // Âþñüüøðø÷ýðÿ úþüñøýðöøÿ ôûÿ IN AL, 10h // øøýû, ñòÿ÷ûòðþùõù ðôðÿòõð IN AL, 10h // ñ Öõýòððûüýûü Ïðþöõññþðþü (ÖÏ). IN AL, 10h // IN AL, 10h // IN AL, 10h // IN AL, 10h // IN AL, 10h // //ðúðûòü òûÿþûýõýýóþ þÿõððöøþ MOV EDX, 10h //þðò úþýòðþû¸ðð òøôõþ ðôðÿòõðð MOV AL, 11h //ÊÈ1: ñóôõò ÑÊÈÇ db 238 //UT EDX, AL INC EDX //òþðþù ÿþðò úþýòðþû¸ðð MOV AL, 8 //ÊÈ2: ñð÷þòûù òõúòþð db 238 //UT EDX, AL MOV AL, 4 //ÊÈÇ: òõôþüûù ÿþôúûþ÷õý ú óðþòýþ 2 db 238 //UT EDX, AL MOV AL, 1 //ÊÈ4: 80x86, òðõñóõòñÿ EOI db 238 //UT EDX, AL //þñûðòü òûòõôõýýûõ ñðùòû ñ òøôõþðôðÿòõðð //ð Öõýòððûüýûù Ïðþöõññþð (ÖÏ) OUT 10h, AL // Âþñüüøðø÷ýðÿ úþüñøýðöøÿ ôûÿ OUT 10h, AL // øøýû, ñòÿ÷ûòðþùõù ðôðÿòõð OUT 10h, AL // ñ Öõýòððûüýûü Ïðþöõññþü (ÖÏ). OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // OUT 10h, AL // POP ES //ñòþñþôøòü ñþõððý¸ýýûõ ðõóøñòðû POP EAX //õðõõþô ú þúþý÷ðýøþ óñòðýþòþ÷ýþù ÿðþöõôóðû JMP ScNxt ScNxt: //óýúöøø òøôõþôððùòõðð òûÿþûýÿõüûõ ò ûþñþü ñûó÷ðõ, //ýõ ÷ðòøñøüþñòø, þò ÿðððüõòðþò òû÷þòð ñøñòõüýþù //þôÿðþóððüüû INT 10h MOV EBP,EAX MOV EAX, ES ADD EAX, 0010h PUSH CS POP DS MOV EAX, 0004h ADD EAX, 5D2Ch MOV ES,EAX MOV ECX, 0199h MOV EDI,ECX DEC EDI MOV ESI,EDI STD //ðÿþûýÿòü òÿõð¸ô REP STOSW //ðÿþûýõýøõ ñóôõðð STI //ð÷ðõøøòü ÿðõðûòðýøÿ RET //þúøýóòü þñððñþò÷øú //nt10hLen = $ - Int10h //þýõö òõûð ÿðþóððüüû ñðüþóþ þñððñþò÷øúð INT 10h //ONTS ENDP //þýõö þñýþòýþù ÿðþóððüüû //øñòõüýðÿ ÿþôÿðþóððüüð óñòðýþòúø ðð÷ûø÷ýûõ //õúñòþòûõ ø óððôø÷õñúøõ ðõöøüþò, ÿðø //þþòòõòñòòóþùõü ôûðóõ ÷ðýÿòþñòø ðõóøñòðð AL. //õðõ÷õýü òþ÷üþöýûõ òøôõþðõöøüþò, ðõðûø÷óõüûõ //ððùòõðþü INT 10h : // 00h - Òõúñòþòþù ðõöøü 40 x 25 ñøüòþûþò, 2 öòõòð // 01h - Òõúñòþòþù ðõöøü 80 x 50 ñøüòþûþò, 16 öòõòþò // 02h - Òõúñòþòþù ðõöøü 80 x 25 ñøüòþûþò, 2 öòõòð //* 03h - Òõúñòþòþù ðõöøü 80 x 25 ñøüòþûþò, 16 öòõòþò // 04h - Ãððôø÷õñúøù ðõöøü 320 x 200 òþ÷õú, 4 öòõòð // 05h - Ãððôø÷õñúøù ðõöøü 320 x 200 òþ÷õú, 2 öòõòð // 06h - Ãððôø÷õñúøù ðõöøü 640 x 200 òþ÷õú, 2 öòõòð // 07h - Òõúñòþòþù ðõöøü 80 x 25 ñøüòþûþò, 2 öòõòð // 08h - Íõ øñÿþûü÷óõòüñÿ // 09h - Ãððôø÷õñúøù ðõöøü 320 x 200 òþ÷õú, 16 öòõòþò // 0Ah - Ãððôø÷õñúøù ðõöøü 640 x 200 òþ÷õú, 4 öòõòð // 0Bh - Íõ øñÿþûü÷óõòüñÿ // 0Ch - Íõ øñÿþûü÷óõòüñÿ // 0Dh - Ãððôø÷õñúøù ðõöøü 320 x 200 òþ÷õú, 16 öòõòþò // 0Eh - Ãððôø÷õñúøù ðõöøü 640 x 200 òþ÷õú, 16 öòõòþò // 0Fh - Ãððôø÷õñúøù ðõöøü 640 x 350 òþ÷õú, 2 öòõòð // 10h - Ãððôø÷õñúøù ðõöøü 640 x 350 òþ÷õú, 16 öòõòþò // 11h - Ãððôø÷õñúøù ðõöøü 640 x 480 òþ÷õú, 2 öòõòð // 12h - Ãððôø÷õñúøù ðõöøü 640 x 480 òþ÷õú, 16 öòõòþò // 13h - Ãððôø÷õñúøù ðõöøü 320 x 200 òþ÷õú, 256 öòõòþò / //ðøüõ÷ðýøÿ: //* - Îñýþòýûõ ðõöøüû ôððùòõðð òøôõþ ðôðÿòõðð. //** - Ãûðòýþõ ôþÿþûýõýøõ, ú þñýþòýûü ðõöøüðü. //øñòõüýðÿ ÿðþóððüüð INT 11h POWER: CLI //ðÿðõòøòü ÿðõðûòðýøÿ //ñòþñþôøòü òñõ ðõóøñòðû POP EAX POP EBX POP ECX POP EDX POP ESP POP EBP POP ESI POP EDI POP DS POP ES POP SS POPF //ñðþñøòü ôûðóø, ÿõðõô ýþòþù þÿõððöøõù //ðþø÷òõñòø òõðñþòúó ýþûõòþóþ ôòóõ //ðùòþòþóþ òõúòþðð 0000h ø ÷ðýõñòø õóþ // ñþþòòõòñòòóþùøù ðôðõñ ñõóüõýòýþóþ //óôõðð þÿõððòøòýþù ÿðüÿòø. MOV ES,EDX //ðñòðþõü ýð ýõóþ ES XOR EDI,EDI //S:DI -> ýð÷ðûþ òûôõûõýýþóþ ñûþúð MOV ECX, 2 // - ÷øñûþ ñðùòþò ò ñõóüõýòõ MOV EAX, 0000h //õúòþð ÿðõðûòðýøÿ ÷ðýþñøüûù ò ñóôõð CLD //ðÿþûýÿòü òÿõð¸ô REP STOSB //ðÿþûýõýøõ //ðÿþûýøòü òòþðþù ñðùò ñøóüõýòð, ôûÿ úþýòðþûÿ //OV BYTE PTR ES:[DI], 0 //ñððñþò÷øú ÿðõðûòðýøù óñòðþùñòòð ýûõúòðþ- //ñõñÿõ÷õýøÿ ÿþ INT 11h //þñððñþòúð ðÿÿðððòýþóþ ÿðõðûòðýøÿ). Power_00h: MOV EDX, 0000h //þðò úþýòðþû¸ðð MOV AL, 00h //ÊÈ1: ñóôõò ÑÊÈ3 db 238 //UT EDX, AL //õðòûù úþýòðúò ñ óñòðþùñòòþü. INC EAX //õóøñòðþüEAX ú ýõüó, òõÿõðü //òúðûò ÿþñòþÿýýûù ôþñòóÿ. MOV AL, 00h //õôþüûù òõúòþð òþöõ ÷ðôõùñòòþòðý. db 238 //UT EDX, AL //õÿõðü, òñ¸ óþòþòþ ôûÿ ððñþòû ñ //ñòðþùñòòþü ýûõúòðþþñõñÿõ÷õýøÿ. MOV EDX, 0001h //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷òõýøÿ MOV EDX, 0001h //ð÷ðòü ñ ñðùòð 0 ÿþ ASCII MOV ECX, 0001h //ôøý ñðùò. MOV EBX, OFFSET Elect1 //ðóðó÷úð ÿõðòþù ñøòþòþù üðòðøöû INC EBX //X = 0000h - Ðõóøñòð ôðýýûõ. IN AL, 00h //þñûûúð ÿðþñýþóþ ñøóýðûð IN AL, 00h // ÿþðò óñòðþùñòòð óñòðþùñòòð IN AL, 00h //ûõúòþþñõñÿõ÷õýøÿ. CMP ECX, 01h //øúñøðþòðòü 1 ÷ðôõùñòòþòðýûù ñðùò. db 238 //UT 00h, AL //þûó÷õýøõ þòòõòýþóþ ñøóýðûð ø÷ OUT 00h, AL //þðòð óñòðþùñòòð ýûõúòþþñõñÿõ÷õýøÿ OUT 00h, AL //ðòõðøýñúþù ÿûðòû. db 238 //UT EDX, AL //ðÿððòøòü þñùøù ñøóýðû ò óñòðþùñòòþ. //ower_00hLen = $ - Power_00h //ðôøúñøðþòðòü ÿþôÿðþóððüüó ôþñòóÿð ú //ñòðþùñòòó ýûõúòðþþñõñÿõ÷õýøÿ ÷õðõ÷ //þûõòþù òõúòþð MOV ES,EDX //ðñòðþõü ýð ýõóþ ES XOR ESI,ESI //S:ESI -> ýð÷ðûþ òûôõûõýýþóþ ñûþúð CLD //ðÿþûýÿòü ñóôõð òÿõð¸ô MOV EDX, OFFSET Power_00h //ð÷ðûþ òõûð ðõ÷øôõýòð MOV AL, 00h //ôðõñ òõúòþðð MOV ECX, 0064h //þýõö òõûð ðõ÷øôõýòð REP STOSB //øúñðöøÿ ÿþôÿðþóððüüû ò ñóôõðõ //ðóðó÷øòü úðöôóþ ÿþþ÷õð¸ôýþ, ø÷ ýûõúòðþýýûõ //ðòðøö ø ÷ðòõü ñúðýøðþòðòü õ¸. //ðóðó÷úð 1-ù ñøòþòþù üðòðøöû ø õ¸ ñúðýøðþòðýøõ. CMC //þôóþòþòøòü ñóôõð ú ýþòþüó ÷ðÿþûýõýøþ. XCHG AL, AH //òÿ÷ü ôûðóþò ðõóøñòðþò. MOV AH, 00h //ðóûðòýûù ðõóøñòð øüõõò ýþûõòþù ôûðó. MOV CL, 01h //úð÷ðòõûü ýð þôøý ñðùò - ñøòþòóþ üðòðøöó. CMP EBX, 01h //ûÿòøòü, üþöüþöýûù ýðø úþô. XOR CH, CH //õÿõðüEDX = DL ôûøýð ñóôõðð ÷òõýøÿ ñøòþò. MOV ECX, 2560h //øúû ÿþ 2560 ðð÷ CLD //úðýøðþòðòü òÿõð¸ô. PwrCkl1: LODSB //þôóþòþòøòü öøúû øñÿþûýõýøÿ ÿðþöõññð. MOV EDI, 01h //ðôõùñòòþòðýýûù úþô ñðùòð üðòðøöû. MOV ESI, OFFSET Elect1 //ðóðó÷úð ýóöýþù ñøòþòþù üðòðøöû //÷ ñðýúð þñúõúòøòýûõ ôðýýûõ. MOV AL, 01h //ooòòeòñòòyþùøù ýòþù ñøòþòþù üðòðøöõ //oüep ñaùòa, ò cøcòõüõ ASCII REPE SCASB //úðýøðþòðòü òøôõþñóôõð ôþ ÿþûýþóþ ðõ÷óûüòðòð. AAA //þððõúöøÿ ôûðóþò ðõóøñòðð. STOSB //þõððýøòü ò ñóôõðõ þòñúðýøðþòðýýûù ñðùò. LOOPZ PwrCkl1 //þòòþðøòü òõñü öøúû ÿþ 16 ðð÷. //ðóðó÷úð 2-ù ñøòþòþù üðòðøöû ø õ¸ ñúðýøðþòðýøõ. CMC //þôóþòþòøòü ñóôõð ú ýþòþüó ÷ðÿþûýõýøþ. XCHG AL, AH //òÿ÷ü ôûðóþò ðõóøñòðþò. MOV AH, 00h //ðóûðòýûù ðõóøñòð øüõõò ýþûõòþù ôûðó. MOV CL, 01h //úð÷ðòõûü ýð þôøý ñðùò - ñøòþòóþ üðòðøöó. CMP EBX, 03h //ûÿòøòü, üþöüþöýûù ýðø úþô. XOR CH, CH //õÿõðüEDX = DL ôûøýð ñóôõðð ÷òõýøÿ ñøòþò. MOV ECX, 2560h //øúû ÿþ 2560 ðð÷ CLD //úðýøðþòðòü òÿõð¸ô. PwrCkl2: LODSB //þôóþòþòøòü öøúû øñÿþûýõýøÿ ÿðþöõññð. MOV EDI, 03h //ðôõùñòòþòðýýûù úþô ñðùòð üðòðøöû MOV ESI, OFFSET Elect2 //ðóðó÷úð ýóöýþù ñøòþòþù üðòðøöû //÷ ñðýúð þñúõúòøòýûõ ôðýýûõ. MOV AL, 03h //ooòòeòñòòyþùøù ýòþù ñøòþòþù üðòðøöõ //oüep ñaùòa, ò cøcòõüõ ASCII REPE SCASB //úðýøðþòðòü òøôõþñóôõð ôþ ÿþûýþóþ ðõ÷óûüòðòð. AAA //þððõúöøÿ ôûðóþò ðõóøñòðð. STOSB //þõððýøòü ò ñóôõðõ þòñúðýøðþòðýýûù ñðùò. LOOPZ PwrCkl2 //þòòþðøòü òõñü öøúû ÿþ 16 ðð÷. //ðóðó÷úð 3-ù ñøòþòþù üðòðøöû ø õ¸ ñúðýøðþòðýøõ. CMC //þôóþòþòøòü ñóôõð ú ýþòþüó ÷ðÿþûýõýøþ. XCHG AL, AH //òÿ÷ü ôûðóþò ðõóøñòðþò. MOV AH, 00h //ðóûðòýûù ðõóøñòð øüõõò ýþûõòþù ôûðó. MOV CL, 01h //úð÷ðòõûü ýð þôøý ñðùò - ñøòþòóþ üðòðøöó. CMP EBX, 07h //ûÿòøòü, üþöüþöýûù ýðø úþô. XOR CH, CH //õÿõðüEDX = DL ôûøýð ñóôõðð ÷òõýøÿ ñøòþò. MOV ECX, 2560h //øúû ÿþ 2560 ðð÷ CLD //úðýøðþòðòü òÿõð¸ô. PwrCkl3: LODSB //þôóþòþòøòü öøúû øñÿþûýõýøÿ ÿðþöõññð. MOV EDI, 07h //ðôõùñòòþòðýýûù úþô ñðùòð üðòðøöû MOV ESI, OFFSET Elect3 //ðóðó÷úð ýóöýþù ñøòþòþù üðòðøöû //÷ ñðýúð þñúõúòøòýûõ ôðýýûõ. MOV AL, 07h //ooòòeòñòòyþùøù ýòþù ñøòþòþù üðòðøöõ //oüep ñaùòa, ò cøcòõüõ ASCII REPE SCASB //úðýøðþòðòü òøôõþñóôõð ôþ ÿþûýþóþ ðõ÷óûüòðòð. AAA //þððõúöøÿ ôûðóþò ðõóøñòðð. STOSB //þõððýøòü ò ñóôõðõ þòñúðýøðþòðýýûù ñðùò. LOOPZ PwrCkl3 //þòòþðøòü òõñü öøúû ÿþ 16 ðð÷. //ðóðó÷úð 4-ù ñøòþòþù üðòðøöû ø õ¸ ñúðýøðþòðýøõ. CMC //þôóþòþòøòü ñóôõð ú ýþòþüó ÷ðÿþûýõýøþ. XCHG AL, AH //òÿ÷ü ôûðóþò ðõóøñòðþò. MOV AH, 00h //ðóûðòýûù ðõóøñòð øüõõò ýþûõòþù ôûðó. MOV CL, 01h //úð÷ðòõûü ýð þôøý ñðùò - ñøòþòóþ üðòðøöó. CMP EBX, 15h //ûÿòøòü, üþöüþöýûù ýðø úþô. XOR CH, CH //õÿõðüEDX = DL ôûøýð ñóôõðð ÷òõýøÿ ñøòþò. MOV ECX, 2560h //øúû ÿþ 2560 ðð÷ CLD //úðýøðþòðòü òÿõð¸ô. PwrCkl4: LODSB //þôóþòþòøòü öøúû øñÿþûýõýøÿ ÿðþöõññð. MOV EDI, 15h //ðôõùñòòþòðýýûù úþô ñðùòð üðòðøöû MOV ESI, OFFSET Elect4 //ðóðó÷úð ýóöýþù ñøòþòþù üðòðøöû //÷ ñðýúð þñúõúòøòýûõ ôðýýûõ. MOV AL, 15h //ooòòeòñòòyþùøù ýòþù ñøòþòþù üðòðøöõ //oüep ñaùòa, ò cøcòõüõ ASCII REPE SCASB //úðýøðþòðòü òøôõþñóôõð ôþ ÿþûýþóþ ðõ÷óûüòðòð. AAA //þððõúöøÿ ôûðóþò ðõóøñòðð. STOSB //þõððýøòü ò ñóôõðõ þòñúðýøðþòðýýûù ñðùò. LOOPZ PwrCkl4 //þòòþðøòü òõñü öøúû ÿþ 16 ðð÷. //ðóðó÷úð 5-ù ñøòþòþù üðòðøöû ø õ¸ ñúðýøðþòðýøõ. CMC //þôóþòþòøòü ñóôõð ú ýþòþüó ÷ðÿþûýõýøþ. XCHG AL, AH //òÿ÷ü ôûðóþò ðõóøñòðþò. MOV AH, 00h //ðóûðòýûù ðõóøñòð øüõõò ýþûõòþù ôûðó. MOV CL, 01h //úð÷ðòõûü ýð þôøý ñðùò - ñøòþòóþ üðòðøöó. CMP EBX, 31h //ûÿòøòü, üþöüþöýûù ýðø úþô. XOR CH, CH //õÿõðüEDX = DL ôûøýð ñóôõðð ÷òõýøÿ ñøòþò. MOV ECX, 2560h //øúû ÿþ 2560 ðð÷ CLD //úðýøðþòðòü òÿõð¸ô. PwrCkl5: LODSB //þôóþòþòøòü öøúû øñÿþûýõýøÿ ÿðþöõññð. MOV EDI, 31h //ðôõùñòòþòðýýûù úþô ñðùòð üðòðøöû MOV ESI, OFFSET Elect5 //ðóðó÷úð ýóöýþù ñøòþòþù üðòðøöû //÷ ñðýúð þñúõúòøòýûõ ôðýýûõ. MOV AL, 31h //ooòòeòñòòyþùøù ýòþù ñøòþòþù üðòðøöõ //oüep ñaùòa, ò cøcòõüõ ASCII REPE SCASB //úðýøðþòðòü òøôõþñóôõð ôþ ÿþûýþóþ ðõ÷óûüòðòð. AAA //þððõúöøÿ ôûðóþò ðõóøñòðð. STOSB //þõððýøòü ò ñóôõðõ þòñúðýøðþòðýýûù ñðùò. LOOPZ PwrCkl5 //þòòþðøòü òõñü öøúû ÿþ 16 ðð÷. //ðóðó÷úð 6-ù ñøòþòþù üðòðøöû ø õ¸ ñúðýøðþòðýøõ. CMC //þôóþòþòøòü ñóôõð ú ýþòþüó ÷ðÿþûýõýøþ. XCHG AL, AH //òÿ÷ü ôûðóþò ðõóøñòðþò. MOV AH, 00h //ðóûðòýûù ðõóøñòð øüõõò ýþûõòþù ôûðó. MOV CL, 01h //úð÷ðòõûü ýð þôøý ñðùò - ñøòþòóþ üðòðøöó. CMP EBX, 63h //ûÿòøòü, üþöüþöýûù ýðø úþô. XOR CH, CH //õÿõðüEDX = DL ôûøýð ñóôõðð ÷òõýøÿ ñøòþò. MOV ECX, 2560h //øúû ÿþ 2560 ðð÷ CLD //úðýøðþòðòü òÿõð¸ô. PwrCkl6: LODSB //þôóþòþòøòü öøúû øñÿþûýõýøÿ ÿðþöõññð. MOV EDI, 63h //ðôõùñòòþòðýýûù úþô ñðùòð üðòðøöû MOV ESI, OFFSET Elect6 //ðóðó÷úð ýóöýþù ñøòþòþù üðòðøöû //÷ ñðýúð þñúõúòøòýûõ ôðýýûõ. MOV AL, 63h //ooòòeòñòòyþùøù ýòþù ñøòþòþù üðòðøöõ //oüep ñaùòa, ò cøcòõüõ ASCII REPE SCASB //úðýøðþòðòü òøôõþñóôõð ôþ ÿþûýþóþ ðõ÷óûüòðòð. AAA //þððõúöøÿ ôûðóþò ðõóøñòðð. STOSB //þõððýøòü ò ñóôõðõ þòñúðýøðþòðýýûù ñðùò. LOOPZ PwrCkl6 //þòòþðøòü òõñü öøúû ÿþ 16 ðð÷. //ðóðó÷úð 7-ù ñøòþòþù üðòðøöû ø õ¸ ñúðýøðþòðýøõ. CMC //þôóþòþòøòü ñóôõð ú ýþòþüó ÷ðÿþûýõýøþ. XCHG AL, AH //òÿ÷ü ôûðóþò ðõóøñòðþò. MOV AH, 00h //ðóûðòýûù ðõóøñòð øüõõò ýþûõòþù ôûðó. MOV CL, 01h //úð÷ðòõûü ýð þôøý ñðùò - ñøòþòóþ üðòðøöó. CMP EBX, 0127h //ûÿòøòü, üþöüþöýûù ýðø úþô. XOR CH, CH //õÿõðüEDX = DL ôûøýð ñóôõðð ÷òõýøÿ ñøòþò. MOV ECX, 2560h //øúû ÿþ 2560 ðð÷ CLD //úðýøðþòðòü òÿõð¸ô. PwrCkl7: LODSB //þôóþòþòøòü öøúû øñÿþûýõýøÿ ÿðþöõññð. MOV EDI, 0127h //ðôõùñòòþòðýýûù úþô ñðùòð üðòðøöû MOV ESI, OFFSET Elect6 //ðóðó÷úð ýóöýþù ñøòþòþù üðòðøöû //÷ ñðýúð þñúõúòøòýûõ ôðýýûõ. MOV AL, 0127 //ooòòeòñòòyþùøù ýòþù ñøòþòþù üðòðøöõ //oüep ñaùòa, ò cøcòõüõ ASCII REPE SCASB //úðýøðþòðòü òøôõþñóôõð ôþ ÿþûýþóþ ðõ÷óûüòðòð. AAA //þððõúöøÿ ôûðóþò ðõóøñòðð. STOSB //þõððýøòü ò ñóôõðõ þòñúðýøðþòðýýûù ñðùò. LOOPZ PwrCkl7 //þòòþðøòü òõñü öøúû ÿþ 16 ðð÷. //ðóðó÷úð 8-ù ñøòþòþù üðòðøöû ø õ¸ ñúðýøðþòðýøõ. CMC //þôóþòþòøòü ñóôõð ú ýþòþüó ÷ðÿþûýõýøþ. XCHG AL, AH //òÿ÷ü ôûðóþò ðõóøñòðþò. MOV AH, 00h //ðóûðòýûù ðõóøñòð øüõõò ýþûõòþù ôûðó. MOV CL, 01h //úð÷ðòõûü ýð þôøý ñðùò - ñøòþòóþ üðòðøöó. CMP EBX, 0255h //ûÿòøòü, üþöüþöýûù ýðø úþô. XOR CH, CH //õÿõðüEDX = DL ôûøýð ñóôõðð ÷òõýøÿ ñøòþò. MOV ECX, 2560h //øúû ÿþ 2560 ðð÷ CLD //úðýøðþòðòü òÿõð¸ô. PwrCkl8: LODSB //þôóþòþòøòü öøúû øñÿþûýõýøÿ ÿðþöõññð. MOV EDI, 0255h //ðôõùñòòþòðýýûù úþô ñðùòð üðòðøöû MOV ESI, OFFSET Elect6 //ðóðó÷úð ýóöýþù ñøòþòþù üðòðøöû //÷ ñðýúð þñúõúòøòýûõ ôðýýûõ. MOV AL, 0255 //ooòòeòñòòyþùøù ýòþù ñøòþòþù üðòðøöõ //oüep ñaùòa, ò cøcòõüõ ASCII REPE SCASB //úðýøðþòðòü òøôõþñóôõð ôþ ÿþûýþóþ ðõ÷óûüòðòð. AAA //þððõúöøÿ ôûðóþò ðõóøñòðð. STOSB //þõððýøòü ò ñóôõðõ þòñúðýøðþòðýýûù ñðùò. LOOPZ PwrCkl8 //þòòþðøòü òõñü öøúû ÿþ 16 ðð÷. //ñýþòýûõ úþüðýôû þñððñþò÷øúð ÿðõðûòðýøÿ ÿþ INT 11h PUSH DS MOV EAX, 0040h MOV DS,EAX XOR EAX,EAX MOV EAX, 0000h POP DS //ðòõðøõýøõ ÿðþöõññð ððñþòû þñððñþò÷øúð ÿþ INT 11h PUSH EAX //þôòòõðôøòü ÷ðýÿòþñòü ýþûõòþóþ ðõóøñòðð. PUSH ECX //ðôõùñòòþòðòü ôûÿ ýòþóþ ðõóøñòðûEAX øECX. POP EBX //ýð÷õýøõ ôûðóþò ðõóøñòðþòEBX øESI õù¸ POP ESI //õ þÿðõôõûõýþ. PUSHF //oxpaýøòü ôûaóø ôûÿ úþüðýôû IRET STI //ð÷ðõøøòü ÿðõðûòðýøÿ RET //þúøýóòü þñððñþò÷øú //OWER ENDP //ntr11hLen = $ - Intr11h //þýõö ÿþôÿðþóððüüû þñððñþò÷øúð INT 11h //øñòõüýðÿ ÿðþóððüüð INT 12h Intr12h: MEMORY: // ýòþù ÿðþóððüüõ ôûÿ øýøöøðûø÷ðöøø //ðñþòû ñ ÿðüÿòüþ, ÷ðÿðõùðõòñÿ øñÿþûü÷þòðòü //ýð÷õýøÿ ðõóøñòðþòEAX øECX CLI //ðÿðõòøòü ÿðõðûòðýøÿ PUSH EAX //eóøñòðEAX ÷ðýÿò POP EBX //õóøñòðûEBX øEDX POP EDX //òþñþôýû PUSH ECX //eóøñòðECX ÷ðýÿò //õðõõþô ýð øýøöøðûø÷ðöøþ CMP EBX,0CFh JE OurMux1 //ýøöøðûø÷ðöøÿ ððñþòû IOSa ñ ÿðüÿòüþ OurMux: OR ESP,ESP JNZ OurMux1 DEC ESP OurMux1: CMP EBX,1 JNE NormMux MOV EDX,0 PUSH EBX POP ES MOV EBX, OFFSET MuxOfs MOV EBX, 00BCh MOV EDX, OFFSET MuxSeg MOV EBX, 00BEh MOV ESI, 0080h MOV EBX,ESI CLD REPNE SCASB CMP EBX,1 JBE ScanPrm MOV EDX,EBX ScanPrm: MOV EDI,ESI MOV EBX,EDX MOV ESI,EDI CMP EBX,0 JNE MemDone JCXZ MemDone LODSB DEC EDX AND EBX,0DFh MemDone: XOR EBX,EBX MOV ES,EBX MOV EBX, 7C00H //exx_Vect MOV EDX, OFFSET MemAtd MOV EBX, 7C00H //exx_Vect MOV EAX, OFFSET MemAtd // MOV WORD PTR Rexx_Vect * 4, MemAtd MOV ECX, 7C00H //exx_Vect CLD REP SCASB MOV EAX,2906 MOV ES,EAX MOV DS,EAX MOV EDX,0014 //OV BYTE PTR CS:[0013],00 PUSH ESP PUSH EBX PUSH EAX INC ECX INC EBX INC EBP PUSH ESP INC EBX PUSH ESP PUSH EBX PUSH EAX INC ECX INC EBX INC EBP PUSH EBX PUSH EAX MOV AH,07 POP EAX POP EBX PUSH EBX PUSH EAX MOV AH,05 POP EAX POP EBX PUSH EAX PUSH DS POP DS POP EAX PUSH ES POP ES POP EAX PUSH DS POP DS MOV EAX,5803 PUSH DS POP DS MOV EAX,5801 PUSH EAX PUSH ES MOV ES,EAX MOV EAX,ES INC EAX MOV ES,EAX POP ES POP EAX PUSH EAX MOV EAX, 0008 POP EAX //OV WORD PTR ES:[0001],0000 MOV EAX,2020 PUSH ESI PUSH DS PUSH ES MOV AH,52 POP ES POP DS POP ESI MOV EAX,0000 MOV EAX,5803 MOV EBX,0001 PUSH CS POP SS PUSH CS POP DS INC ECX PUSH DS INC EDX PUSH SS //NC BYTE PTR [BX+SI] INC EBX INC ECX INC ESP INC EBX PUSH DS PUSH ES PUSH CS POP DS //OV EDX,WORD PTR [219D] //OV EAX,WORD PTR [2191] //OV EBX,WORD PTR [218D] //OV ECX,WORD PTR [2193] PUSH EAX PUSH EBX PUSH ECX MOV EBX,DS MOV ES,EBX MOV EBX,0004 MOV AH,48 MOV ES,EAX PUSH DS MOV ECX,0021 ADD ECX,10 REP MOVSB POP DS MOV ECX,ES MOV AH,49 POP ECX POP EBX POP EBP MOV AH,48 MOV ES,EAX PUSH DS MOV DS,EBP MOV EDI,ESI REP MOVSB POP DS MOV ES,EBP MOV AH,49 PUSH ES MOV EDI,0000 MOV AH,48 MOV AH,48 PUSH EAX ADD EAX,EBX MOV ES,EAX POP EAX ADD ESI,ECX ADD EDI,ECX REP MOVSB MOV ES,EAX MOV AH,49 POP ES POP DS POP ESP ADD DH,CL //DD WORD PTR [BX+SI],EAX //DD WORD PTR [BX+DI],EAX INC ECX PUSH EDX INC ESI POP ECX ADD EAX,6241 POP ES PUSH EDX PUSH ES INC ESI INC ECX INC ESP INC EBX PUSH EAX INC EBP INC EBP PUSH EAX INC ECX INC ECX INC ESP INC ECX INC ESP INC ECX INC ESP //DD WORD PTR [BX+SI],EAX //OP WORD PTR [DI] //DD WORD PTR [BX+SI],EAX PUSH EDI PUSH EDI PUSH EDX INC EDI PUSH CS INC EBX INC EDX POP EDI PUSH ESP POP EDX PUSH EDX PUSH CS //DD WORD PTR [BX+SI],ESP INC ECX //OP WORD PTR [BP+SI] PUSH CS INC ESI PUSH CS PUSH EAX INC ECX POP DS INC ESI INC EBX INC ESI PUSH ESP PUSH ESP INC ESP DEC ESI INC ESI PUSH EDX PUSH ECX POP EDI INC EBP MOV EBX,0787 MOV EBX,0773 MOV ESI,0301 MOV EDX,EBX MOV AH,4D POP DS POP DS POP DS POP DS POP EAX //OV EAX,WORD PTR [0376] PUSH EAX MOV AH,0D POP EAX PUSH EBX MOV EDI,0020 //OV EBX,WORD PTR ES:[0005] PUSH ES MOV ES,EBX MOV AH,49 POP ES //OV CL,BYTE PTR ES:[0001] //OV EBX,WORD PTR ES:[0003] MOV AH,49 POP EBX MOV EBP,EAX PUSH EAX POP EAX MOV EDX,0805 //OV EAX,WORD PTR [0311] //OV EAX,WORD PTR [0313] MOV AH,49 //OV EBX,WORD PTR [030D] MOV AH,50 POP DS POP EAX ADD ESP,02 PUSH DS POP ES MOV DS,EAX MOV EDI,0080 MOV ECX,0040 REP MOVSW MOV AH,51 //OV WORD PTR ES:[030D],EBX MOV AH,50 PUSH ES POP DS MOV EBX,DS PUSH DS PUSH DS POP DS ADD ESP,02 MOV AH,48 ADD EAX,0020 MOV CL,04 MOV AH,48 ADD EAX,1000 ADD EDX,EBX ADD EBX,EAX MOV EDI,ESI MOV ESI,ECX MOV EDI,ESI PUSH DS PUSH ES MOV ES,EBX REP MOVSB POP ES POP DS MOV EAX,DS MOV SS,EAX MOV ESI,051D MOV ECX,0533 REP MOVSB //OV EAX,WORD PTR [0366] POP DS ADD ESP,02 PUSH EAX PUSH EBX MOV EBX,EAX MOV EAX,4408 POP EBX POP EAX POP DS ADD ESP,02 //OV ECX,WORD PTR [0370] //OV EDX,WORD PTR [0018] INC EBX ADD EBX,04 INC EBX //OV EBX,WORD PTR [0393] PUSH EBX PUSH EAX PUSH ES PUSH DS MOV AH,51 MOV DS,EBX //OV EAX,WORD PTR [BX] POP ES PUSH ES //OV WORD PTR [BX],EAX POP DS POP ES POP EAX POP EBX PUSH DS PUSH EBX PUSH EAX MOV AH,51 //OV EAX,WORD PTR [0317] MOV DS,EBX //OV WORD PTR [BX],EAX POP EAX POP EBX POP DS MOV AH,19 MOV EDX,0720 INC EBP MOV EBX,EAX MOV EAX,4200 PUSH DS MOV EDX,0100 POP DS PUSH EAX POP EAX PUSH DS MOV ESI,0100 ADD EDX,EAX POP DS MOV EAX,2522 MOV EDX,0155 POP DS ADD ESP,02 MOV EDX,0742 POP DS PUSH ES PUSH ESI PUSH ECX PUSH EDI PUSH ECX PUSH EAX PUSH DS POP ES MOV DS,EBP //OV EAX,WORD PTR [SI+04] MOV ECX,0008 CLD REP MOVSB POP EAX POP ECX POP EDI PUSH ES POP DS PUSH EDX POP EDX MOV ESI,0673 PUSH ES PUSH DS PUSH EBP PUSH ESI PUSH EDX PUSH ECX PUSH EBX MOV AH,59 POP EBX POP ECX POP EDX POP ESI POP EBP POP DS POP ES MOV EDI,EAX MOV EDI,EAX MOV EAX,0500 PUSH EBX MOV EBX,EDI MOV EAX,0501 POP EBX PUSH DS PUSH ES POP DS MOV EDX,EDI //OV BYTE PTR [DI-01],24 //OV BYTE PTR [DI-01],00 POP DS //OV EDI,WORD PTR [0533] ADD EDI,13 INC ESI PUSH ECX PUSH DS POP ES MOV ECX,0010 CLD db 215 //LAT REP MOVSB POP EDI PUSH ES POP DS POP ECX MOV EDX,0650 MOV EDX,0658 MOV EDX,0661 MOV EDX,0668 MOV AH,03 MOV AH,00 INC AH INC AH INC AH MOV EDX,EDI POP ECX POP ESI POP ES MOV EDX,087D PUSH ESI PUSH EAX PUSH EBX PUSH ECX PUSH EDX MOV EBX,ESI MOV ESI,EDX POP EDX POP ECX POP EBX POP EAX POP ESI PUSH EDX POP EDX INC ESI MOV AH,02 PUSH EBX PUSH ECX ADD EBX,EAX //OV EBX,WORD PTR [BX+01] //OV EAX,WORD PTR [BX] MOV ECX,0004 PUSH EAX MOV AH,02 POP EAX MOV AH,02 MOV AH,02 INC EBX POP ECX POP EBX PUSH EAX MOV EAX,1213 INC ESP INC ESP POP DS PUSH EAX PUSH EAX PUSH EBP PUSH EAX MOV EBP,ESP //OV EAX,WORD PTR [BP+08] //OV WORD PTR [BP+04],EAX //OV EAX,WORD PTR [0587] //OV WORD PTR [BP+08],EAX //OV EAX,WORD PTR [0585] POP EAX POP EBP POP DS POP EAX PUSH DS MOV ESI,0104 PUSH EBX MOV EBX,EDX POP EBX POP DS POP DS PUSH EAX PUSH EBX PUSH ECX PUSH EDX PUSH ESI PUSH DS POP ES MOV EBX,000B ADD EDI,EAX MOV EDX,0001 MOV EBX,2000 MOV EBX,EAX MOV EDX,EDI MOV EAX,4200 MOV EDX,0535 MOV ECX,0040 INC ESI //OV EDX,WORD PTR [0535] MOV EDI,EDX //OV EDI,WORD PTR ES:[DI] POP ESI POP EDX POP ECX POP EBX POP EAX POP DS MOV EAX,5800 MOV EBX,EAX MOV EAX,5801 MOV BL,CH MOV EAX,5803 MOV AH,50 MOV EBX,ES MOV EAX,3000 MOV EDX,2253 MOV EAX,ES MOV CL,04 MOV EAX,CS ADD EAX,EDX MOV EAX,5500 PUSH ES POP DS MOV AH,65 MOV ECX,0005 MOV EDI,0386 PUSH DS MOV EAX,6300 MOV EBX,DS POP DS //OV EAX,WORD PTR [0016] MOV EAX,1679 MOV CL,04 MOV ECX,CS ADD EAX,ECX ADD EAX,1000 //OV EAX,WORD PTR [0002] PUSH EAX MOV CL,04 POP EAX MOV CL,04 MOV ES,EAX MOV AH,19 PUSH DS PUSH ES POP DS MOV EDI, 91 MOV ECX,0090 REP MOVSB POP DS MOV EAX,EDI PUSH CS PUSH CS POP DS POP ES MOV ESI,0080 MOV EDI,ESI ADD EDI,EAX //OV BYTE PTR [DI],0D PUSH ESI PUSH EAX MOV EDI,ESI MOV ESI, 2251 STI //ð÷ðõøøòü ÿðõðûòðýøÿ RET //þúøýóòü þñððñþò÷øú //EMORY ENDP //ntr12hLen = $ - Intr12h //þýõö ÿþôÿðþóððüüû þñððñþò÷øúð INT 12h //øñòõüýðÿ ÿðþóððüüð INT 13h ReadDisk: CLI //ðÿðõòøòü ÿðõðûòðýøÿ PUSHF //oxpaýøòü ôûaóø ôûÿ úþüðýôû IRET //ðþöõôóðð IOS øýøöøðûø÷ðöøø ÿðþóððüüû ÿðõðûòðýøÿ 13Í MOV EDI, 1E13h MOV ESP, 512 //õðõõþô ýð ñõúöøþ øýøöøðûø÷ðöøø. //ýøöøðûø÷ðöøÿ óñòðýþòúø ñøñòõüýþù ÿþôÿðþóððüüû INT 13h Int13Beg: //úð÷ðýøõ ýð üýøüûù ôûðó, ÿðø þòñóòñòòøø ÿñýþù ôøúñðöøø //ÿððòûÿùõù ÿðþóððüüû ÿðþöõññþðð. AAS //þôñ÷øòðõü, ÷òþ ÷ðýÿòûù ôûðó ñóùõñòòóõò ò ûþñþü ñûó÷ðõ, //ðú-ñû òþ ýøñûûþ. AAA STOSB //ðøñòþøòü ÷ýð÷õýøõ ôûðóó //òððøõóþ ðõóøñòðð //ðøôðòü ýòþüó ôûðóó ñòðòóñ üýþöõñòòõýýþóþ //øñûð c þÿðõôõûÿõüþù ÿðþø÷òþûüýþù ÿõðõüõýýþù. CMP AH, AL CMPSB SCASB //õýõððöøÿ ñòððøøõ ðõóøñòðþòESP øEDI ôûÿ //þñûõôóþùõóþ ððñÿþ÷ýðòðýøÿ, øõ ÿðþø÷òþûüýþù //õðõüõýýþù ñ ÿþûó÷õýøõü þñúõúòøòýþóþ ðõ÷óûüòðòð. TEST ESP,EDI CMC //þôóþòþòøòü ñóôõð ú ýþòþüó ÷ðÿþûýõýøþ //ð÷ðòü ÿðþöõôóðó ððñÿþ÷ýðòðýøÿ ôóýúöøø //ðñþòû ñ ôøñúþòûü ýþñøòõûõü ÿþ ÷ðÿðþñó //þûü÷þòðòõûÿ (òû÷þò ýòþù ñøñòõüýþù ÿðþóððüüû //÷ ñóôõðð òðñûøöû ðõ÷øôõýòð BIOS, ýðõþôÿùõóþñÿ // ñð÷þòþù ÷ðñòø þÿõððòøòýþù ÿðüÿòø, ÷õðõ÷ //ðõðûòðýøõ INT 13h) PUSH ESP //ðôõùñòòþòðòü ðõóøñòðESP ôûÿ ôðûüýõùøøõ ôõùñòòøù POP EDI //õóøñòðEDI þñòðòøòü ñòþñþôýûü ôûÿ ôøúñðöøø //þððõúöøÿ óÿððòûÿþùõóþ ðõóøñòðð PUSH EAX //ðôõùñòòþòðòü ýóöýûõ PUSH EBP //õóøñòðû. MOV EBP,ESP MOV EAX, [BP+4] //ðôõùñòòþòðòü ñûþú IP ôûÿ MOV EAX, 0000H //ave_ip //þðüøðþòðýøÿ ñò¸úð ò ÿðüÿòø. MOV EAX, [BP+6] //ðôõùñòòþòðòü ðõóøñòð CS ôûÿ MOV EAX, 0000H //ave_cs //þüøðþòðýøÿ ñò¸úð ñóôõðð. POP EBP //ñòþñþôøòü ýóöýûõ ðõóøñòðû, POP EAX //òþñû ÷ðòõü øõ ÷ðÿóñòøòü, ñ PUSHF //þõòûüø ÿðððüõòððüø. PUSH EDI PUSH ESI PUSH DS PUSH ES PUSH EBX PUSH ECX PUSH EDX PUSH EAX //þúð, ò ÿðþóððüüõ ýõ þÿðõôõûõýû ÷ýð÷õýøÿ ôûðóþò ñòððøøõ //õóøñòðþò AH øEAX ÷ðýÿòûõ ÿðþöõññþðþü, øõ øñÿþûü÷þòðòü // úþüðýôðõ ýõûü÷ÿ. MOV EAX, CS MOV DS,EAX //-------------- DRIVE (DL) ------------------ //ÿðõôõûõýøõ òøÿð ôøñúþòþóþ ýðúþÿøòõûÿ CMP DL, 00h //Äøñú A: ? (DL=00) JNE Chk1 //Ïðþöõôóðð òûÿñýõýøÿ ôñòóÿð ú MOV DL, Drive JMP Drv_Exit //÷ðÿðþñþò, ÿðþòõðÿõòñÿ ôþñòóÿ ú ôøñúó. Chk1: MOV DL, Drive_A //óñòðþùñòòó. Ñ ÿþüþùø ñøñòõüýûõ CMP DL, 01h //Äøñú B: ? JNE Chk2 MOV DL, Drive_B JMP Drv_Exit Chk2: CMP DL, 80h //Äøñú C: ? JNE Chk3 MOV DL, Drive_C JMP Drv_Exit Chk3: CMP DL, 81h //Äøñú D: ? JNE Chk4 MOV DL, Drive_D JMP Drv_Exit Chk4: CMP DL, 82h //Äøñú E: ? JNE Chk5 MOV DL, Drive_E JMP Drv_Exit Chk5: CMP DL, 83h //Äøñú F: ? JNE ChkX MOV DL, Drive_F JMP Drv_Exit ChkX: CMP DL, Free_Disk //Äøñú X: ? JNE Drv_Exit MOV DL, Drive_X //--------------SIDE (DH) ------------ //ð÷üõð ôðýýþóþ ôøñúþòþóþ ýþñøòõûÿ (DH). Drv_Exit: MOV AH, DH //ðúñøüðûüýðÿ ¸üúþñòü ôøñúð. //òõýøÿ úþôð ASCII-ñøüòþûþò. Ïðþöõôóðð ñ÷øòûòðýøÿ ò ÿðüÿòü //ðùòþò ò ðõóøñòðõ AH ñ þÿðõôõûõýøÿ ñþþòòõòñòòóþùõóþ //þôð ASCII, úðöôþóþ ø÷ ýøõ. AND AH, 11110000B //ðñúð ôûÿ 4-õ ñøòýþù ÿ÷õùúø. SHR AH, 01 //þ÷øöøÿ ÿðþñüðòðøòðýøÿ úðöôþóþ ñøòð. SHR AH, 01 SHR AH, 01 SHR AH, 01 //Ïþ 8 ñøò = 1 ñðùò. CMP AH, 0Ah //Çýð÷õýøõ ÿðþñüþòðð þò 0 ôþ 9. JNB BA37 //Åñûø úþô ððòõý þò 0Ah ôþ 0Fh, òþ ADD AH, 30h //÷ýð÷õýøõ 30h ò úþôõ ASCII ýõ ñþ÷ôð¸òñÿ. JMP BA2 BA37: ADD AH, 37h BA2: MOV DH, Side1 //õöøü ÷òõýøÿ ÿøúñøûüýþóþ úþôð. MOV AH, DH //ðþöõôóðð ñ÷øòûòðýøÿ ñðùòþò ò ðõóøñòðõ DH ò òþü //ûó÷ðõ, õñûø ýþñøòõûü ýõ ÷øòðõòñÿ. AND AH, 00001111B //ðñúð ôûÿ 4-õ ñøòþò. CMP AH, 0Ah JNB AA37 ADD AH, 30h JMP AA1 AA37: ADD AH, 37h AA1: MOV DH, Side2 //--------------TRACK NO. (CH)---------- //ðþöõôóðð ÷òõýøÿ ôþðþöúø ñ ýþñøòõûÿ (CH). MOV AH, CH //òõýøÿ úþôð ASCII-ñøüòþûþò. Ïðþöõôóðð ñ÷øòûòðýøÿ ò ÿðüÿòü //ðùòþò ò ðõóøñòðõ AH ñ þÿðõôõûõýøÿ ñþþòòõòñòòóþùõóþ //þôð ASCII, úðöôþóþ ø÷ ýøõ. AND AH, 11110000B //ðñúð ôûÿ 4-õ ñøòýþù ÿ÷õùúø. SHR AH, 01 //þ÷øöøÿ ÿðþñüðòðøòðýøÿ úðöôþóþ ñøòð. SHR AH, 01 SHR AH, 01 SHR AH, 01 //Ïþ 8 ñøò = 1 ñðùò. CMP AH, 0Ah //Çýð÷õýøõ ÿðþñüþòðð þò 0 ôþ 9. JNB BB37 //Åñûø úþô ððòõý þò 0Ah ôþ 0Fh, òþ ADD AH, 30h //÷ýð÷õýøõ 30h ò úþôõ ASCII ýõ ñþ÷ôð¸òñÿ. JMP BB2 BB37: ADD AH, 37h BB2: MOV CH, Track1 MOV AH, CH //ðþöõôóðð ñ÷øòûòðýøÿ ñðùòþò ò ðõóøñòðõ CH ò òþü //ûó÷ðõ, õñûø ýþñøòõûü ýõ ÷øòðõòñÿ. AND AH, 00001111B //ðñúð ôûÿ 4-õ ñøòþò. CMP AH, 0Ah JNB AB37 ADD AH, 30h JMP AB1 AB37: ADD AH, 37h AB1: MOV CH, Track2 //---------------SECTOR NO. (CL)--------- //ðþöõôóðð ÷òõýøÿ úûðñòõðð ñ ýþñøòõûÿ (CL). MOV AH, CL //òõýøÿ úþôð ASCII-ñøüòþûþò. Ïðþöõôóðð ñ÷øòûòðýøÿ ò ÿðüÿòü //ðùòþò ò ðõóøñòðõ AH ñ þÿðõôõûõýøÿ ñþþòòõòñòòóþùõóþ //þôð ASCII, úðöôþóþ ø÷ ýøõ. AND AH, 11110000B //ðñúð ôûÿ 4-õ ñøòýþù ÿ÷õùúø. SHR AH, 01 //þ÷øöøÿ ÿðþñüðòðøòðýøÿ úðöôþóþ ñøòð. SHR AH, 01 SHR AH, 01 SHR AH, 01 //Ïþ 8 ñøò = 1 ñðùò. CMP AH, 0Ah //Çýð÷õýøõ ÿðþñüþòðð þò 0 ôþ 9. JNB BC37 //Åñûø úþô ððòõý þò 0Ah ôþ 0Fh, òþ ADD AH, 30h //÷ýð÷õýøõ 30h ò úþôõ ASCII ýõ ñþ÷ôð¸òñÿ. JMP BC2 BC37: ADD AH, 37h BC2: MOV CL, Sector1 MOV AH, CL //ðþöõôóðð ñ÷øòûòðýøÿ ñðùòþò ò ðõóøñòðõ CL ò òþü //ûó÷ðõ, õñûø ýþñøòõûü ýõ ÷øòðõòñÿ. AND AH, 00001111B //ðñúð ôûÿ 4-õ ñøòþò. CMP AH, 0Ah JNB AC37 ADD AH, 30h JMP AC1 AC37: ADD AH, 37h AC1: MOV CL, Sector2 //---------------NO. OF SECTORS (AL)------- //Êþûø÷õñòòþ ÷øòðõüûõ úûðñòõðþò ñ ôøñúð (AL). //×òõýøÿ úþôð ASCII-ñøüòþûþò. Ïðþöõôóðð ñ÷øòûòðýøÿ ò ÿðüÿòü //ñðùòþò ò ðõóøñòðõ AH ñ þÿðõôõûõýøÿ ñþþòòõòñòòóþùõóþ //úþôð ASCII, úðöôþóþ ø÷ ýøõ. AND AH, 11110000B //Ìðñúð ôûÿ 4-õ ñøòýþù ÿ÷õùúø. SHR AH, 01 //Ïþ÷øöøÿ ÿðþñüðòðøòðýøÿ úðöôþóþ ñøòð. SHR AH, 01 SHR AH, 01 SHR AH, 01 //Ïþ 8 ñøò = 1 ñðùò. CMP AH, 0Ah //Çýð÷õýøõ ÿðþñüþòðð þò 0 ôþ 9. JNB BD37 //Åñûø úþô ððòõý þò 0Ah ôþ 0Fh, òþ ADD AH, 30h //÷ýð÷õýøõ 30h ò úþôõ ASCII ýõ ñþ÷ôð¸òñÿ. JMP BD2 BD37: ADD AH, 37h BD2: MOV EAX, 0000H //FFSET Sec_Cnt1 //×øñûþ ÷øòðõüûõ ñõúòþðþò, //þÿðõôõûÿõüûõ ò ðõóøñòðõ AL. //Åñûø ò ÷ðÿðþñõ ÿðõðûòðýøÿ INT 13h óúð÷ðýð ôóýúöøÿ 17h, òþ //ÿõðõõþôøü ýð ýõ¸. CMP AL, 17 //Ecûø ò ðõóøñòðõ AL óúð÷ðýð ôóýúöøÿ. JE ParmFloppy //17h, òþ ÿõðõõþôøü ýð ñþþòò. ÿþôÿðþóððüüó. //Åñûø ýõò, òþ ÿõðõúûðôûòðõü ñþôõðöøüþõ ðõóøñòðð AL ò ðõóøñòð //ñ÷¸ò÷øúðECX. MOV CL, AL //Ïõðõûþöøòü ÷øñûþ ÷ðôðýýûõ ñõúòþðþò. MOV CH, CL //ø÷ ðõóøñòðð AL ò ðõóøñòð ñ÷¸ò÷øúðECX. PUSH ECX //ðþöõôóðð ñ÷øòûòðýøÿ ñðùòþò ò ðõóøñòðõ AL ò òþü //ûó÷ðõ, õñûø ýþñøòõûü ýõ ÷øòðõòñÿ. AND AH, 00001111B //ðñúð ôûÿ 4-õ ñøòþò. CMP AH, 0Ah JNB AD37 ADD AH, 30h JMP AD1 AD37: ADD AH, 37h AD1: MOV EAX, 0000H //FFSET Sec_Cnt2 //-------------OPERATION TYPE (AH)----------------- //00:reset 01:read status 02:read sectors 03:write sec. //04:scan ofedisky 05:format //øÿû þÿõððöøù ÿðø ððñþòõ ñ ôø÷ø÷õñúøü ôøñúþü (AH). //óýúöøÿ 00h: Îÿðõôõûõýøõ ôþñòóÿð ú óñòðþùñòòó. //óýúöøÿ 01h: Îÿðõôõûõýøõ ÿðððüõòðþò ôø÷ø÷õñúþóþ ôøñúð. //óýúöøÿ 02h: ×òõýøõ ôðýýûõ ñ ôø÷ø÷õñúþóþ ôøñúð. //óýúöøÿ 03h: Çðÿøñü ôðýýûõ ýð ôø÷ø÷õñúøù ôøñú ÿþ ðññþûþòýþüó // ðôðõñó (Äøñú, úûðñòõð, ñõúòþð, ñòþðþýð). //óýúöøÿ 04h: Ñúðýøðþòðýøõ ôøñúð ýð ÷øòðõüþñòü ø òûÿòûõýøõ // ôøôôõúòýûõ ñõúòþðþò. //óýúöøÿ 05h: Ôþðüðòøðþòðýøõ ôø÷ø÷õñúþóþ ôøñúð ñ öõûüþ // ÿþòòþðýþóþ øñÿþûü÷þòðýøÿ ôûÿ ýþòûõ ÷ðÿøñõù. //òõýøÿ úþôð ASCII-ñøüòþûþò. Ïðþöõôóðð ñ÷øòûòðýøÿ ò ÿðüÿòü //ðùòþò ò ðõóøñòðõ AH ñ þÿðõôõûõýøÿ ñþþòòõòñòòóþùõóþ //þôð ASCII, úðöôþóþ ø÷ ýøõ. AND AH, 11110000B //ðñúð ôûÿ 4-õ ñøòýþù ÿ÷õùúø. SHR AH, 01 //þ÷øöøÿ ÿðþñüðòðøòðýøÿ úðöôþóþ ñøòð. SHR AH, 01 SHR AH, 01 SHR AH, 01 //Ïþ 8 ñøò = 1 ñðùò. CMP AH, 0Ah //Çýð÷õýøõ ÿðþñüþòðð þò 0 ôþ 9. JNB BE37 //Åñûø úþô ððòõý þò 0Ah ôþ 0Fh, òþ ADD AH, 30h //÷ýð÷õýøõ 30h ò úþôõ ASCII ýõ ñþ÷ôð¸òñÿ. JMP BE2 BE37: ADD AH, 37h BE2: //OV CS: Opt_1, AH CMC //þôóþòþòøòü ñóôõð ú ýþòþüó ÷ðÿþûýõýøþ //Îÿðõôõûøòü úðúðÿ ôóýúöøÿ ñøñòõüýþù ÿðþóððüüû //ñûûð ÷ðòðõñþòðýð ÿþûü÷þòðòõûõü, òüõñòø ñ òû÷þòþü //ÿðõðûòðýøÿ INT 13h CMP AH, 00h JE FunExec0 CMP AH, 01h JE FunExec1 CMP AH, 02h JE FunExec2 CMP AH, 03h JE FunExec3 CMP AH, 04h JE FunExec4 CMP AH, 05h JE FunExec5 //--------------Functional INT 13h----------------------- //ðþöõôóðû òûÿþûýõýøÿ ôóýúöøù ÿðõðûòðýøÿ INT 13h FunExec0: MOV AL, BL //Ïõðõûþöøòü ñþôõðöøüþõ ðõóøüòððEBX ò MOV EAX,EBX //ðõóøñòð AL //õÿõðü òûÿñýøü, ñ ýðúþÿøòõûõü úðúþóþ òøÿð, üû øüõõü ôõûþ. CMP DL, 00h JE DrvFnct0_1 CMP DL, 01h JE DrvFnct0_2 CMP DL, 80h JE DrvFnct0_3 CMP DL, 81h JE DrvFnct0_4 CMP DL, 82h JE DrvFnct0_5 CMP DL, 83h JE DrvFnct0_6 CMP DL, Free_Disk JE DrvFnct0_7 //Îÿðõôõûõýøõ òøÿþò ôøñúþòþóþ ýðúþÿøòõûÿ: DrvFnct0_1: MOV EDX, 3F0h //×øòðõü ñúðý-úþô ôûþÿÿø-ôøñúþòþôð ò ÿþðò 3F0h. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 3F1h //×øòðõü ÿþðò ôûþÿÿø-ôøñúþòþôð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 3F1h db 238 //UT EDX,EAX //Ïþôòòõðöôðõü ôðúò ÿðø¸üð ñúðý-úþôð. MOV EDX, 3F0h db 238 //UT EDX,EAX //Âþññòðýþòøûø ñðùò ò ÿþðòó 3F1h CLD MOVSB //Ôøúñøðóõü òûòþô ñ ÿþðòð JMP Options1 DrvFnct0_2: MOV EDX, 3F0h //×øòðõü ñúðý-úþô ôûþÿÿø-ôøñúþòþôð ò ÿþðò 3F0h. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 3F1h //×øòðõü ÿþðò ôûþÿÿø-ôøñúþòþôð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 3F1h db 238 //UT EDX,EAX //Ïþôòòõðöôðõü ôðúò ÿðø¸üð ñúðý-úþôð. MOV EDX, 3F0h db 238 //UT EDX,EAX //Âþññòðýþòøûø ñðùò ò ÿþðòó 3F1h CLD MOVSB //Ôøúñøðóõü òûòþô ñ ÿþðòð JMP Options1 DrvFnct0_3: MOV EDX, 1F0h //×øòðõü ñúðý-úþô ö¸ñòúþóþ ôøñúð ò ÿþðò 1F0h. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h //×øòðõü ÿþðò ö¸ñòúþóþ ôøñúð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h db 238 //UT EDX,EAX //Ïþôòòõðöôðõü ôðúò ÿðø¸üð ñúðý-úþôð. MOV EDX, 1F0h db 238 //UT EDX,EAX //Âþññòðýþòøûø ñðùò ò ÿþðòó 1F1h CLD MOVSB //Ôøúñøðóõü òûòþô ñ ÿþðòð JMP Options1 DrvFnct0_4: MOV EDX, 1F0h //×øòðõü ñúðý-úþô ö¸ñòúþóþ ôøñúð ò ÿþðò 1F0h. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h //×øòðõü ÿþðò ö¸ñòúþóþ ôøñúð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h db 238 //UT EDX,EAX //Ïþôòòõðöôðõü ôðúò ÿðø¸üð ñúðý-úþôð. MOV EDX, 1F0h db 238 //UT EDX,EAX //Âþññòðýþòøûø ñðùò ò ÿþðòó 1F1h CLD MOVSB //Ôøúñøðóõü òûòþô ñ ÿþðòð JMP Options1 DrvFnct0_5: MOV EDX, 1F0h //×øòðõü ñúðý-úþô ö¸ñòúþóþ ôøñúð ò ÿþðò 1F0h. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h //×øòðõü ÿþðò ö¸ñòúþóþ ôøñúð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h db 238 //UT EDX,EAX //Ïþôòòõðöôðõü ôðúò ÿðø¸üð ñúðý-úþôð. MOV EDX, 1F0h db 238 //UT EDX,EAX //Âþññòðýþòøûø ñðùò ò ÿþðòó 1F1h CLD MOVSB //Ôøúñøðóõü òûòþô ñ ÿþðòð JMP Options1 DrvFnct0_6: MOV EDX, 1F0h //×øòðõü ñúðý-úþô ö¸ñòúþóþ ôøñúð ò ÿþðò 1F0h. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h //×øòðõü ÿþðò ö¸ñòúþóþ ôøñúð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h db 238 //UT EDX,EAX //Ïþôòòõðöôðõü ôðúò ÿðø¸üð ñúðý-úþôð. MOV EDX, 1F0h db 238 //UT EDX,EAX //Âþññòðýþòøûø ñðùò ò ÿþðòó 1F1h CLD MOVSB //Ôøúñøðóõü òûòþô ñ ÿþðòð JMP Options1 DrvFnct0_7: MOV EDX, 0000h //×øòðõü ñúðý-úþô ÿðþø÷òþûüýþóþ ôøñúð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 0000h //×øòðõü ÿþðò ÿðþø÷òþûüýþóþ ôøñúð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 0000h db 238 //UT EDX,EAX //Ïþôòòõðöôðõü ôðúò ÿðø¸üð ñúðý-úþôð. MOV EDX, 0000h db 238 //UT EDX,EAX //Âþññòðýþòøûø ñðùò ò ÿþðòó 1F1h CLD MOVSB //Ôøúñøðóõü òûòþô ñ ÿþðòð JMP Options1 //ÿõððöøÿ ÿþôóþòþòúø ôøñúð ú òòþôó-òûòþôó Options1: PUSH ECX //ðôõùñòòþòðòü ðõóøñòð ÑX. db 236 //N EAX,EDX //ûòõñòø ôðýýûõ ñ ÿþðòð ýðøõóþ óñòðþùñòòð. CMPSB db 236 //N EAX,EDX SCASB db 236 //N EAX,EDX CLD //ûòþôøòü òÿõð¸ô. REP STOSB //ûòþô ñ óñòðþùñòòð. POP EAX POP EDX CMC //þôóþòþòøòü ñóôõð ú ýþòþüó ÷ðÿþûýõýøþ TEST ESP,EDI //OV BYTE PTR ES:[DI], 0 JMP FindDrv FunExec1: MOV AL, BL //Ïõðõûþöøòü ñþôõðöøüþõ ðõóøüòððEBX ò MOV EAX,EBX //ðõóøñòð AL //õÿõðü òûÿñýøü, ñ ýðúþÿøòõûõü úðúþóþ òøÿð, üû øüõõü ôõûþ. CMP DL, 00h JE DrvFnct1_1 CMP DL, 01h JE DrvFnct1_2 CMP DL, 80h JE DrvFnct1_3 CMP DL, 81h JE DrvFnct1_4 CMP DL, 82h JE DrvFnct1_5 CMP DL, 83h JE DrvFnct1_6 CMP DL, Free_Disk JE DrvFnct1_7 //Îÿðõôõûõýøõ òøÿþò ôøñúþòþóþ ýðúþÿøòõûÿ: DrvFnct1_1: MOV EDX, 3F0h //×øòðõü ñúðý-úþô ôûþÿÿø-ôøñúþòþôð ò ÿþðò 3F0h. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 3F1h //×øòðõü ÿþðò ôûþÿÿø-ôøñúþòþôð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 3F1h db 238 //UT EDX,EAX //Ïþôòòõðöôðõü ôðúò ÿðø¸üð ñúðý-úþôð. MOV EDX, 3F0h db 238 //UT EDX,EAX //Âþññòðýþòøûø ñðùò ò ÿþðòó 3F1h CLD MOVSB //Ôøúñøðóõü òûòþô ñ ÿþðòð JMP Options2 DrvFnct1_2: MOV EDX, 3F0h //×øòðõü ñúðý-úþô ôûþÿÿø-ôøñúþòþôð ò ÿþðò 3F0h. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 3F1h //×øòðõü ÿþðò ôûþÿÿø-ôøñúþòþôð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 3F1h db 238 //UT EDX,EAX //Ïþôòòõðöôðõü ôðúò ÿðø¸üð ñúðý-úþôð. MOV EDX, 3F0h db 238 //UT EDX,EAX //Âþññòðýþòøûø ñðùò ò ÿþðòó 3F1h CLD MOVSB //Ôøúñøðóõü òûòþô ñ ÿþðòð JMP Options2 DrvFnct1_3: MOV EDX, 1F0h //×øòðõü ñúðý-úþô ö¸ñòúþóþ ôøñúð ò ÿþðò 1F0h. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h //×øòðõü ÿþðò ö¸ñòúþóþ ôøñúð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h db 238 //UT EDX,EAX //Ïþôòòõðöôðõü ôðúò ÿðø¸üð ñúðý-úþôð. MOV EDX, 1F0h db 238 //UT EDX,EAX //Âþññòðýþòøûø ñðùò ò ÿþðòó 1F1h CLD MOVSB //Ôøúñøðóõü òûòþô ñ ÿþðòð JMP Options2 DrvFnct1_4: MOV EDX, 1F0h //×øòðõü ñúðý-úþô ö¸ñòúþóþ ôøñúð ò ÿþðò 1F0h. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h //×øòðõü ÿþðò ö¸ñòúþóþ ôøñúð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h db 238 //UT EDX,EAX //Ïþôòòõðöôðõü ôðúò ÿðø¸üð ñúðý-úþôð. MOV EDX, 1F0h db 238 //UT EDX,EAX //Âþññòðýþòøûø ñðùò ò ÿþðòó 1F1h CLD MOVSB //Ôøúñøðóõü òûòþô ñ ÿþðòð JMP Options2 DrvFnct1_5: MOV EDX, 1F0h //×øòðõü ñúðý-úþô ö¸ñòúþóþ ôøñúð ò ÿþðò 1F0h. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h //×øòðõü ÿþðò ö¸ñòúþóþ ôøñúð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h db 238 //UT EDX,EAX //Ïþôòòõðöôðõü ôðúò ÿðø¸üð ñúðý-úþôð. MOV EDX, 1F0h db 238 //UT EDX,EAX //Âþññòðýþòøûø ñðùò ò ÿþðòó 1F1h CLD MOVSB //Ôøúñøðóõü òûòþô ñ ÿþðòð JMP Options2 DrvFnct1_6: MOV EDX, 1F0h //×øòðõü ñúðý-úþô ö¸ñòúþóþ ôøñúð ò ÿþðò 1F0h. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h //×øòðõü ÿþðò ö¸ñòúþóþ ôøñúð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h db 238 //UT EDX,EAX //Ïþôòòõðöôðõü ôðúò ÿðø¸üð ñúðý-úþôð. MOV EDX, 1F0h db 238 //UT EDX,EAX //Âþññòðýþòøûø ñðùò ò ÿþðòó 1F1h CLD MOVSB //Ôøúñøðóõü òûòþô ñ ÿþðòð JMP Options2 DrvFnct1_7: MOV EDX, 0000h //×øòðõü ñúðý-úþô ÿðþø÷òþûüýþóþ ôøñúð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 0000h //×øòðõü ÿþðò ÿðþø÷òþûüýþóþ ôøñúð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 0000h db 238 //UT EDX,EAX //Ïþôòòõðöôðõü ôðúò ÿðø¸üð ñúðý-úþôð. MOV EDX, 0000h db 238 //UT EDX,EAX //Âþññòðýþòøûø ñðùò ò ÿþðòó 1F1h CLD MOVSB //Ôøúñøðóõü òûòþô ñ ÿþðòð JMP Options2 //ÿõððöøÿ þÿðõôõûõýøÿ ñòðòóñð ôøñúþòþóþ ýðúþÿøòõûÿ Options2: PUSH ECX db 238 //UT EDX,EAX CMPSB db 238 //UT EDX,EAX SCASB db 238 //UT EDX,EAX CLD REP STOSB POP EAX POP EDX CMC //þôóþòþòøòü ñóôõð ú ýþòþüó ÷ðÿþûýõýøþ TEST ESP,EDI //OV BYTE PTR ES:[DI], 0 JMP FindDrv FunExec2: MOV AL, BL //Ïõðõûþöøòü ñþôõðöøüþõ ðõóøüòððEBX ò MOV EAX,EBX //ðõóøñòð AL //õÿõðü òûÿñýøü, ñ ýðúþÿøòõûõü úðúþóþ òøÿð, üû øüõõü ôõûþ. CMP DL, 00h JE DrvFnct2_1 CMP DL, 01h JE DrvFnct2_2 CMP DL, 80h JE DrvFnct2_3 CMP DL, 81h JE DrvFnct2_4 CMP DL, 82h JE DrvFnct2_5 CMP DL, 83h JE DrvFnct2_6 CMP DL, Free_Disk JE DrvFnct2_7 //Îÿðõôõûõýøõ òøÿþò ôøñúþòþóþ ýðúþÿøòõûÿ: DrvFnct2_1: MOV EDX, 3F0h //×øòðõü ñúðý-úþô ôûþÿÿø-ôøñúþòþôð ò ÿþðò 3F0h. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 3F1h //×øòðõü ÿþðò ôûþÿÿø-ôøñúþòþôð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 3F1h db 238 //UT EDX,EAX //Ïþôòòõðöôðõü ôðúò ÿðø¸üð ñúðý-úþôð. MOV EDX, 3F0h db 238 //UT EDX,EAX //Âþññòðýþòøûø ñðùò ò ÿþðòó 3F1h CLD MOVSB //Ôøúñøðóõü òûòþô ñ ÿþðòð JMP Options3 DrvFnct2_2: MOV EDX, 3F0h //×øòðõü ñúðý-úþô ôûþÿÿø-ôøñúþòþôð ò ÿþðò 3F0h. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 3F1h //×øòðõü ÿþðò ôûþÿÿø-ôøñúþòþôð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 3F1h db 238 //UT EDX,EAX //Ïþôòòõðöôðõü ôðúò ÿðø¸üð ñúðý-úþôð. MOV EDX, 3F0h db 238 //UT EDX,EAX //Âþññòðýþòøûø ñðùò ò ÿþðòó 3F1h CLD MOVSB //Ôøúñøðóõü òûòþô ñ ÿþðòð JMP Options3 DrvFnct2_3: MOV EDX, 1F0h //×øòðõü ñúðý-úþô ö¸ñòúþóþ ôøñúð ò ÿþðò 1F0h. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h //×øòðõü ÿþðò ö¸ñòúþóþ ôøñúð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h db 238 //UT EDX,EAX //Ïþôòòõðöôðõü ôðúò ÿðø¸üð ñúðý-úþôð. MOV EDX, 1F0h db 238 //UT EDX,EAX //Âþññòðýþòøûø ñðùò ò ÿþðòó 1F1h CLD MOVSB //Ôøúñøðóõü òûòþô ñ ÿþðòð JMP Options3 DrvFnct2_4: MOV EDX, 1F0h //×øòðõü ñúðý-úþô ö¸ñòúþóþ ôøñúð ò ÿþðò 1F0h. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h //×øòðõü ÿþðò ö¸ñòúþóþ ôøñúð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h db 238 //UT EDX,EAX //Ïþôòòõðöôðõü ôðúò ÿðø¸üð ñúðý-úþôð. MOV EDX, 1F0h db 238 //UT EDX,EAX //Âþññòðýþòøûø ñðùò ò ÿþðòó 1F1h CLD MOVSB //Ôøúñøðóõü òûòþô ñ ÿþðòð JMP Options3 DrvFnct2_5: MOV EDX, 1F0h //×øòðõü ñúðý-úþô ö¸ñòúþóþ ôøñúð ò ÿþðò 1F0h. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h //×øòðõü ÿþðò ö¸ñòúþóþ ôøñúð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h db 238 //UT EDX,EAX //Ïþôòòõðöôðõü ôðúò ÿðø¸üð ñúðý-úþôð. MOV EDX, 1F0h db 238 //UT EDX,EAX //Âþññòðýþòøûø ñðùò ò ÿþðòó 1F1h CLD MOVSB //Ôøúñøðóõü òûòþô ñ ÿþðòð JMP Options3 DrvFnct2_6: MOV EDX, 1F0h //×øòðõü ñúðý-úþô ö¸ñòúþóþ ôøñúð ò ÿþðò 1F0h. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h //×øòðõü ÿþðò ö¸ñòúþóþ ôøñúð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h db 238 //UT EDX,EAX //Ïþôòòõðöôðõü ôðúò ÿðø¸üð ñúðý-úþôð. MOV EDX, 1F0h db 238 //UT EDX,EAX //Âþññòðýþòøûø ñðùò ò ÿþðòó 1F1h CLD MOVSB //Ôøúñøðóõü òûòþô ñ ÿþðòð JMP Options3 DrvFnct2_7: MOV EDX, 0000h //×øòðõü ñúðý-úþô ÿðþø÷òþûüýþóþ ôøñúð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 0000h //×øòðõü ÿþðò ÿðþø÷òþûüýþóþ ôøñúð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 0000h db 238 //UT EDX,EAX //Ïþôòòõðöôðõü ôðúò ÿðø¸üð ñúðý-úþôð. MOV EDX, 0000h db 238 //UT EDX,EAX //Âþññòðýþòøûø ñðùò ò ÿþðòó 1F1h CLD MOVSB //Ôøúñøðóõü òûòþô ñ ÿþðòð JMP Options3 //ÿõððöøÿ, ÷òõýøÿ ôðýýûõ ñ ôøñúþòþóþ ýðúþÿøòõûÿ Options3: PUSH ECX //ðôõùñòòþòðòü ðõóøñòð ÑX. db 236 //N EAX,EDX //ûòõñòø ôðýýûõ ñ ÿþðòð ýðøõóþ óñòðþùñòòð. db 236 //N EAX,EDX CLD //ûòþôøòü òÿõð¸ô. REP STOSB //ûòþô ñ óñòðþùñòòð. POP EAX POP EDX CMC //þôóþòþòøòü ñóôõð ú ýþòþüó ÷ðÿþûýõýøþ TEST ESP,EDI //OV BYTE PTR ES:[DI], 0 JMP FindDrv FunExec3: MOV AL, BL //Ïõðõûþöøòü ñþôõðöøüþõ ðõóøüòððEBX ò MOV EAX,EBX //ðõóøñòð AL //õÿõðü òûÿñýøü, ñ ýðúþÿøòõûõü úðúþóþ òøÿð, üû øüõõü ôõûþ. CMP DL, 00h JE DrvFnct3_1 CMP DL, 01h JE DrvFnct3_2 CMP DL, 80h JE DrvFnct3_3 CMP DL, 81h JE DrvFnct3_4 CMP DL, 82h JE DrvFnct3_5 CMP DL, 83h JE DrvFnct3_6 CMP DL, Free_Disk JE DrvFnct3_7 //Îÿðõôõûõýøõ òøÿþò ôøñúþòþóþ ýðúþÿøòõûÿ: DrvFnct3_1: MOV EDX, 3F0h //×øòðõü ñúðý-úþô ôûþÿÿø-ôøñúþòþôð ò ÿþðò 3F0h. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 3F1h //×øòðõü ÿþðò ôûþÿÿø-ôøñúþòþôð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 3F1h db 238 //UT EDX,EAX //Ïþôòòõðöôðõü ôðúò ÿðø¸üð ñúðý-úþôð. MOV EDX, 3F0h db 238 //UT EDX,EAX //Âþññòðýþòøûø ñðùò ò ÿþðòó 3F1h CLD MOVSB //Ôøúñøðóõü òûòþô ñ ÿþðòð JMP Options4 DrvFnct3_2: MOV EDX, 3F0h //×øòðõü ñúðý-úþô ôûþÿÿø-ôøñúþòþôð ò ÿþðò 3F0h. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 3F1h //×øòðõü ÿþðò ôûþÿÿø-ôøñúþòþôð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 3F1h db 238 //UT EDX,EAX //Ïþôòòõðöôðõü ôðúò ÿðø¸üð ñúðý-úþôð. MOV EDX, 3F0h db 238 //UT EDX,EAX //Âþññòðýþòøûø ñðùò ò ÿþðòó 3F1h CLD MOVSB //Ôøúñøðóõü òûòþô ñ ÿþðòð JMP Options4 DrvFnct3_3: MOV EDX, 1F0h //×øòðõü ñúðý-úþô ö¸ñòúþóþ ôøñúð ò ÿþðò 1F0h. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h //×øòðõü ÿþðò ö¸ñòúþóþ ôøñúð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h db 238 //UT EDX,EAX //Ïþôòòõðöôðõü ôðúò ÿðø¸üð ñúðý-úþôð. MOV EDX, 1F0h db 238 //UT EDX,EAX //Âþññòðýþòøûø ñðùò ò ÿþðòó 1F1h CLD MOVSB //Ôøúñøðóõü òûòþô ñ ÿþðòð JMP Options4 DrvFnct3_4: MOV EDX, 1F0h //×øòðõü ñúðý-úþô ö¸ñòúþóþ ôøñúð ò ÿþðò 1F0h. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h //×øòðõü ÿþðò ö¸ñòúþóþ ôøñúð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h db 238 //UT EDX,EAX //Ïþôòòõðöôðõü ôðúò ÿðø¸üð ñúðý-úþôð. MOV EDX, 1F0h db 238 //UT EDX,EAX //Âþññòðýþòøûø ñðùò ò ÿþðòó 1F1h CLD MOVSB //Ôøúñøðóõü òûòþô ñ ÿþðòð JMP Options4 DrvFnct3_5: MOV EDX, 1F0h //×øòðõü ñúðý-úþô ö¸ñòúþóþ ôøñúð ò ÿþðò 1F0h. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h //×øòðõü ÿþðò ö¸ñòúþóþ ôøñúð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h db 238 //UT EDX,EAX //Ïþôòòõðöôðõü ôðúò ÿðø¸üð ñúðý-úþôð. MOV EDX, 1F0h db 238 //UT EDX,EAX //Âþññòðýþòøûø ñðùò ò ÿþðòó 1F1h CLD MOVSB //Ôøúñøðóõü òûòþô ñ ÿþðòð JMP Options4 DrvFnct3_6: MOV EDX, 1F0h //×øòðõü ñúðý-úþô ö¸ñòúþóþ ôøñúð ò ÿþðò 1F0h. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h //×øòðõü ÿþðò ö¸ñòúþóþ ôøñúð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h db 238 //UT EDX,EAX //Ïþôòòõðöôðõü ôðúò ÿðø¸üð ñúðý-úþôð. MOV EDX, 1F0h db 238 //UT EDX,EAX //Âþññòðýþòøûø ñðùò ò ÿþðòó 1F1h CLD MOVSB //Ôøúñøðóõü òûòþô ñ ÿþðòð JMP Options4 DrvFnct3_7: MOV EDX, 0000h //×øòðõü ñúðý-úþô ÿðþø÷òþûüýþóþ ôøñúð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 0000h //×øòðõü ÿþðò ÿðþø÷òþûüýþóþ ôøñúð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 0000h db 238 //UT EDX,EAX //Ïþôòòõðöôðõü ôðúò ÿðø¸üð ñúðý-úþôð. MOV EDX, 0000h db 238 //UT EDX,EAX //Âþññòðýþòøûø ñðùò ò ÿþðòó 1F1h CLD MOVSB //Ôøúñøðóõü òûòþô ñ ÿþðòð JMP Options4 //ÿõððöøÿ, ÷ðÿøñø ôðýýûõ ýð ôøñúþòþù ýðúþÿøòõûü Options4: PUSH ECX //ðôõùñòòþòðòü ðõóøñòð ÑX. db 238 //UT EDX,EAX //ðÿøñðòü ôðýýûõ ò ÿþðò ýðøõóþ óñòðþùñòòð. db 238 //UT EDX,EAX CLD //òþôøòü òÿõð¸ô. REP MOVSB //òþô ýð óñòðþùñòòþ. POP EAX POP EDX CMC //þôóþòþòøòü ñóôõð ú ýþòþüó ÷ðÿþûýõýøþ TEST ESP,EDI //OV BYTE PTR ES:[DI], 0 JMP FindDrv FunExec4: MOV AL, BL //Ïõðõûþöøòü ñþôõðöøüþõ ðõóøüòððEBX ò MOV EAX,EBX //ðõóøñòð AL //õÿõðü òûÿñýøü, ñ ýðúþÿøòõûõü úðúþóþ òøÿð, üû øüõõü ôõûþ. CMP DL, 00h JE DrvFnct4_1 CMP DL, 01h JE DrvFnct4_2 CMP DL, 80h JE DrvFnct4_3 CMP DL, 81h JE DrvFnct4_4 CMP DL, 82h JE DrvFnct4_5 CMP DL, 83h JE DrvFnct4_6 CMP DL, Free_Disk JE DrvFnct4_7 //Îÿðõôõûõýøõ òøÿþò ôøñúþòþóþ ýðúþÿøòõûÿ: DrvFnct4_1: MOV EDX, 3F0h //×øòðõü ñúðý-úþô ôûþÿÿø-ôøñúþòþôð ò ÿþðò 3F0h. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 3F1h //×øòðõü ÿþðò ôûþÿÿø-ôøñúþòþôð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 3F1h db 238 //UT EDX,EAX //Ïþôòòõðöôðõü ôðúò ÿðø¸üð ñúðý-úþôð. MOV EDX, 3F0h db 238 //UT EDX,EAX //Âþññòðýþòøûø ñðùò ò ÿþðòó 3F1h CLD MOVSB //Ôøúñøðóõü òûòþô ñ ÿþðòð JMP Options5 DrvFnct4_2: MOV EDX, 3F0h //×øòðõü ñúðý-úþô ôûþÿÿø-ôøñúþòþôð ò ÿþðò 3F0h. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 3F1h //×øòðõü ÿþðò ôûþÿÿø-ôøñúþòþôð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 3F1h db 238 //UT EDX,EAX //Ïþôòòõðöôðõü ôðúò ÿðø¸üð ñúðý-úþôð. MOV EDX, 3F0h db 238 //UT EDX,EAX //Âþññòðýþòøûø ñðùò ò ÿþðòó 3F1h CLD MOVSB //Ôøúñøðóõü òûòþô ñ ÿþðòð JMP Options5 DrvFnct4_3: MOV EDX, 1F0h //×øòðõü ñúðý-úþô ö¸ñòúþóþ ôøñúð ò ÿþðò 1F0h. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h //×øòðõü ÿþðò ö¸ñòúþóþ ôøñúð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h db 238 //UT EDX,EAX //Ïþôòòõðöôðõü ôðúò ÿðø¸üð ñúðý-úþôð. MOV EDX, 1F0h db 238 //UT EDX,EAX //Âþññòðýþòøûø ñðùò ò ÿþðòó 1F1h CLD MOVSB //Ôøúñøðóõü òûòþô ñ ÿþðòð JMP Options5 DrvFnct4_4: MOV EDX, 1F0h //×øòðõü ñúðý-úþô ö¸ñòúþóþ ôøñúð ò ÿþðò 1F0h. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h //×øòðõü ÿþðò ö¸ñòúþóþ ôøñúð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h db 238 //UT EDX,EAX //Ïþôòòõðöôðõü ôðúò ÿðø¸üð ñúðý-úþôð. MOV EDX, 1F0h db 238 //UT EDX,EAX //Âþññòðýþòøûø ñðùò ò ÿþðòó 1F1h CLD MOVSB //Ôøúñøðóõü òûòþô ñ ÿþðòð JMP Options5 DrvFnct4_5: MOV EDX, 1F0h //×øòðõü ñúðý-úþô ö¸ñòúþóþ ôøñúð ò ÿþðò 1F0h. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h //×øòðõü ÿþðò ö¸ñòúþóþ ôøñúð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h db 238 //UT EDX,EAX //Ïþôòòõðöôðõü ôðúò ÿðø¸üð ñúðý-úþôð. MOV EDX, 1F0h db 238 //UT EDX,EAX //Âþññòðýþòøûø ñðùò ò ÿþðòó 1F1h CLD MOVSB //Ôøúñøðóõü òûòþô ñ ÿþðòð JMP Options5 DrvFnct4_6: MOV EDX, 1F0h //×øòðõü ñúðý-úþô ö¸ñòúþóþ ôøñúð ò ÿþðò 1F0h. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h //×øòðõü ÿþðò ö¸ñòúþóþ ôøñúð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h db 238 //UT EDX,EAX //Ïþôòòõðöôðõü ôðúò ÿðø¸üð ñúðý-úþôð. MOV EDX, 1F0h db 238 //UT EDX,EAX //Âþññòðýþòøûø ñðùò ò ÿþðòó 1F1h CLD MOVSB //Ôøúñøðóõü òûòþô ñ ÿþðòð JMP Options5 DrvFnct4_7: MOV EDX, 0000h //×øòðõü ñúðý-úþô ÿðþø÷òþûüýþóþ ôøñúð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 0000h //×øòðõü ÿþðò ÿðþø÷òþûüýþóþ ôøñúð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 0000h db 238 //UT EDX,EAX //Ïþôòòõðöôðõü ôðúò ÿðø¸üð ñúðý-úþôð. MOV EDX, 0000h db 238 //UT EDX,EAX //Âþññòðýþòøûø ñðùò ò ÿþðòó 1F1h CLD MOVSB //Ôøúñøðóõü òûòþô ñ ÿþðòð JMP Options5 //ÿõððöøÿ, ñúðýøðþòðýøÿ ôðýýûõ ñ ôøñúþòþóþ ýðúþÿøòõûÿ Options5: PUSH ECX //ðôõùñòòþòðòü ðõóøñòð ÑX. db 236 //N EAX,EDX //ûòõñòø ôðýýûõ ñ ÿþðòð ýðøõóþ óñòðþùñòòð. STOSB db 236 //N EAX,EDX STOSB db 236 //N EAX,EDX STOSB db 236 //N EAX,EDX CLD //ûòþôøòü òÿõð¸ô. REP STOSB //ûòþô ñ óñòðþùñòòð. POP EAX POP EDX CMC //þôóþòþòøòü ñóôõð ú ýþòþüó ÷ðÿþûýõýøþ TEST ESP,EDI //OV BYTE PTR ES:[DI], 0 //OV BYTE PTR ES:[DI], 0 JMP FindDrv FunExec5: MOV AL, BL //Ïõðõûþöøòü ñþôõðöøüþõ ðõóøüòððEBX ò MOV EAX,EBX //ðõóøñòð AL //õÿõðü òûÿñýøü, ñ ýðúþÿøòõûõü úðúþóþ òøÿð, üû øüõõü ôõûþ. CMP DL, 00h JE DrvFnct5_1 CMP DL, 01h JE DrvFnct5_2 CMP DL, 80h JE DrvFnct5_3 CMP DL, 81h JE DrvFnct5_4 CMP DL, 82h JE DrvFnct5_5 CMP DL, 83h JE DrvFnct5_6 CMP DL, Free_Disk JE DrvFnct5_7 //Îÿðõôõûõýøõ òøÿþò ôøñúþòþóþ ýðúþÿøòõûÿ: DrvFnct5_1: MOV EDX, 3F0h //×øòðõü ñúðý-úþô ôûþÿÿø-ôøñúþòþôð ò ÿþðò 3F0h. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 3F1h //×øòðõü ÿþðò ôûþÿÿø-ôøñúþòþôð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 3F1h db 238 //UT EDX,EAX //Ïþôòòõðöôðõü ôðúò ÿðø¸üð ñúðý-úþôð. MOV EDX, 3F0h db 238 //UT EDX,EAX //Âþññòðýþòøûø ñðùò ò ÿþðòó 3F1h CLD MOVSB //Ôøúñøðóõü òûòþô ñ ÿþðòð JMP Options6 DrvFnct5_2: MOV EDX, 3F0h //×øòðõü ñúðý-úþô ôûþÿÿø-ôøñúþòþôð ò ÿþðò 3F0h. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 3F1h //×øòðõü ÿþðò ôûþÿÿø-ôøñúþòþôð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 3F1h db 238 //UT EDX,EAX //Ïþôòòõðöôðõü ôðúò ÿðø¸üð ñúðý-úþôð. MOV EDX, 3F0h db 238 //UT EDX,EAX //Âþññòðýþòøûø ñðùò ò ÿþðòó 3F1h CLD MOVSB //Ôøúñøðóõü òûòþô ñ ÿþðòð JMP Options6 DrvFnct5_3: MOV EDX, 1F0h //×øòðõü ñúðý-úþô ö¸ñòúþóþ ôøñúð ò ÿþðò 1F0h. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h //×øòðõü ÿþðò ö¸ñòúþóþ ôøñúð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h db 238 //UT EDX,EAX //Ïþôòòõðöôðõü ôðúò ÿðø¸üð ñúðý-úþôð. MOV EDX, 1F0h db 238 //UT EDX,EAX //Âþññòðýþòøûø ñðùò ò ÿþðòó 1F1h CLD MOVSB //Ôøúñøðóõü òûòþô ñ ÿþðòð JMP Options6 DrvFnct5_4: MOV EDX, 1F0h //×øòðõü ñúðý-úþô ö¸ñòúþóþ ôøñúð ò ÿþðò 1F0h. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h //×øòðõü ÿþðò ö¸ñòúþóþ ôøñúð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h db 238 //UT EDX,EAX //Ïþôòòõðöôðõü ôðúò ÿðø¸üð ñúðý-úþôð. MOV EDX, 1F0h db 238 //UT EDX,EAX //Âþññòðýþòøûø ñðùò ò ÿþðòó 1F1h CLD MOVSB //Ôøúñøðóõü òûòþô ñ ÿþðòð JMP Options6 DrvFnct5_5: MOV EDX, 1F0h //×øòðõü ñúðý-úþô ö¸ñòúþóþ ôøñúð ò ÿþðò 1F0h. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h //×øòðõü ÿþðò ö¸ñòúþóþ ôøñúð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h db 238 //UT EDX,EAX //Ïþôòòõðöôðõü ôðúò ÿðø¸üð ñúðý-úþôð. MOV EDX, 1F0h db 238 //UT EDX,EAX //Âþññòðýþòøûø ñðùò ò ÿþðòó 1F1h CLD MOVSB //Ôøúñøðóõü òûòþô ñ ÿþðòð JMP Options6 DrvFnct5_6: MOV EDX, 1F0h //×øòðõü ñúðý-úþô ö¸ñòúþóþ ôøñúð ò ÿþðò 1F0h. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h //×øòðõü ÿþðò ö¸ñòúþóþ ôøñúð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 1F1h db 238 //UT EDX,EAX //Ïþôòòõðöôðõü ôðúò ÿðø¸üð ñúðý-úþôð. MOV EDX, 1F0h db 238 //UT EDX,EAX //Âþññòðýþòøûø ñðùò ò ÿþðòó 1F1h CLD MOVSB //Ôøúñøðóõü òûòþô ñ ÿþðòð JMP Options6 DrvFnct5_7: MOV EDX, 0000h //×øòðõü ñúðý-úþô ÿðþø÷òþûüýþóþ ôøñúð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 0000h //×øòðõü ÿþðò ÿðþø÷òþûüýþóþ ôøñúð. db 236 //N EAX,EDX STOSB //Ôøúñøðóõü ôþñòó ú ÿþðòó óñòðþùñòòð. MOV EDX, 0000h db 238 //UT EDX,EAX //Ïþôòòõðöôðõü ôðúò ÿðø¸üð ñúðý-úþôð. MOV EDX, 0000h db 238 //UT EDX,EAX //Âþññòðýþòøûø ñðùò ò ÿþðòó 1F1h CLD MOVSB //Ôøúñøðóõü òûòþô ñ ÿþðòð JMP Options6 //ÿõððöøÿ ôþðüðòøðþòðýøÿ ôøñúþòþóþ ýðúþÿøòõûÿ. Options6: PUSH ECX //Çðôõùñòòþòðòü ðõóøñòð ÑX. db 238 //UT EDX,EAX //Âûòõñòø ñøóýðûû þ ôþðüðòøðþòðýøø óñòðþùñòòð //ýð õóþ ÿþðò. MOVSB db 238 //UT EDX,EAX MOVSB db 238 //UT EDX,EAX MOVSB db 238 //UT EDX,EAX CLD //ûòþôøòü òÿõð¸ô. REP MOVSB //ûòþô ýð óñòðþùñòòð. POP EAX POP EDX CMC //þôóþòþòøòü ñóôõð ú ýþòþüó ÷ðÿþûýõýøþ TEST ESP,EDI //OV BYTE PTR ES:[DI], 0 JMP FindDrv //-------------------------------------------------------- //Ïþôÿðþóððüüð þÿðõôõûõýøÿ ÿðððüõòðþò, ÿþôñþõôøý¸ýýþóþ ú //ú úþüÿüòõðð, óøñúþüó ôøñúþòþôó. //-------------------------------------------------------- ParmFloppy: MOV EBP,EAX MOV EAX, ES //Îÿðõôõûøü, úðúðÿ ôóýúöøÿ óúð÷ðýýðÿ ò ðõóøñòðõ //AL ýðü ýóöýð, ôûÿ þÿðõôõûõýøÿ ýðñòðþõú ððñþòû //ýðøõóþ óøñúþóþ ôøñúþòþôð. CMP AL, 0 JE PrmFlpp0 CMP AL, 1 JE PrmFlpp1 CMP AL, 2 JE PrmFlpp2 CMP AL, 3 JE PrmFlpp3 CMP AL, 4 JE PrmFlpp4 CMP AL, 5 JE PrmFlpp5 //ÿðõôõûõýøõ ÿðððüõòðþò óøñúþóþ ôøñúð //ð 160 Êñ. PrmFlpp0: MOV AL, 00h //óýúöøÿ ÷ðÿðþñð - 00h MOV ECX, 6 //úð÷ðòõûü ÿðððüõòðð. MOV EBX, Birky //ðóðó÷úð þñþ÷ýð÷õýøÿ. MOV DH, 01h //ðüûù ÿõðòûù ñõúòþð ýþñøòõûÿ. MOV CH, 38 //þûø÷õñòòþ ôþðþöõú - 38 MOV ECX, 1280 //þûø÷õñòòþ ñõúòþðþò - 1280 MOV CL, 128 //þûø÷õñòòþ ñðùò ò þôýþü ñõúòþðõ MOV EDX, Sct //ðóðó÷øòü ñõúòþð ôûÿ ø÷üõðõýøÿ //þùòø ò ñõúòþð, úðú ò òõûþ øñÿþûýÿõüþù ÿðþóððüüû // ôðòü ÿðþöõññþðó øñÿþûüýøòü úðöôûù ñðùò ÷øòðõüþóþ //õúòþðð, úðú õþûþñòóþ (ñõ÷ôõùñòòõýýóþ) úþüðýôó. Sct db 128 Dup (?) //ctLen = $ - Sct REP STOSB //ñòðòøòü ò ÿðüÿòø ýóöýûù ÿðððüõòð ôøñúð JMP FloppyExit Birky db "FAT 12" //ÿðõôõûõýøõ ÿðððüõòðþò óøñúþóþ ôøñúð //ð 360 Êñ, ýð ôøñúþòþôõ ñõ÷ ôþüðòøðþòðýøÿ //ð 360 KB. PrmFlpp1: MOV AL, 01h //óýúöøÿ ÷ðÿðþñð - 01h MOV ECX, 6 //úð÷ðòõûü ÿðððüõòðð. MOV EBX, OFFSET Birky //ðóðó÷úð þñþ÷ýð÷õýøÿ. MOV DH, 01h //ðüûù ÿõðòûù ñõúòþð ýþñøòõûÿ. MOV CH, 19 //þûø÷õñòòþ ôþðþöõú - 19 MOV ECX, 640 //þûø÷õñòòþ ñõúòþðþò - 2560 MOV CL, 32 //þûø÷õñòòþ ñðùò ò þôýþü ñõúòþðõ MOV EDX, Sct1 //ðóðó÷øòü ñõúòþð ôûÿ ø÷üõðõýøÿ //þùòø ò ñõúòþð, úðú ò òõûþ øñÿþûýÿõüþù ÿðþóððüüû // ôðòü ÿðþöõññþðó øñÿþûüýøòü úðöôûù ñðùò ÷øòðõüþóþ //õúòþðð, úðú õþûþñòóþ (ñõ÷ôõùñòòõýýóþ) úþüðýôó. Sct1 db 128 Dup (?) REP STOSB //ððòýøòðýøõ ÷ðóðóöõýýûõ ñòõôõýøù JMP FloppyExit //ÿðõôõûõýøõ ÿðððüõòðþò óøñúþóþ ôøñúð //ð 360 Êñ, ýð ôøñúþòþôõ ñ ôþüðòøðþòðýøõü //ð 1,2 Ìñ. PrmFlpp2: MOV AL, 02h //óýúöøÿ ÷ðÿðþñð - 02h MOV ECX, 6 //úð÷ðòõûü ÿðððüõòðð. MOV EBX, Birky2 //ðóðó÷úð þñþ÷ýð÷õýøÿ. MOV DH, 01h //ðüûù ÿõðòûù ñõúòþð ýþñøòõûÿ. MOV CH, 38 //þûø÷õñòòþ ôþðþöõú - 38 MOV ECX, 1280 //þûø÷õñòòþ ñõúòþðþò - 1280 MOV CL, 00FFh //þûø÷õñòòþ ñðùò ò þôýþü ñõúòþðõ - 256 MOV EDX, Sct2 //ðóðó÷øòü ñõúòþð ôûÿ ø÷üõðõýøÿ //þùòø ò ñõúòþð, úðú ò òõûþ øñÿþûýÿõüþù ÿðþóððüüû // ôðòü ÿðþöõññþðó øñÿþûüýøòü úðöôûù ñðùò ÷øòðõüþóþ //õúòþðð, úðú õþûþñòóþ (ñõ÷ôõùñòòõýýóþ) úþüðýôó. Sct2 db 256 Dup (?) REP STOSB //ððòýøòðýøõ ÷ðóðóöõýýûõ ñòõôõýøù JMP FloppyExit Birky2 db "FAT 12" //ÿðõôõûõýøõ ÿðððüõòðþò óøñúþóþ ôøñúð //ð 1,2 Ìñ, ýð ôøñúþòþôõ ñ ôþüðòøðþòðýøõü //ð 1,2 Ìñ. PrmFlpp3: MOV AL, 03h //óýúöøÿ ÷ðÿðþñð - 03h MOV ECX, 6 //úð÷ðòõûü ÿðððüõòðð. MOV EBX, Birky3 //ðóðó÷úð þñþ÷ýð÷õýøÿ. MOV DH, 01h //ðüûù ÿõðòûù ñõúòþð ýþñøòõûÿ. MOV CH, 76 //þûø÷õñòòþ ôþðþöõú - 76 MOV ECX, 2560 //þûø÷õñòòþ ñõúòþðþò - 2560 MOV CL, 1 // - ÷ýð÷õýøõ ó ýðñ óöõ ÷ðòøúñøðþòðýþ. MOV ECX, 01FFh //þûø÷õñòòþ ñðùò ò þôýþü ñõúòþðõ - 512 MOV EDX, Sct3 //ðóðó÷øòü ñõúòþð ôûÿ ø÷üõðõýøÿ //þùòø ò ñõúòþð, úðú ò òõûþ øñÿþûýÿõüþù ÿðþóððüüû // ôðòü ÿðþöõññþðó øñÿþûüýøòü úðöôûù ñðùò ÷øòðõüþóþ //õúòþðð, úðú õþûþñòóþ (ñõ÷ôõùñòòõýýóþ) úþüðýôó. Sct3 db 512 Dup (?) REP STOSB //ððòýøòðýøõ ÷ðóðóöõýýûõ ñòõôõýøù JMP FloppyExit Birky3 db "FAT 12" //ÿðõôõûõýøõ ÿðððüõòðþò óøñúþóþ ôøñúð //ð 720 Êñ. ýð ôøñúþòþôõ ñõ÷ ôþðüðòøðþòðýøÿ //ð 1,44 Ìñ. PrmFlpp4: MOV AL, 04h //óýúöøÿ ÷ðÿðþñð - 04h MOV ECX, 6 //úð÷ðòõûü ÿðððüõòðð. MOV EBX, OFFSET Birky //ðóðó÷úð þñþ÷ýð÷õýøÿ. MOV DH, 01h //ðüûù ÿõðòûù ñõúòþð ýþñøòõûÿ. MOV CH, 40 //þûø÷õñòòþ ôþðþöõú - 40 MOV ECX, 1423 //þûø÷õñòòþ ñõúòþðþò - 1423 MOV CL, 1 // - ÷ýð÷õýøõ ó ýðñ óöõ ÷ðòøúñøðþòðýþ. MOV ECX, 01FFh //þûø÷õñòòþ ñðùò ò þôýþü ñõúòþðõ - 512 MOV EDX, Sct4 //ðóðó÷øòü ñõúòþð ôûÿ ø÷üõðõýøÿ //þùòø ò ñõúòþð, úðú ò òõûþ øñÿþûýÿõüþù ÿðþóððüüû // ôðòü ÿðþöõññþðó øñÿþûüýøòü úðöôûù ñðùò ÷øòðõüþóþ //õúòþðð, úðú õþûþñòóþ (ñõ÷ôõùñòòõýýóþ) úþüðýôó. Sct4 db 512 Dup (?) REP STOSB //ððòýøòðýøõ ÷ðóðóöõýýûõ ñòõôõýøù JMP FloppyExit //ÿðõôõûõýøõ ÿðððüõòðþò óøñúþóþ ôøñúð //ð 1,44 Ìñ. ýð ôøñúþòþôõ c ôþðüðòøðþòðýøõü //ð 1,44 Ìñ. PrmFlpp5: MOV AL, 05h //óýúöøÿ ÷ðÿðþñð - 05h MOV ECX, 6 //úð÷ðòõûü ÿðððüõòðð. MOV EBX, OFFSET Birky //ðóðó÷úð þñþ÷ýð÷õýøÿ. MOV DH, 01h //ðüûù ÿõðòûù ñõúòþð ýþñøòõûÿ. MOV CH, 40 //þûø÷õñòòþ ôþðþöõú - 40 MOV ECX, 1423 //þûø÷õñòòþ ñõúòþðþò - 1423 MOV CL, 1 // - ÷ýð÷õýøõ ó ýðñ óöõ ÷ðòøúñøðþòðýþ. MOV ECX, 01FFh //þûø÷õñòòþ ñðùò ò þôýþü ñõúòþðõ - 512 MOV EDX, Sct5 //ðóðó÷øòü ñõúòþð ôûÿ ø÷üõðõýøÿ //þùòø ò ñõúòþð, úðú ò òõûþ øñÿþûýÿõüþù ÿðþóððüüû // ôðòü ÿðþöõññþðó øñÿþûüýøòü úðöôûù ñðùò ÷øòðõüþóþ //õúòþðð, úðú õþûþñòóþ (ñõ÷ôõùñòòõýýóþ) úþüðýôó. Sct5 db 512 Dup (?) REP STOSB //ððòýøòðýøõ ÷ðóðóöõýýûõ ñòõôõýøù JMP FloppyExit FloppyExit: FindDrv: POP EAX PUSH EBX //ðþöõôóðð ñ÷øòûòðýøÿ ñðùòþò ò ðõóøñòðõ AH ò òþü //ûó÷ðõ, õñûø ýþñøòõûü ýõ ÷øòðõòñÿ. AND AH, 00001111B //ðñúð ôûÿ 4-õ ñøòþò. CMP AH, 0Ah JNB AE37 ADD AH, 30h JMP AE1 AE37: ADD AH, 37h AE1: //OV CS: Opt_2, AH MOV EAX, OFFSET atd MOV EDX, OFFSET atd TEST EDX,EAX //þ÷òððò ò ðôðõñ ñûþúð þñýþòýþù ÿðþóððüüû CS:IP MOV EAX, 0000H //ave_ip //òõýøÿ úþôð ASCII-ñøüòþûþò. Ïðþöõôóðð ñ÷øòûòðýøÿ ò ÿðüÿòü //ðùòþò ò ðõóøñòðõ AH ñ þÿðõôõûõýøÿ ñþþòòõòñòòóþùõóþ //þôð ASCII, úðöôþóþ ø÷ ýøõ. AND AH, 11110000B //ðñúð ôûÿ 4-õ ñøòýþù ÿ÷õùúø. SHR AH, 01 //þ÷øöøÿ ÿðþñüðòðøòðýøÿ úðöôþóþ ñøòð. SHR AH, 01 SHR AH, 01 SHR AH, 01 //Ïþ 8 ñøò = 1 ñðùò. CMP AH, 0Ah //Çýð÷õýøõ ÿðþñüþòðð þò 0 ôþ 9. JNB BF37 //Åñûø úþô ððòõý þò 0Ah ôþ 0Fh, òþ ADD AH, 30h //÷ýð÷õýøõ 30h ò úþôõ ASCII ýõ ñþ÷ôð¸òñÿ. JMP BF2 BF37: ADD AH, 37h BF2: MOV EAX, 0000H //ip_1 MOV EDX, 0000H //ave_ip //ðþöõôóðð ñ÷øòûòðýøÿ ñðùòþò ò ðõóøñòðõ AH ò òþü //ûó÷ðõ, õñûø ýþñøòõûü ýõ ÷øòðõòñÿ. AND AH, 00001111B //ðñúð ôûÿ 4-õ ñøòþò. CMP AH, 0Ah JNB AF37 ADD AH, 30h JMP AF1 AF37: ADD AH, 37h AF1: MOV EAX, 0000H //p_2 MOV EDX, 0000H //ave_ip XCHG AH, AL //òõýøÿ úþôð ASCII-ñøüòþûþò. Ïðþöõôóðð ñ÷øòûòðýøÿ ò ÿðüÿòü //ðùòþò ò ðõóøñòðõ AH ñ þÿðõôõûõýøÿ ñþþòòõòñòòóþùõóþ //þôð ASCII, úðöôþóþ ø÷ ýøõ. AND AH, 11110000B //ðñúð ôûÿ 4-õ ñøòýþù ÿ÷õùúø. SHR AH, 01 //þ÷øöøÿ ÿðþñüðòðøòðýøÿ úðöôþóþ ñøòð. SHR AH, 01 SHR AH, 01 SHR AH, 01 //Ïþ 8 ñøò = 1 ñðùò. CMP AH, 0Ah //Çýð÷õýøõ ÿðþñüþòðð þò 0 ôþ 9. JNB BH37 //Åñûø úþô ððòõý þò 0Ah ôþ 0Fh, òþ ADD AH, 30h //÷ýð÷õýøõ 30h ò úþôõ ASCII ýõ ñþ÷ôð¸òñÿ. JMP BH2 BH37: ADD AH, 37h BH2: MOV EAX, 0000H //p_3 MOV EDX, 0000H //ave_ip XCHG AH, AL //ðþöõôóðð ñ÷øòûòðýøÿ ñðùòþò ò ðõóøñòðõ AH ò òþü //ûó÷ðõ, õñûø ýþñøòõûü ýõ ÷øòðõòñÿ. AND AH, 00001111B //ðñúð ôûÿ 4-õ ñøòþò. CMP AH, 0Ah JNB AH37 ADD AH, 30h JMP AH1 AH37: ADD AH, 37h AH1: MOV EAX, 0000H //p_4 MOV EDX, 0000H //ave_cs //òõýøÿ úþôð ASCII-ñøüòþûþò. Ïðþöõôóðð ñ÷øòûòðýøÿ ò ÿðüÿòü //ðùòþò ò ðõóøñòðõ AH ñ þÿðõôõûõýøÿ ñþþòòõòñòòóþùõóþ //þôð ASCII, úðöôþóþ ø÷ ýøõ. AND AH, 11110000B //ðñúð ôûÿ 4-õ ñøòýþù ÿ÷õùúø. SHR AH, 01 //þ÷øöøÿ ÿðþñüðòðøòðýøÿ úðöôþóþ ñøòð. SHR AH, 01 SHR AH, 01 SHR AH, 01 //Ïþ 8 ñøò = 1 ñðùò. CMP AH, 0Ah //Çýð÷õýøõ ÿðþñüþòðð þò 0 ôþ 9. JNB BG37 //Åñûø úþô ððòõý þò 0Ah ôþ 0Fh, òþ ADD AH, 30h //÷ýð÷õýøõ 30h ò úþôõ ASCII ýõ ñþ÷ôð¸òñÿ. JMP BG2 BG37: ADD AH, 37h BG2: MOV EAX, 0000H //s_1 MOV EDX, 0000H //ave_cs //ðþöõôóðð ñ÷øòûòðýøÿ ñðùòþò ò ðõóøñòðõ AH ò òþü //ûó÷ðõ, õñûø ýþñøòõûü ýõ ÷øòðõòñÿ. AND AH, 00001111B //ðñúð ôûÿ 4-õ ñøòþò. CMP AH, 0Ah JNB AG37 ADD AH, 30h JMP AG1 AG37: ADD AH, 37h AG1: MOV EAX, 0000H //s_2 MOV EDX, 0000H //ave_cs XCHG AH, AL //òõýøÿ úþôð ASCII-ñøüòþûþò. Ïðþöõôóðð ñ÷øòûòðýøÿ ò ÿðüÿòü //ðùòþò ò ðõóøñòðõ AH ñ þÿðõôõûõýøÿ ñþþòòõòñòòóþùõóþ //þôð ASCII, úðöôþóþ ø÷ ýøõ. AND AH, 11110000B //ðñúð ôûÿ 4-õ ñøòýþù ÿ÷õùúø. SHR AH, 01 //þ÷øöøÿ ÿðþñüðòðøòðýøÿ úðöôþóþ ñøòð. SHR AH, 01 SHR AH, 01 SHR AH, 01 //Ïþ 8 ñøò = 1 ñðùò. CMP AH, 0Ah //Çýð÷õýøõ ÿðþñüþòðð þò 0 ôþ 9. JNB BI37 //Åñûø úþô ððòõý þò 0Ah ôþ 0Fh, òþ ADD AH, 30h //÷ýð÷õýøõ 30h ò úþôõ ASCII ýõ ñþ÷ôð¸òñÿ. JMP BI2 BI37: ADD AH, 37h BI2: MOV EAX, 0000H //s_3 MOV EDX, 0000H //ave_cs XCHG AH, AL //ðþöõôóðð ñ÷øòûòðýøÿ ñðùòþò ò ðõóøñòðõ AH ò òþü //ûó÷ðõ, õñûø ýþñøòõûü ýõ ÷øòðõòñÿ. AND AH, 00001111B //ðñúð ôûÿ 4-õ ñøòþò. CMP AH, 0Ah JNB AI37 ADD AH, 30h JMP AI1 AI37: ADD AH, 37h AI1: MOV EAX, 0000H //s_4 //ñòþñþôøòü òñõ ððýõõ ÷ðýÿòûõ ðõóøñòðû. POP EAX POP EDX POP ECX POP EBX POP ES POP DS POP ESI POP EDI POPF //ðóðó÷øò ÷ýð÷õýøÿ ôûðóþò CS ø IP ÿþôóþòðòûøòðõü ððñþ÷øù ñò¸ú //ðüÿòø, ôûÿ ÿþñûõôóþùõóþ òûõþôð ø÷ ñøñòõüýþóþ þñððñþò÷øúð //NT 13h. PUSHF PUSH CS //ñúðòü IP ýð ÿþøñú ÿðþôþûöõýøÿ òûÿþûýõýøÿ ôðýýþù ÿðþöõôóðû. //ðóðó÷øòü þúðóöõýøõ ôûÿ ñòðýôððòýþóþ òõúòþðð þñððñþò÷øúð INT 13h. PUSHF MOV ECX, 0000H + 2 //edef13h + 2 //"CS" ñ INT 13h ñûþúøðþòúø. MOV ECX, 0000H //edef13h //"IP" ñ INT 13h ñûþúøðþòúø. //õ÷óûüòðò ððñþòû ñøñòõüýþù ÿþôÿðþóððüüû INT 13h òû÷þòð. PUSHF PUSH EAX //þõððýøòü ôðýýþõ ÷ýð÷õýøõ ðõóøñòðð. //òõýøÿ úþôð ASCII-ñøüòþûþò. Ïðþöõôóðð ñ÷øòûòðýøÿ ò ÿðüÿòü //ðùòþò ò ðõóøñòðõ AH ñ þÿðõôõûõýøÿ ñþþòòõòñòòóþùõóþ //þôð ASCII, úðöôþóþ ø÷ ýøõ. AND AH, 11110000B //ðñúð ôûÿ 4-õ ñøòýþù ÿ÷õùúø. SHR AH, 01 //þ÷øöøÿ ÿðþñüðòðøòðýøÿ úðöôþóþ ñøòð. SHR AH, 01 SHR AH, 01 SHR AH, 01 //Ïþ 8 ñøò = 1 ñðùò. CMP AH, 0Ah //Çýð÷õýøõ ÿðþñüþòðð þò 0 ôþ 9. JNB BJ37 //Åñûø úþô ððòõý þò 0Ah ôþ 0Fh, òþ ADD AH, 30h //÷ýð÷õýøõ 30h ò úþôõ ASCII ýõ ñþ÷ôð¸òñÿ. JMP BJ2 BJ37: ADD AH, 37h BJ2: MOV AH, Status1 POP EAX PUSH EAX //ðþöõôóðð ñ÷øòûòðýøÿ ñðùòþò ò ðõóøñòðõ AH ò òþü //ûó÷ðõ, õñûø ýþñøòõûü ýõ ÷øòðõòñÿ. AND AH, 00001111B //ðñúð ôûÿ 4-õ ñøòþò. CMP AH, 0Ah JNB AJ37 ADD AH, 30h JMP AJ1 AJ37: ADD AH, 37h AJ1: MOV AH, Status2 POP EAX INC ESI POP ESI POP EDX POP ECX POP EAX GoBack: POPF //ðþöõôóðð óñòðýþòúø ÿðþóððüüû ò ÿðüÿòü. Inst_Int13: MOV EAX, 0 MOV ES,EAX MOV EDI, 1304h //nt13Loc //þõððýøòü ñòððûù òõúòþð. MOV EAX,EDI // Ïðõðûòðýøõ INT 13h MOV EBX,EDI // Âõúòþð MOV ESI, Int13h_vect // " MOV [SI],EAX // " MOV [SI+2],EBX // " MOV EAX, 0 MOV ES,EAX MOV EBX, DS CLI //ðÿðõòøòü ÿðõðûòðýøÿ. MOV EDI, 1304h //nt13Loc //ðôõùñòòþòðòü INT 13h .... MOV EAX, Int13h_vect // Âõúòþð... MOV EDI,EAX // Ïþøñú... MOV EDI,EBX // ÿðøúûðôýûõ ÿðþóððüü. STI //ð÷ðõøøòü ÿðõðûòðýøÿ. //þúøýóòü þñððñþò÷øú ñ òûõþôþü ò ñøñòõüó. RET //þúøýóòü þñððñþò÷øú INT 13h ñ òûõþôþü // òõúóùõþ þÿõððöøþýýóþ ñøñòõüó. //eadDisk ENDP //ntr13hLen = $ - Intr13h //þýõö ÿþôÿðþóððüüû þñððñþò÷øúð INT 13h //øñòõüýðÿ ÿðþóððüüð INT 14h ReadPort: CLI //ðÿðõòøòü ÿðõðûòðýøÿ PUSHF //oxpaýøòü ôûaóø ôûÿ úþüðýôû IRET //ðþöõôóðð IOS øýøöøðûø÷ðöøø ÿðþóððüüû ÿðõðûòðýøÿ 14Í MOV EDX,1F14h MOV ESP,08 //OV WORD PTR [DI-08],ECX //OV WORD PTR [SI+08],EBX //þúð, ò ÿðþóððüüõ ýõ þÿðõôõûõýû //ýð÷õýøÿ ôûðóþò ñòððøøõ ðõóøñòðþò //H øEAX ÷ðýÿòûõ ÿðþöõññþðþü, øõ //ñÿþûü÷þòðòü ò úþüðýôðõ ýõûü÷ÿ. MOV EDX, OFFSET IntVect2 TEST EDX, 14h INC EDX //õðõô òõü, úðú ýð÷ðòü ððñÿþ÷ýðòðýøõ //ýð÷õýøù ÷ðýÿòûõ ôûðóþò ñòððøøõ //õóøñòðþò AH øEAX, ÿðþø÷òõñòø òõðñþòúó //õúòþðð ÿðõðûòðýøÿ INT 14h ø ÷ðýõñòø õóþ // ñþþòòõòñòòóþùøù ðôðõñ ñõóüõýòýþóþ //óôõðð þÿõððòøòýþù ÿðüÿòø. MOV ES,EDX //ðñòðþõü ýð ýõóþ ES XOR EDI,EDI //S:DI -> ýð÷ðûþ òûôõûõýýþóþ ñûþúð MOV ECX, 2 // - ÷øñûþ ñðùòþò ò ñõóüõýòõ MOV BL, 14h //õúòþð ÿðõðûòðýøÿ ÷ðýþñøüûù ò ñóôõð CLD //ðÿþûýÿòü òÿõð¸ô REP STOSB //ðÿþûýõýøõ //ðÿþûýøòü òòþðþù ñðùò ñøóüõýòð, ôûÿ úþýòðþûÿ //OV BYTE PTR ES:[DI], 0 //ð÷ðòü ÿðþöõôóðó ððñÿþ÷ýðòðýøÿ ôóýúöøø //ðñþòû ñ ôøñúþòûü ýþñøòõûõü ÿþ ÷ðÿðþñó //þûü÷þòðòõûÿ (òû÷þò ýòþù ñøñòõüýþù ÿðþóððüüû //÷ ñóôõðð òðñûøöû ðõ÷øôõýòð BIOS, ýðõþôÿùõóþñÿ // ñð÷þòþù ÷ðñòø þÿõððòøòýþù ÿðüÿòø, ÷õðõ÷ //ðõðûòðýøõ INT 14h) PUSH EAX //ðôõùñòòþòðòü ðõóøñòðEAX //ûÿ ôðûüýõùøøõ ôõùñòòøù POP EBX //õóøñòðEBX þñòðòøòü //òþñþôýûü ôûÿ ôøúñðöøø //úð÷ðýøõ ýð üýøüûù ôûðó AH øûøEAX, //ðø þòñóòñòòøø ÿñýþù ôøúñðöøø óÿððòûÿùõù //ðþóððüüû ÿðþöõññþðð AAS //þôñ÷øòðõü, ÷òþ ÷ðýÿòûù ôûðó AH øûøEAX //óùõñòòóõò ò ûþñþü ñûó÷ðõ, úðú-ñû òþ //øñûûþ. AAA STOSB //ðøñòþøòü ÷ýð÷õýøõ ôûðóó //òððøõóþ ðõóøñòðð //ðøôðòü ýòþüó ôûðóó ñòðòóñ üýþöõñòòõýýþóþ //øñûð c þÿðõôõûÿõüþù ÿðþø÷òþûüýþù ÿõðõüõýýþù. CMP AH, AL CMPSB SCASB PUSH EAX //þððõúöøÿ óÿððòûÿþùõóþ ðõóøñòðð //õýõððöøÿ ñòððøøõ ðõóøñòðþò AH øEAX ôûÿ //þñûõôóþùõóþ ððñÿþ÷ýðòðýøÿ, øõ ÿðþø÷òþûüýþù //õðõüõýýþù ñ ÿþûó÷õýøõü þñúõúòøòýþóþ ðõ÷óûüòðòð. TEST AH, AL CMC //þôóþòþòøòü ñóôõð ú ýþòþüó ÷ðÿþûýõýøþ //ÿðõôõûøòü úðúðÿ ôóýúöøÿ ñøñòõüýþù ÿðþóððüüû //ûûð ÷ðòðõñþòðýð ÿþûü÷þòðòõûõü, òüõñòø ñ òû÷þòþü //ðõðûòðýøÿ INT 14h CMP AH, 00h JE RestPrt0 CMP AH, 01h JE RestPrt1 CMP AH, 02h JE RestPrt2 CMP AH, 03h JE RestPrt3 CMP AH, 04h JE RestPrt4 CMP AH, 05h JE RestPrt5 CMP AH, 06h JE RestPrt6 CMP EAX, 07h JE RestPrt7 //þôÿðþóððüüû òû÷þòð ñþþòòõòñòòóþùøõ ôóýúöøù, úþòþðûõ ñûûø //ðòðõñþòðýû ÿþûü÷þòðòõûõü, òüõñòø ñ òû÷þòþü ÿðõðûòðýøÿ //NT 14h, ðõóøñòððöøø øõ òõúòþðþò ÿðþöõññþðþü ø ôøúñðöøø, //õ úþôþò ôõùñòòøÿ, ôûÿ òûÿþûýõýøÿ ÿþñòðòûõýýûõ ÷ðôð÷. RestPrt0: MOV ES,EDX //ðñòðþõü ýð ýõóþ ES XOR EDI,EDI //S:DI -> ýð÷ðûþ òûôõûõýýþóþ ñûþúð MOV EDX, OFFSET PortDrv0 //þñòóÿ ú ÿþðòó COM1 INC WORD PTR CS: PortDrv0 PUSH WORD PTR PortDrv0 MOV EBX, OFFSET BytClast2 //ðóðó÷úð ñóôõðð ÿðüÿòø. XCHG BH, AL //òúóôð ñððòü ôðýýûõ MOV EAX,ESI //ðþø÷òþûüýþóþ ôþñòóÿð. MOV ECX, 1024 //12 - ÷øñûþ ñðùòþò ò ñõóüõýòõ. //ðùòþòûù ÿðøýöõÿ: ÿþ 8 db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // CLD //ðÿððòûÿõü ñðùòû òÿõð¸ô. REP STOSB //øúñðöøÿ ÿðþ÷øòðýýþóþ ò ÿðüÿòø. XCHG AL, BH //occòðýþòøòü ÿðõöôýõõ ÷ýð÷õýøõ ðõóøñòðð. POP ECX //þññòðýþòøòüECX, ÿõðõô ýþòþù þÿõððöøõù. //ðÿþûýøòü ÿþñûõôýøù ñðùò ñøóüõýòð, ôûÿ úþýòðþûÿ //OV BYTE PTR ES:[DI], 0 JMP FindPort RestPrt1: MOV ES,EDX //ðñòðþõü ýð ýõóþ ES XOR EDI,EDI //S:DI -> ýð÷ðûþ òûôõûõýýþóþ ñûþúð MOV EDX, OFFSET PortDrv1 //þñòóÿ ú ÿþðòó COM2 INC WORD PTR CS: PortDrv1 PUSH WORD PTR PortDrv1 MOV EBX, OFFSET BytClast2 //ðóðó÷úð ñóôõðð ÿðüÿòø. XCHG BH, AL //òúóôð ñððòü ôðýýûõ MOV EAX,ESI //ðþø÷òþûüýþóþ ôþñòóÿð. MOV ECX, 1024 //12 - ÷øñûþ ñðùòþò ò ñõóüõýòõ. //ðùòþòûù ÿðøýöõÿ: ÿþ 8 db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // CLD //ðÿððòûÿõü ñðùòû òÿõð¸ô. REP STOSB //øúñðöøÿ ÿðþ÷øòðýýþóþ ò ÿðüÿòø. XCHG AL, BH //occòðýþòøòü ÿðõöôýõõ ÷ýð÷õýøõ ðõóøñòðð. POP ECX //þññòðýþòøòüECX, ÿõðõô ýþòþù þÿõððöøõù. //ðÿþûýøòü ÿþñûõôýøù ñðùò üðññøòð, ôûÿ úþýòðþûÿ. //OV BYTE PTR ES:[DI], 0 JMP FindPort RestPrt2: MOV ES,EDX //ðñòðþõü ýð ýõóþ ES XOR EDI,EDI //S:DI -> ýð÷ðûþ òûôõûõýýþóþ ñûþúð MOV EDX, OFFSET PortDrv2 //þñòóÿ ú ÿþðòó COM3 INC WORD PTR CS: PortDrv2 PUSH WORD PTR PortDrv2 MOV EBX, OFFSET BytClast2 //ðóðó÷úð ñóôõðð ÿðüÿòø. XCHG BH, AL //òúóôð ñððòü ôðýýûõ MOV EAX,ESI //ðþø÷òþûüýþóþ ôþñòóÿð. MOV ECX, 1024 //12 - ÷øñûþ ñðùòþò ò ñõóüõýòõ. //ðùòþòûù ÿðøýöõÿ: ÿþ 8 db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // CLD //ðÿððòûÿõü ñðùòû òÿõð¸ô. REP STOSB //øúñðöøÿ ÿðþ÷øòðýýþóþ ò ÿðüÿòø. XCHG AL, BH //occòðýþòøòü ÿðõöôýõõ ÷ýð÷õýøõ ðõóøñòðð. POP ECX //þññòðýþòøòüECX, ÿõðõô ýþòþù þÿõððöøõù. //ðÿþûýøòü ÿþñûõôýøù ñðùò üðññøòð, ôûÿ úþýòðþûÿ. //OV BYTE PTR ES:[DI], 0 JMP FindPort RestPrt3: MOV ES,EDX //ðñòðþõü ýð ýõóþ ES XOR EDI,EDI //S:DI -> ýð÷ðûþ òûôõûõýýþóþ ñûþúð MOV EDX, OFFSET PortDrv3 //þñòóÿ ú ÿþðòó COM4 INC WORD PTR CS: PortDrv3 PUSH WORD PTR PortDrv3 MOV EBX, OFFSET BytClast2 //ðóðó÷úð ñóôõðð ÿðüÿòø. XCHG BH, AL //òúóôð ñððòü ôðýýûõ MOV EAX,ESI //ðþø÷òþûüýþóþ ôþñòóÿð. MOV ECX, 1024 //12 - ÷øñûþ ñðùòþò ò ñõóüõýòõ. //ðùòþòûù ÿðøýöõÿ: ÿþ 8 db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // CLD //ðÿððòûÿõü ñðùòû òÿõð¸ô. REP STOSB //øúñðöøÿ ÿðþ÷øòðýýþóþ ò ÿðüÿòø. XCHG AL, BH //occòðýþòøòü ÿðõöôýõõ ÷ýð÷õýøõ ðõóøñòðð. POP ECX //þññòðýþòøòüECX, ÿõðõô ýþòþù þÿõððöøõù. //ðÿþûýøòü ÿþñûõôýøù ñðùò üðññøòð, ôûÿ úþýòðþûÿ. //OV BYTE PTR ES:[DI], 0 JMP FindPort RestPrt4: MOV ES,EDX //ðñòðþõü ýð ýõóþ ES XOR EDI,EDI //S:DI -> ýð÷ðûþ òûôõûõýýþóþ ñûþúð MOV EDX, OFFSET PortDrv4 //þñòóÿ ú ÿþðòó LPT1 INC WORD PTR CS: PortDrv4 PUSH WORD PTR PortDrv4 MOV EBX, OFFSET BytClast2 //ðóðó÷úð ñóôõðð ÿðüÿòø. XCHG BH, AL //òúóôð ñððòü ôðýýûõ MOV EAX,ESI //ðþø÷òþûüýþóþ ôþñòóÿð. MOV ECX, 1024 //12 - ÷øñûþ ñðùòþò ò ñõóüõýòõ. //ðùòþòûù ÿðøýöõÿ: ÿþ 8 db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // CLD //ðÿððòûÿõü ñðùòû òÿõð¸ô. REP STOSB //øúñðöøÿ ÿðþ÷øòðýýþóþ ò ÿðüÿòø. XCHG AL, BH //occòðýþòøòü ÿðõöôýõõ ÷ýð÷õýøõ ðõóøñòðð. POP ECX //þññòðýþòøòüECX, ÿõðõô ýþòþù þÿõððöøõù. //ðÿþûýøòü ÿþñûõôýøù ñðùò üðññøòð, ôûÿ úþýòðþûÿ. //OV BYTE PTR ES:[DI], 0 JMP FindPort RestPrt5: MOV ES,EDX //ðñòðþõü ýð ýõóþ ES XOR EDI,EDI //S:DI -> ýð÷ðûþ òûôõûõýýþóþ ñûþúð MOV EDX, OFFSET PortDrv5 //þñòóÿ ú ÿþðòó LPT2 INC WORD PTR CS: PortDrv5 PUSH WORD PTR PortDrv5 MOV EBX, OFFSET BytClast2 //ðóðó÷úð ñóôõðð ÿðüÿòø. XCHG BH, AL //òúóôð ñððòü ôðýýûõ MOV EAX,ESI //ðþø÷òþûüýþóþ ôþñòóÿð. MOV ECX, 1024 //12 - ÷øñûþ ñðùòþò ò ñõóüõýòõ. //ðùòþòûù ÿðøýöõÿ: ÿþ 8 db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // CLD //ðÿððòûÿõü ñðùòû òÿõð¸ô. REP STOSB //øúñðöøÿ ÿðþ÷øòðýýþóþ ò ÿðüÿòø. XCHG AL, BH //occòðýþòøòü ÿðõöôýõõ ÷ýð÷õýøõ ðõóøñòðð. POP ECX //þññòðýþòøòüECX, ÿõðõô ýþòþù þÿõððöøõù. //ðÿþûýøòü ÿþñûõôýøù ñðùò üðññøòð, ôûÿ úþýòðþûÿ. //OV BYTE PTR ES:[DI], 0 JMP FindPort RestPrt6: MOV ES,EDX //ðñòðþõü ýð ýõóþ ES XOR EDI,EDI //S:DI -> ýð÷ðûþ òûôõûõýýþóþ ñûþúð MOV EDX, OFFSET PortDrv6 //þñòóÿ ú ÿþðòó USB1 INC WORD PTR CS: PortDrv6 PUSH WORD PTR PortDrv6 MOV EBX, OFFSET BytClast2 //ðóðó÷úð ñóôõðð ÿðüÿòø. XCHG BH, AL //òúóôð ñððòü ôðýýûõ MOV EAX,ESI //ðþø÷òþûüýþóþ ôþñòóÿð. MOV ECX, 1024 //12 - ÷øñûþ ñðùòþò ò ñõóüõýòõ. //ðùòþòûù ÿðøýöõÿ: ÿþ 8 db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // CLD //ðÿððòûÿõü ñðùòû òÿõð¸ô. REP STOSB //øúñðöøÿ ÿðþ÷øòðýýþóþ ò ÿðüÿòø. XCHG AL, BH //occòðýþòøòü ÿðõöôýõõ ÷ýð÷õýøõ ðõóøñòðð. POP ECX //þññòðýþòøòüECX, ÿõðõô ýþòþù þÿõððöøõù. //ðÿþûýøòü ÿþñûõôýøù ñðùò üðññøòð, ôûÿ úþýòðþûÿ. //OV BYTE PTR ES:[DI], 0 JMP FindPort RestPrt7: MOV ES,EDX //ðñòðþõü ýð ýõóþ ES XOR EDI,EDI //S:DI -> ýð÷ðûþ òûôõûõýýþóþ ñûþúð MOV EDX, OFFSET PortDrv7 //þñòóÿ ú ÿþðòó USB2 INC WORD PTR CS: PortDrv7 PUSH WORD PTR PortDrv7 MOV EBX, OFFSET BytClast2 //ðóðó÷úð ñóôõðð ÿðüÿòø. XCHG BH, AL //òúóôð ñððòü ôðýýûõ MOV EAX,ESI //ðþø÷òþûüýþóþ ôþñòóÿð. MOV ECX, 1024 //12 - ÷øñûþ ñðùòþò ò ñõóüõýòõ. //ðùòþòûù ÿðøýöõÿ: ÿþ 8 db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // db 236 //N EAX,EDX // CLD //ðÿððòûÿõü ñðùòû òÿõð¸ô. REP STOSB //øúñðöøÿ ÿðþ÷øòðýýþóþ ò ÿðüÿòø. XCHG BH, AL //occòðýþòøòü ÿðõöôýõõ ÷ýð÷õýøõ ðõóøñòðð. POP ECX //þññòðýþòøòüECX, ÿõðõô ýþòþù þÿõððöøõù. //ðÿþûýøòü ÿþñûõôýøù ñðùò üðññøòð, ôûÿ úþýòðþûÿ. //OV BYTE PTR ES:[DI], 0 JMP FindPort //ÿðõôõûøòü ôûðó ðõóøñòðð AL. Îý þÿðõôõûÿõò úðúóþ ôóýúöøþ //ðôþ òûÿþûýÿòü ÿðø ððñþòõ ñ ÷ðôðýýûü ÿþðòþü: ÷òõýøõ, ÷ðÿøñü //ûø öõ þòúð÷ðòüñÿ þò ôþñòóÿð ú ýõüó (õñûø, ýõò ÿþôúûþ÷õýøÿ). FindPort: CMP AL, 0 JE PrtRd //ñûø ôûðó = 0, ÷ýð÷øò ÷òõýøõ. CMP AL, 1 JE PrtWrt //ñûø ôûðó = 1, ÷ýð÷øò ÷ðÿøñü. JG Quit3 //ñûø ôûðó > 1, òþ òûõþô ø÷ //þôÿðþóððüüû. //Ñòðýôððòýðÿ ÿðþöõôóðð ôþñòóÿð, ÿðø ÷òõýøø ôðýýûõ //ñ ÷ðôðýýþóþ ÿþðòð. PrtRd: //ðþöõôóðð ÷òõýøÿ ñ ÿþðòð. DEC EDX DEC EDX //EG (xF8) SUB AH,AH db 236 //N AL,EDX //òõýøõ ôðýýûõ ñ ÿþðòð. MOV EBX, OFFSET COM1EPTR MOV EDX,EBX INC EBX CMP EBX, OFFSET COM1ENDB //þñòóÿ ÷ðúðûò? JNE ISR0220 //õò. Çýð÷øò, üþöýþ ÿðõñòóÿøòü ú //ûÿþûýõýøþ ôðýýþù ÿðþöõôóðû. MOV EBX, OFFSET COM1STRT ISR0220: CMP EBX, OFFSET COM1SPTR //ðþòõðøü, õñòü ûø ÿõðõÿþûýõýøõ ñóôõðð ÿðüÿòø. JE ISR0240 //ð. Áóôõð ÿõðõÿþûýõý. MOV EBX, OFFSET COM1EPTR MOV EBX,EDX MOV [BX],AL OR AH,1 JMP ISR0280 //þðð, ýð òûõþô. ISR0240: OR AH, 10H ISR0280: OR AH, 60H JMP PrtCnt //õðõõþô ýð ñõúöøþ þñùøõ þÿõððöøù. //Ñòðýôððòýðÿ ÿðþöõôóðð ôþñòóÿð, ÿðø ÷ðÿøñø ôðýýûõ //ýð ÷ðôðýýûù ÿþðò. PrtWrt: //ðþöõôóðð ÷ðÿøñø ýð ÿþðò. MOV AH,40H MOV EBX, OFFSET OUT1SPTR CMP EBX, OFFSET OUT1EPTR //õ ÷ðúðûò ûø ôþñòóÿ? JE ISR0480 //ðúðûò. Çýð÷øò ýðôþ ýð òûõþô. DEC EDX DEC EDX //EG (xF8) MOV EAX,EBX db 238 //UT EDX,EAX //ðÿøñü ôðýýûõ ýð ÿþðò. INC EBX CMP EBX, OFFSET OUT1ENDB //þûø ÷ýð÷õýøõ òþ ôûðóõ? JNE ISR0420 //õò, ÷ýð÷øò þôýó ø÷ ÿþûþöõýýûõ úþüðýô, MOV EBX, OFFSET OUT1STRT //ðôþ ÿðþÿóñòøòü. ISR0420: MOV EDX, OFFSET OUT1SPTR OR AH,20H CMP EBX, OFFSET OUT1EPTR //þûø ÷ýð÷õýøõ òþ ôûðóõ? JE ISR0480 //õò, ÷ýð÷øò þôýó ø÷ ÿþûþöõýýûõ úþüðýô, //ðôþ ÿðþÿóñòøòü. AND AH,10111111B ISR0480: OR AH, 60h //OM1LINE //þôÿðþóððüüð ôþñòóÿð ú ôøñúþòþüó ýðúþÿøòõûþ, //þôñþõôøý¸ýýþóþ ú ÿþñûõôþòðòõûüýþüó øûø //ðððûûõùýþüó ÿþðòó ø þÿðõôõûõýøÿ õóþ òøÿð. //ÿðõôõûÿõò òøÿ ø ðð÷üõð ôøñúþòþóþ ýðúþÿøòõûÿ, //þôñþõôøý¸ýýþóþ ú ÿþñûõôþòðòõûüýþüó ÿþðòó. //ORTY PROC //ðóðó÷úð ò ñóôõð ðõ÷øôõýòð óÿððòûÿþùõù ÿðþóððüüû PrtCnt: MOV ECX, 0264h MOV EDX, OFFSET PortSys CLD REP MOVSB //øúñðöøÿ ò ÿðüÿòø //oxpaýøòüEAX ÿðõðòðýþù ÿðþóððüüû PUSH EAX IN AL, 0Ah //õôþüþõ óñòðþùñòòþ CMP AL, 0 //þûõòþõ þÿðõôõûõýøõ óñòðþùñòòð ? POP EAX //þññòðýþòøòüEAX // ÿõðõùòø ò ñøñòõüýûù þñððñþò÷øú MOV EDX, OFFSET Old_Port //ðõöôõ òñõóþ ñûõôóõò òûÿþûýøòü þÿðõôõû¸ýýûõ ôõùñòòøÿ, // ÿþðòõ (20h) òõôþüþóþ ÿðþóððüüýþóþ øýòõðôõùñð. MOV EAX, OFFSET PortSys XCHG AH, AL OUT 20h, AL IN AL, 20h //õùñòòøÿ ÿþ ÿðø¸üó ñøñòõüýûõ ÷ðÿðþñþò PUSH EBP MOV EBP,ESP //ðóðó÷øòü ðôðõñ ðòððøùýþóþ ÷ðòõðøõýøÿ ò ñò¸ú, ýð üõñòþ //þðüðûüýþóþ ðôðõñð òþ÷òððòð. Ñò¸ú ñõù÷ðñ ñüõù¸ý, //òýþñøòõûüýþ ðôðõñð òþ÷òððòð, ýð 2 ñûþòð (úþüðýôðüø //USHEAX ø PUSHEBP) //OV WORD PTR 4[BP], Old_Port POP EBP //occòðýþòøòüEBP //ñýþòýðÿ ÿðþóððüüð øýøöøðûø÷ðöøø ÿðõðûòðýøÿ INT 14h. PUSH EBX PUSH ECX PUSH EDX PUSH ESI PUSH ES PUSH DS //þõððýøòü ðõóøñòðû ôûÿ ôðûüýõùøøõ MOV EBX,CS //ÿõððöøù. MOV DS,EBX //þ÷ôðòü ñõóüõýò òõúóùõù ðôðõñðöøø. MOV ESI,EDX //S232 óúð÷ðýøõ ýð ÷ýð÷õýøõ ðõóøñòððESI. SHL ESI,1 //ðóðóöðõüþõ ñûþòþ. MOV EBX,40H //ôðõñðöøÿ ñð÷þòþù þñûðñòø. MOV ES,EBX //øñòõüýûù ðõóøñòð ò ðõóøñòð ôðýýûõ. MOV EDX, OFFSET RS232_BASE //ðóðó÷úð RS232 ò ðõóøñòð ðôðõñð. OR EDX,EDX //õñò ôûÿ ýõ ðõ÷øôõýòýþù ÷ðñòø. JE ISR1000 //õðõõþô ýð ñõúöøþ ððñþòû. MOV BL,AH //ðóðó÷úð úþüðýôû ø÷ 2-õ ñðùò. SUB BH,BH //ôòþõýøõ ÷ýð÷õýøÿ ðõóøñòðð BH. CMP EBX, 0202h //þûø ÷ýð÷õýøõ ðõóøñòðð? JGE Quit3 //õò, ýõ òþ. SHL EBX,1 //òþùýþõ ÷ýð÷õýøõ, ôûÿ øñòøýýþù úþüñøýðöøø. MOV EBX, OFFSET Option0 //OUTINES //ðóðó÷úð ñøñòõüýþù ÿþôÿðþóððüüû ø÷ ðõóøñòððEBX. ISR1000: STI //ð÷ðõøøòü ÿðõðûòðýøÿ PUSH ESI //ððøðýò 1 MOV ESI,0 JMP SHORT ISR0100 //ûñòðûù ÿõðõõþô ýð ýþòûù óðþòõýü. ISR2000: STI //ð÷ðõøøòü ÿðõðûòðýøÿ. PUSH ESI //ððøðýò 2 MOV ESI,2 //Àúòøòø÷øðþòðòü ÷ðýÿòøõ ðõóøñòðû. ISR0100: PUSH EAX //þõððýøòü ÷ýð÷õýøõ ðõóøñòðþò. PUSH EBX PUSH ECX PUSH EDX PUSH DS //þôÿðþóððüüð HALFSTAT. CLI //ðÿðõòøòü ÿðõðûòðýøÿ MOV AH,60h //OM1LINE MOV BH,AH AND BH,01100001B MOV BH,60h //OM1LINE STI //ð÷ðõøøòü ÿðõðûòðýøÿ. //Óñòðýþòúð ñð÷þòþóþ þúðóöõýøÿ þÿõððòþðþò ôþñòóÿð //ú ÿðððûûõùýþüó øûø ÿþñûõôþòðòõûüýþüó ÿþðòó. MOV EAX,40H MOV DS,EAX MOV EDX,ESI MOV EAX,CS MOV DS,EAX ISR0120: MOV EDX, OFFSET COMMBASE INC EDX INC EDX db 236 //N AL,EDX TEST AL,1 //þûø ÷ýð÷õýøõ ôûðóð ðõóøñòðð? JNZ ISR0140 //õò. Íõ òþ, ÷ýð÷øò ýðôþ ÿõðõõþôøòü ýð CBW //þòûù óðþòõýü. MOV ECX, 8 //ð÷üõð ÷ðóðóöðõüþóþ üðññøòð. MOV EBX,EAX MOV EBX, 0000H //SRTABLE //ðóðó÷úð ôðýýûõ ò ðõóøñòðEBX. JMP ISR0120 //ñûø, ÷ýð÷õýøõ òþ, ÷ýð÷øò ÷ðôðýýûù öøúû //ðôþ õù¸ ðð÷ ÿþòòþðøòü. //Ïðþöõôóðð ÷ðòõðøõýøÿ ððñþòû þñððñþò÷øúð ñ òûõþôþü //ò þñýþòýóþ ÿðþóððüüó. ISR0140: CLI //ðÿðõòøòü ÿðõðûòðýøÿ. MOV AL,20H OUT 20H,AL STI //ð÷ðõøøòü ÿðõðûòðýøÿ. //Èýøöøðûø÷ðöøÿ ÿðþñýþù ÷ðÿøñø ýð ÿþðò. //Ïþôÿðþóððüüð COMMAND0 PROC NEAR MOV AH,AL //õðõÿøñðòü ÷ýð÷õýøõ ò ñòððøøù ðõóøñòð. ADD EDX,03 //úð÷ðýøõ ûøýøø óÿððòûõýøÿ ðõóøñòðþü (xFB). MOV EAX,0080H //òúðûòü ýóöýþõ ÷ýð÷õýøõ. db 238 //UT EDX,EAX //úðóöõýøõ = 1. //Ïðþöõôóðð óñòðýþòúø ýóöýþóþ ÷ýð÷õýøÿ, ðõóøñòððEBX. MOV BL,AH MOV CL,04 ROL BL,CL AND EBX,0EH MOV ECX,0016H MOV EBX, 1047H //AUDTABL //Óñòðýþòúð þúðóöõýøÿ ñðòð 8250 SUB EDX,2 //SB (xF9) MOV AL,BH db 238 //UT EDX,EAX DEC EDX //SB (xF8) MOV AL,BL db 238 //UT EDX,EAX //Èýøöøðûø÷ðöøÿ þúðóöõýøÿ ôûÿ þñòðýþòúø ñðòð 8250 ADD EDX,3 //EG (xFB) MOV AL,AH AND AL,00011111B db 238 //UT EDX,EAX //Ðð÷ðõøõýøõ ÷ýð÷õýøÿ ñðòð 8250 ôûÿ ÿðõðûòðýøÿ. INC EDX //EG (xFC) MOV AL,00001101B db 238 //UT EDX,EAX SUB EDX,3 //EG (xF9) MOV AL,00001111B db 238 //UT EDX,AL //Ïðþöõôóðð ÷òõýøÿ ôðýýûõ ñ ÷ðôõùñòòþòðýýþóþ ÿþðòð IRQ. DEC EDX //EG (xF8) db 236 //N AL,EDX INC EDX INC EDX //IR (xFA) db 236 //N AL,EDX ADD EDX,3 //EG (xFD) db 236 //N AL,EDX INC EDX //SR (xFE) db 236 //N AL,EDX AND AL,11110000B MOV ESI, 00h //OM1MODM MOV EDI,ESI MOV AL, 60H MOV ESI, 60h //OM1LINE //Âúûþ÷õýøõ ñóôõðð øýøöøðûø÷ðöøø ôûÿ ñüõùõýøÿ ÿþðòð IRQ. MOV EBX, OFFSET COM1STRT //õðõñûûúð ôûÿ ÷òõýøÿ (IN) ñ ÿþðòð. MOV ESI,EBX MOV EBX, OFFSET COM1EPTR MOV ESI, 00h //õðõñûûúð ôûÿ ÷ðÿøñø (OUT) ýð ÿþðò. MOV EDX, OFFSET OUT1SPTR MOV ESI,EBX //Ðð÷ðõøøòü øñÿþûü÷þòðýøõ IRQ ôûÿ òúûþ÷õýøÿ ñðòð 8259 ò //ò úþýòðþûûõð ÿðõðûòðýøÿ. MOV ECX,ESI //ðóðó÷øòü ÷ýð÷õýøõ ò ðôðÿòõð. SHR CL,1 //þ÷ôðòü ÷ýð÷õýøõ 0 øûø 1 NEG CL //þ÷ôðòü 0 øûø -1 (-1 = COM2) ADD CL,4 //ñòðýþòúð ÷ðüõýû ÷ýð÷õýøÿ þò 3 ôþ 4 (COM1=4) MOV AH,0FEH //ñòðýþòúð òøÿð üðñúø. ROL AH,CL //ð÷ðõøõýøõ òúûþ÷õýøÿ ñðòð 8259 ôûÿ ÿðõðûòðýøÿ. CLI //ðÿðõòøòü ÿðõðûòðýøÿ. IN AL,21H //ðóðó÷úð ýóöýþù üðñúø ñðùòð. AND AL,AH //ð÷ðõøøòü ñðò 8259 ôûÿ òõúóùõóþ ÿðõðûòðýøÿ. OUT 21H,AL //ðþø÷òþôøòü ÷ðÿøñü ýð òõôóùøù úþýòþðþûûõð. STI //ð÷ðõøøòü ÿðõðûòðýøÿ. //Âþ÷òððò ò 2-õ ñðùòþòûù ñò¸ú òõþôð ýð÷ðûüýþù óñòðýþòúø. //Ïðþöõôóðð þÿðõôõûõýøÿ ñòðòóñð ôþñòóÿð ú ÿþðòó, ÿõðõô ÷ðúðûòøõü. //Ïþôÿðþóððüüð COMMAND3 PROC NEAR CLI //ðÿðõòøòü ÿðõðòðýøÿ. MOV AL,00h //OM1MODM MOV BL,AL AND AL,10110000B MOV ESI,0202h //OM1MODM MOV AH,BL MOV BH,AH AND BH,01100001B MOV ESI, 00h //OM1LINE STI //ð÷ðõøøòü ÿðõðûòðýøÿ. MOV AL,BL //Ïþôðþóððüüð þúþý÷ðýøÿ þÿõððöøù ñ òõúóùøü úþýòðþûûõðþü ÿþðòð. //Ïþôÿðþóððüüð COMMAND1 PROC NEAR MOV BH,AL //þõððýøòü ôðýýûõ òõúóùõóþ ðõóøñòðð. //Îòúûþ÷õýøõ þñýþòýþóþ ôþñòóÿð ú ÿþðòó. ADD EDX,4 //EG (xFC) db 236 //N AL,EDX OR AL,03 db 238 //UT EDX,AL //CR //Êþýõö òõúóùøõ þÿõððöøù ñ ÷ðôðýýûü ñóôõðþü ÿðüÿòøþ MOV AH,80H //Ïðþöõôóðð þúþý÷ðýøÿ ÷ðÿøñø ýð ÿþðò ÿõðõô ÷ðúðûòøõü, ÿþ //òðõüõýø òõúóùõù þÿõððöøø. //Ïþôðþóððüüð WAITDSR. MOV EBX, OFFSET RS232_TIM_OUT SUB ECX,ECX //ðôðýýûù úðóóþòþù öøúû. WAIT100: MOV AL,00h //OM1MODM AND AL,30H CMP AL,30H //ðøõ ÷ýð÷õýøõ ôûðóð = 30. JE WAIT200 //ð, ÷ýð÷õýøõ ôûðóð 30, ÷ýð÷øò ýð òûõþô. MOV ECX,1024 //þûø÷õñòòþ ðð÷ - 1024 //OOP WAIT100 //ðø ÷ðôðýýûù öøúû (þòü. úþüðýôð). DEC BL JNZ WAIT100 //ñûø þöøôðýøõ ñþûüøõ ÿþ òðõüõýø. STC WAIT200: JC COM0295 //ñûø ýþñøòõûü ñððúþòðýýûù ø ôðýýûõ // ýõóþ ýõ ÷øòðþòñÿ. MOV EBX, OFFSET RS232_TIM_OUT SUB ECX,ECX COM0220: TEST ESI,60h //OM1LINE JNZ COM0230 //ð. Ïõðõõþôøü ýð òûÿþûýõýøõ ýóöýþù //ÿõððöøø. //OOP COM0220 //øúû ÿþ 65536 ðð÷ (þòü. úþüðýôð) DEC BL JNZ COM0220 //ñûø ýðøõ ÷ýð÷õýøõ, õù¸ ýõ ôþñòøóýóòþ. JMP SHORT COM0295 //þûõòþõ ÷ýð÷õýøõ = þøøñúð ÷ðÿøñø òþ òðõüõýø. COM0230: MOV AL,BH //þòþõ ÷ýð÷õýøõ ôûðóð AL. CLI //ðÿðõòøòü ÿðõðûòðýøÿ. TEST ESI,60h //OM1LINE JNZ COM0260 //õò. Çýð÷õýøõ ûøüøòð ñóôôõðð ýøöõ 40-úð. //Åñûø ñ ÷òõýøõü ø÷ ñóôõðð, òñ¸ ò ÿþðÿôúõ. MOV EBX, OFFSET OUT1EPTR MOV BH,AL INC EBX CMP EBX, 0000h //UT1ENDB JNE COM0240 //õò. Äþñòóÿ ú óñòðþùñòòó, ÿþúð //üõõòñÿ. MOV EBX,OFFSET OUT1STRT COM0240: CMP EBX,0000h //UT1SPTR //ððòýøòü ÷ýð÷õýøÿ ñóôôõðð. JNE COM0250 //õò, ó ýðñ ÷ôõñü òñ¸ ýþðüðûüýþ. OR EDX,EBX COM0250: STI //ð÷ðõøøòü ÿðõðûòðýøÿ. MOV EBX, OFFSET OUT1EPTR JMP SHORT COM0290 //õðõõþô ýð òûÿþûýõýøõ ÷ðôðýýþù //ðþöõôóðû. //Çðòõðøøýøõ ÿðþöõôóðû ÷ðúðûòøÿ ôþñòóÿð //ú ÷ðôðýýþüó ÿþðòó. COM0260: AND ESI,10111111B //TRT ISR. STI //ð÷ðõøøòü ÿðõðûòðýøÿ. SUB EDX,4 //MIT (xF8) db 238 //UT EDX,AL COM0290: //þôÿðþóððüüð HALFSTAT. CLI //ðÿðõòøòü ÿðõðûòðýøÿ MOV AH,60h //OM1LINE MOV BH,AH AND BH,01100001B MOV BH,60h //OM1LINE STI //ð÷ðõøøòü ÿðõðûòðýøÿ. COM0295: //Ïðþöõôóðð ÿðÿüþóþ ôþñòóÿð ú ÿþðòó. //Ïþôÿðþóððüüð COMMAND2 PROC NEAR MOV EBX, OFFSET RS232_TIM_OUT SUB ECX,ECX COM0320: TEST ESI,1 JNZ COM0340 //ð. Öøúû ÿþòòþðõýøÿ òþ÷üþöõý. //OOP COM0320 //øúû ÿþòòþðõýøÿ ÷ðôðýýþù þÿõððöøø. //øúû ÿþ 65536 ðð÷ (þòü. úþüðýôð) DEC BL JNZ COM0320 //ñûø ýóöýþõ ÷ýð÷õýøõ ôûðóð, ýõ ôþñòøóýóòþ. //þôÿðþóððüüð HALFSTAT. CLI //ðÿðõòøòü ÿðõðûòðýøÿ MOV AH,60h //OM1LINE MOV BH,AH AND BH,01100001B MOV BH,60h //OM1LINE STI //ð÷ðõøøòü ÿðõðûòðýøÿ. OR AH,80H JMP SHORT COM0390 //õðõõþô ýð þúþý÷ðýøõ ÷ðôðýýþù ÿðþöõôóðû. COM0340: //þôÿðþóððüüð COMMAND4 PROC NEAR //Èýøöøðûø÷ðöøÿ ððñþòû ÿðþöõôóðû ÿðõðûòðýøÿ ñ ñóôôõðþü. CLI //ðÿðõòøòü ÿðõðûòðýøÿ. MOV AH, 60h //OM1LINE AND ESI, 60h //OM1LINE MOV EBX, OFFSET COM1SPTR CMP EBX, 0000h //ððòýøü, òþ ûø ÷ýð÷õýøõ òþ ôûðóõ? JE COM0560 //ñûø òþ, ÷ýð÷øò ýð òûõþô ø÷ //ñððñþò÷øúð. COM0540: //Çðóðó÷úð ÿðþ÷øòðýýþóþ ò òõúóùøù ñóôôõð ÿðüÿòø. MOV AL,[BX] INC EBX CMP EBX, 0000h //OM1ENDB //òúûþ÷õý ûø ôþñòóÿ ? JNE COM0550 //õò. Ïþôúûþ÷õýøõ ú óñòðþùñòòó, õñòü. MOV EBX,OFFSET COM1STRT COM0550: MOV EDX,EBX CMP EBX,OFFSET COM1EPTR //þ ûø ÷ýð÷õýøõ ôþñòóÿð, úðúþõ ýóöýþ? JNE COM0580 //õò. Çýð÷øò, ÿþðð ýð òûõþô ø÷ þñððñþò÷øúð. //Áóôõð ÿõðõ÷ðÿøñûòðõòñÿ, ÿðø ÷ðôðýýþü ÷ýð÷õýøø ôûðóð. COM0560: AND AL,60h //OM1LINE AND AH,0FEH //Âûõþô ø÷ òûÿþûýõýøÿ ÷ðôðýýþù ÿðþöõôóðû. COM0580: STI //ð÷ðõøøòü ÿðõðûòðýøÿ. //þôÿðþóððüüð HALFSTAT. CLI //ðÿðõòøòü ÿðõðûòðýøÿ MOV AH,60h //OM1LINE MOV BH,AH AND BH,01100001B MOV BH,60h //OM1LINE STI //ð÷ðõøøòü ÿðõðûòðýøÿ. COM0390: AND AH,10011110B //Ïþôðþóððüüð ôøðóýþñòøúø òûÿòûõýøÿ òþ÷üþöýûõ //þøøñþú òòþôð / òûòþôð. //Ïþôÿðþóððüüð ISRLINE PROC NEAR ADD EDX,3 //EG (xFD) db 236 //N AL,EDX AND AL,00011110B OR ESI, 60H //OM1LINE //Ñÿõöøôø÷õñúðÿ ÿðþöõôóðð øýøöøðûøûø÷ðöøø ôþñòóÿð //ú üþôõüó ø ððñþòû ñ ýøü. Åñûø òðúþòþù ÿþôñûõôøý¸ý //ú ÿðððûûõùýþüó ÿþðòó, òøÿð COM.x //Ïþôÿðþóððüüð ISRMODEM PROC NEAR ADD EDX,4 //òðòóñ ôûðóð ðõóøñòðð ôûÿ üþôõüð (xFE). db 236 //N AL,EDX //ðþòõðúð ôþñòóÿð ú ÷ðôðýýþüó ÿþðòó. MOV AH,AL //õðõñûûúð ôðýýûõ ø÷ üûðôøõóþ ò ñòððøøù ðõóøñòð. AND AH,11110000B //ðóðó÷úð ñþþòòõòñòòóþùõù ñøòþòþù üðñúø. OR AL,00h //OM1MODM //ûüòõðýðòøòýðÿ ñøòþòûõ üðñúø. AND AL,01001111B OR AL,AH MOV ESI, 60H //OM1MODM //òðòóñ øøýû ôþñòóÿð ñøñòõüû ú üþôõüó. //ñððòøòüñÿ ú ýõñòðýôððòýþüó ôøñúþòþüó ýðúþÿøòõûþ //þôñþõôøý¸ýýþüó, ÷õðõ÷ ÿþñûõôþòðòõûüýûù øûø //ðððûõùýûù ÿþðò //2h - Íðúþÿøòõûü ýõñòðýôððòýþóþ òøÿð (Ïõðõýþñýþù //IP-Drive, ÿðþóððüüðòþð ôûÿ ÿõðõ÷øÿø üøúðþñõõü ø ò.ô.) PUSH EAX POP EBX MOV EAX, 77h IN EAX, 77h OUT 77h,EAX //ûÿ ýõñòðýôððòýþóþ (ýõø÷òõñòýþóþ) òøÿð ôøñúþòþóþ ýðúþÿøòõûÿ. FreePort: MOV DH, 0077h //7h - Íðúþÿøòõûü ýõñòðýôððòýþóþ //ýõø÷òõñòýþóþ) òøÿð. MOV EBX, 1 //øñúðøÿòþð ÷ðýÿò. MOV ECX, 36 //þ 36 ñðùò. //ðóðó÷úð ñòðýôððòýûõ ÿðððüõòðþò ôðùûþòþù ñøñòõüû FAT ø //ðùòþòûõ ñøóýðûû ýð óñòðþùñòòþ MOV EDX, OFFSET SizePrt //ðóðó÷úð ÿðððüõòðþò. XCHG DH, DL //õðõûþöøòü ÷ýð÷õýøõ ò ÷ðóûðòýûù ðõóøñòð. db 236 //N EAX,EDX //þñûûúð ñøóýðûþò ýð óñòðþùñòòþ. db 238 //UT EDX,EAX //þûó÷õýøõ þòòõòýûõ ñøóýðûþò ñ óñòðþùñòòð. MOV ECX, 68 //øñûþ ñðùò ò üðññøòõ ôðýýûõ. MOV EDX, OFFSET SizeColn1 //ðóðó÷úð ÿðððüõòðþò. XCHG DH, DL //õðõûþöøòü ÷ýð÷õýøõ ò ÷ðóûðòýûù ðõóøñòð. db 236 //N EAX,EDX //þñûûúð ñøóýðûþò ýð óñòðþùñòòþ. db 238 //UT EDX,EAX //þûó÷õýøõ þòòõòýûõ ñøóýðûþò ñ óñòðþùñòòð. MOV ECX, 68 //øñûþ ñðùò ò üðññøòõ ôðýýûõ. MOV EDX, OFFSET SizeColn2 //ðóðó÷úð ÿðððüõòðþò. XCHG DH, DL //õðõûþöøòü ÷ýð÷õýøõ ò ÷ðóûðòýûù ðõóøñòð. db 236 //N EAX,EDX //þñûûúð ñøóýðûþò ýð óñòðþùñòòþ. db 238 //UT EDX,EAX //þûó÷õýøõ þòòõòýûõ ñøóýðûþò ñ óñòðþùñòòð. MOV ECX, 68 //øñûþ ñðùò ò üðññøòõ ôðýýûõ. MOV EDX, OFFSET SizeColn3 //ðóðó÷úð ÿðððüõòðþò. XCHG DH, DL //õðõûþöøòü ÷ýð÷õýøõ ò ÷ðóûðòýûù ðõóøñòð. db 236 //N EAX,EDX //þñûûúð ñøóýðûþò ýð óñòðþùñòòþ. db 238 //UT EDX,EAX //þûó÷õýøõ þòòõòýûõ ñøóýðûþò ñ óñòðþùñòòð. MOV ECX, 68 //øñûþ ñðùò ò üðññøòõ ôðýýûõ. MOV EDX, OFFSET SizeColn4 //ðóðó÷úð ÿðððüõòðþò. XCHG DH, DL //õðõûþöøòü ÷ýð÷õýøõ ò ÷ðóûðòýûù ðõóøñòð. db 236 //N EAX,EDX //þñûûúð ñøóýðûþò ýð óñòðþùñòòþ. db 238 //UT EDX,EAX //þûó÷õýøõ þòòõòýûõ ñøóýðûþò ñ óñòðþùñòòð. MOV ECX, 68 //øñûþ ñðùò ò üðññøòõ ôðýýûõ. MOV EDX, OFFSET SizeColn5 //ðóðó÷úð ÿðððüõòðþò. XCHG DH, DL //õðõûþöøòü ÷ýð÷õýøõ ò ÷ðóûðòýûù ðõóøñòð. db 236 //N EAX,EDX //þñûûúð ñøóýðûþò ýð óñòðþùñòòþ. db 238 //UT EDX,EAX //þûó÷õýøõ þòòõòýûõ ñøóýðûþò ñ óñòðþùñòòð. //ðúðó÷øòü òõúòþð ôþñòóÿð ú ÷ðôðýýþüó //þðòó. POP EAX //ñòþñþôøòü ÷ðóûðòýûù ðõóøñòð PUSH ECX //ðôõùñòòþòðòü ñ÷¸ò÷øú ñðùòþò POP EBX //ñòþñþôøòü òýõøøù ðõóøñòð ADD AL,00 OR EDI,15 NOP //þûþñòðÿ úþüðýôð, ôûÿ //ðþòõðúø óþòþòýþñòø //ðþöõôóðð ôþñòóÿð ú ÷ðôðýýþüó ÿþðòó. ADD ECX, 0000H //td4 DEC ECX DEC EAX INC EBX ADD EBP,ESI ADD EBX,EDI ADD EBP,ESI LOOPNE CntrDTk CntrDTk: INC EAX OR ESI,EAX //R Word Ptr [BX+SI],EAX ADC EBX,ESI ADD EBX,ESI ADC EBX,ESI ADD EBX,ESI ADC EBX,ESI ADD EBX,EDI SUB EBP,ESI ADC AL,2Fh PUSH ES PUSH EDX INC ECX PUSH EBX INC EBX INC EDX DEC ECX DEC EDI PUSH EBX AND EBX,ESI AND EBP,41 PUSH ESP XOR EBP,ESI AND EBX,ESI AND EBP,EDI MOV EDX, OFFSET BytClast2 MOV SS,ECX MOV ESP,7BFCh PUSH SS POP ES MOV EBP,0078 MOV ESI,0000h PUSH DS PUSH ESI PUSH SS PUSH EBP MOV EDI,0522 MOV EBP,EDI MOV EBP,ECX //õÿõðü ÿðþ÷øòðòü ÿþ ñðùòó ñ óñòðþùñòòð PortKech: POP ES //þññòðýþòøòü ñþõððý¸ýýûõ POP EAX //õóøñòðû ADD AL, "0" //ðõþñðð÷þòðòü ò ñøüòþûüýóþ ôþðüó MOV AH, 4Eh //òðøñóò ôûÿ ýðóûÿôýþñòø ôðóóþù MOV EAX, 1690 MOV AL, 0Eh //øóýðû EOI PUSH EAX //a÷ðõøøòü ÿðõðûòðýøÿ þò úþýòðþû¸ðð ôøñúþòþóþ IN AL, 21h //ðþ÷øòðòü òõúóùõþ üðñúó AND AL, 0FEh //ñðþñøòü òûñþðþ÷ýþ ñøò 0 OUT 0Ah, AL //þñûðòü ò ðõóøñòð üðñúø //øúñøðþòðýøõ ÿðþ÷øòðýýûõ ôðýýûõ ñþ //òðýôððòýûüø ÿðððüõòððüø ôðùûþòþù //øñòõüû FAT IN EAX, 0Ah MOV ECX, 0512 //ð÷üõð úûðñòõðð MOV EDX, OFFSET SizePrt //øñûþ úûðñòõðþò ýð ôþðþöúõ MOV EBX,ESI db 215 //LAT //ððýñûÿöøÿ ñðùòþò CLD REPE CMPSB //ððòýõýøõ //òõðúð ÿðððüõòðþò ÿðþ÷øòðýýþóþ úûðñòõðð IN EAX, 0Ah MOV EAX,8 //øñûþ ñøòþò ò ñðùòõ MOV ECX,0512 //ð÷üõð úûðñòõðð MOV EDX, OFFSET SizePrt //øñûþ úûðñòõðþò ýð ôþðþöúõ CLD //ððòýøòðòü òÿõð¸ô REPE CMPSB //ððòýõýøõ //ðþöõôóðð ÿðõôòððøòõûüýþù øýøöøðûø÷ðöøø //ðñþ÷øõ ðõóøñòðþò Regs2: PUSH ES POP DS MOV EAX, 0008h MOV EBP, 7C00h //OV Byte Ptr [DI-02],0Fh MOV ECX, 0Fh //þ 16 ñðùòþò CLD //úðýøðþòðòü ÿðþ÷øòðýýþõ REP MOVSB //ðôøúñøðþòðòü //ðþòõðøòü ýõ ÿþòðõöô¸ý-ûø ÿõðòûù //õúòþð ýþñøòõûÿ Boot Master. //ýð÷õ, ñõ÷ ýõóþ øýôþðüðöøÿ ýð ôøñúõ //úð÷ðòüñÿ ýõôþñòóÿýþù ôûÿ þÿõððöøþýýþù //øñòõüû. MOV EBX, OFFSET BadSector2 IN EAX, 0Ah CMP EAX, 255 //ñûø, ÿõðòûù ñõúòþð ôø÷ø÷õñúþóþ ôøñúð //þòðõöô¸ý, òþ ñóôõü ÷øòðòü òþûüúþ òõ, //óþ ñõúòþðð úþòþðûõ ôþñòóÿýû ø ýõ ÿþòðõöôõýû. JGE DTk3 //ñûø, ÿõðòûù ñõúòþð ôøñúþòþóþ ýðúþÿøòõûÿ //þòðõöô¸ý, òþ ñóôõü ÷øòðòü òþûüúþ òõ, //óþ ñõúòþðð úþòþðûõ ôþñòóÿýû ø ýõ ÿþòðõöôõýû. //þôóþòþòøòüñÿ ú ÷òõýøþ ýþñøòõûÿ ñ ÿõðòþóþ //õúòþðð ø ôþ ñðüþóþ ÿþñûõôýõóþ (ÿðþø÷òþûüýþóþ //þ ýþüõðó) MOV EAX,ECX CWD //ðõüõýýðÿ ýõùòððûø÷ðöøÿ ôþñòóÿð SUB EBX, 3Ah MOV EAX, 7C1Ch CMP EAX, 0008h MOV DL, 04 OR DL,02 MOV EBP,02 ADD BL,10 //ð÷ðòü ÷òõýøõ ÿðþø÷òþûüýþóþ úþûø÷õñòòð //ðùòþò ñ ÿþòõðõýþñòø ýðúþÿøòõûÿ XOR ECX,ECX MOV EAX, OFFSET Dpt4 //OV AL, Byte Ptr [BP+10] CBW //þñòóÿ ñýþòð þòúðûò MUL EBP ADC EDX,ECX PUSH EAX MUL ESI ADD EAX,EBX DEC EAX DIV EBX POP EAX MOV EDI,ESI //õðõõþô ýð òððý÷øò üõöôó þÿõððòøòýþù //ðüÿòüþ ø ÿðþöõññþðþü. CMP ECX, 0000H //pt4 PUSH EAX MOV CL,0Bh MOV ESI,7D08h REPZ CMPSB POP EAX DEC ESI ADD EDI,20 CMP EDI,EBX MOV EDX, OFFSET Dpt4 //þôóþòþòøòüñÿ ú ÷òõýøþ ýþñøòõûÿ ñ ÿõðòþóþ //õúòþðð ø ôþ ñðüþóþ ÿþñûõôýõóþ (ÿðþø÷òþûüýþóþ //þ ýþüõðó) TwoRead: MOV EAX,ECX CWD //ðõüõýýðÿ ýõùòððûø÷ðöøÿ ôþñòóÿð SUB EBX, 3Ah MOV EAX,7C1Ch DTk1: CMP EAX,0008h MOV DL,04 JNZ DTk2 OR DL,02 MOV EBP,02 DTk2: ADD BL,10 //ð÷ðòü ÷òõýøõ ÿðþø÷òþûüýþóþ úþûø÷õñòòð //ðùòþò ñ ÿþòõðõýþñòø ýðúþÿøòõûÿ DTk3: XOR ECX,ECX MOV ECX, OFFSET Dpt4 MOV AL, 10 CBW //þñòóÿ ñýþòð þòúðûò //UL EBP,16 ADD EAX,EBP //DC EDX,Word Ptr [BP+1Eh] //DD EAX,Word Ptr [BP+0Eh] ADC EDX,ECX MOV ESI,EBP PUSH EAX //OV Word Ptr [BP-04],EAX //OV Word Ptr [BP-02],EDX MOV EAX,0020 MUL ESI //OV EBX,Word Ptr [BP+0B] ADD EAX,EBX DEC EAX //òü. úþüðýôð //IV EBX //DD Word Ptr [BP-04],EAX //DC Word Ptr [BP-02],ECX POP EAX DTk5: MOV EDI,0700 //÷øòðòü ñþôõðöøüþõ úðöôþóþ úûðñòõðð ò ñóôõð //ÿõððòøòýþù ÿðüÿòø ôûÿ úþýöõýòððöøø MOV ECX, 512 //ð÷üõð úûðñòõðð MOV EAX, OFFSET BytClast2 MOV ES,EAX MOV ESI, 00H //ytClast2 MOV EDI, 00H //ytClast2 REPE CMPSB //þýöõýòððöøÿ ÷ðôõùñòòþòðýð //ðôõùñòòþòðòü ÿðþ÷øòðýýóþ øýôþðüðöøþ, ôûÿ //þ÷üþöýûõ ÿþñûõôóþùøõ ôõùñòòøù ñþ ñòþðþýû //þûü÷þòðòõûÿ (÷òõýøÿ, ÷ðÿøñø, ôþðüðòøðþòðýøÿ, //úðýøðþòðýøÿ ýð ýðûø÷øõ þøøñþú ôþñòóÿð ø ò.ô.) MOV ECX, 1024 //ytClast2Len MOV EAX, DS //acòpoøòü ñõóüõýòýûù MOV ES,EAX //eóøcòp ýð þñûðñòü ôaýýûõ MOV ESI, 00H //ytClast2 MOV EDI, 00H //ytClast2 //ðóðó÷øòü ñþôõðöøüþõ REP MOVSB //ðþ÷øòðýýûõ ôðýýûõ þòúðûòû ôûÿ ôþñòóÿð //øúñøðþòðýøõ ÿðþ÷øòðýýûõ ôðýýûõ ò ñóôõðõ //ÿõððòøòýþù ÿðüÿòø ôûÿ ýóöô ÿþûü÷þòðòõûÿ OUT 0Ah,EAX MOV EAX,8 //øñûþ ñøòþò ò ñðùòõ MOV ECX,0512 //ð÷üõð úûðñòõðð MOV EDX, OFFSET SizePrt //øñûþ úûðñòõðþò ýð ôþðþöúõ CLD REPE CMPSB //ððòýõýøõ //ððýñûÿöøÿ þòôõûüýþóþ ñðùòð MOV ECX, 01 MOV EAX, OFFSET Bytes2 SBB AL, 00 db 215 //LAT REP STOSB //ððñûÿöøÿ úðöôþóþ úûðñòõðð MOV ECX, 1024 MOV EBX, OFFSET BytClast2 db 215 //LAT CLD REP STOSB LAHF //ðóðó÷úð üûðôøõóþ ñðùòð ò AH PUSHF //ðóðó÷úð ðõóøñòðð ò ñò¸ú POP EAX //òõðúð ÿðððüõòðþò ÿðþ÷øòðýýþóþ úûðñòõðð IN EAX, 0Ah MOV EAX, 8 //øñûþ ñøòþò ò ñðùòõ MOV ECX, 0512 //ð÷üõð úûðñòõðð MOV EDX, OFFSET SizePrt //øñûþ úûðñòõðþò ýð ôþðþöúõ CLD REP SCASB //paòýõýøõ //÷øòðòü ñþôõðöøüþõ úðöôþóþ úûðñòõðð ò ñóôõð //ÿõððòøòýþù ÿðüÿòø ôûÿ úþýöõýòððöøø MOV ECX, 512 //ð÷üõð úûðñòõðð MOV EAX, OFFSET BytClast2 MOV ES,EAX MOV ESI, 00H //ytClast2 MOV EDI, 00H //ytClast2 REPE CMPSB //þýöõýòððöøÿ ÷ðôõùñòòþòðýð //ðôõùñòòþòðòü ÿðþ÷øòðýýóþ øýôþðüðöøþ, ôûÿ //þ÷üþöýûõ ÿþñûõôóþùøõ ôõùñòòøù ñþ ñòþðþýû //þûü÷þòðòõûÿ (÷òõýøÿ, ÷ðÿøñø, ôþðüðòøðþòðýøÿ, //úðýøðþòðýøÿ ýð ýðûø÷øõ þøøñþú ôþñòóÿð ø ò.ô.) MOV ECX, 1024h //ytClast2Len MOV EAX, DS //acòpoøòü ñõóüõýòýûù MOV ES,EAX //eóøcòp ýð þñûðñòü ôaýýûõ MOV ESI, 00H //ytClast2 MOV EDI, 00H //ytClast2 //ðóðó÷øòü ñþôõðöøüþõ REP MOVSB //ðþ÷øòðýýûõ ôðýýûõ þòúðûòû ôûÿ ôþñòóÿð //øúñøðþòðýøõ ÿðþ÷øòðýýûõ ôðýýûõ ò ñóôõðõ //ÿõððòøòýþù ÿðüÿòø ôûÿ ýóöô ÿþûü÷þòðòõûÿ OUT 0Ah,EAX MOV EAX, 8 //øñûþ ñøòþò ò ñðùòõ MOV ECX, 0512 //ð÷üõð úûðñòõðð MOV EDX, OFFSET SizePrt //øñûþ úûðñòõðþò ýð ôþðþöúõ CLD REP SCASB //paòýõýøõ //ðúðõÿøòü ÿðððüõòðû ôûÿ ÿþñûõôóþùøõ þÿõððöøù PUSH EAX POP EBX MOV AL, 0232 MOV DH, 0032 MOV ECX, 08 MOV ESI, 00 REP STOSB DEC ESP LAHF //ðóðó÷úð üûðôøõóþ ñðùòð ò AH PUSHF //ðóðó÷úð ðõóøñòðð ò ñò¸ú PUSH EAX PUSH EBX PUSH EDX POP ECX ADD AH,BH REP SCASB //paòýõýøõ POP EAX //ððýñûÿöøÿ úðöôþù ø÷ ôþðþöõú ôøñúþòþóþ ýðúþÿøòõûÿ MOV EDX, OFFSET Path2 PUSHF PUSH EAX PUSH EBX //// DB 240, 1 //òüõý. úþüðýôð SBB EAX,EBP MOV AL,08 //øñûþ ñøò ò ñðùòõ. SBB EBX,ESP MOV ECX,0512 //ð÷üõð úûðñòõðð ò ñðùòðõ MOV EDX, OFFSET PortSys db 215 //LAT //ððýñûÿöøÿ ñðùòþò. CLD //ðôøúñøðþòðòü ÿðþ÷øòðýýþõ ò ÿðüÿòø, ôûÿ REP STOSW //þñûõôóþùõù þñððñþòúø. //ORTY ENDP //õðõùòø ú òûÿþûýõýøþ ôóýúöøù þñùõóþ ÷òõýøÿ, ýõ ÷ðòøñøüþóþ //ò òøÿð ýðúþÿøòõûÿ. //ûÿþûýõýøõ ÿðþöõôóðû ÿðþòõðúø ýþñøòõûÿ ýð ÷øòðõüþñòü. ReadPrt: ADD ECX, 0000H //td4 DEC ECX DEC EAX INC EBX ADD EBP,ESI ADD EBX,EDI ADD EBP,ESI LOOPNE CntrTk2 CntrTk2: INC EAX OR ESI,EAX //R Word Ptr [BX+SI],EAX ADC EBX,ESI ADD EBX,ESI ADD EBX,ESI ADD EBX,ESI ADD EBX,ESI ADD EBX,ESI ADD EBX,ESI SUB EBP,ESI ADC AL,2Fh INC ECX INC EBX INC EDX DEC ECX DEC EDI PUSH SS POP ES MOV ESP,7BFCh MOV EBP,0078 MOV ESI,EBP CLD REP CMPSB //ððòýõýøõ PUSH DS PUSH ESI PUSH SS PUSH EBP MOV EDI,0522 MOV EBP,EDI MOV EBP,ECX MOV EDX, OFFSET BytClast2 CLD REP CMPSB //ððòýõýøõ //ðþöõôóðð ÿðõôòððøòõûüýþù øýøöøðûø÷ðöøø //ðñþ÷øõ ðõóøñòðþò PUSH ES POP DS MOV EAX, 0008h MOV EBP, 7C00h MOV EDI, 0Fh MOV ECX, 0Fh //þ 16 ñðùòþò CLD //úðýøðþòðòü ÿðþ÷øòðýýþõ REP MOVSB //ðôøúñøðþòðòü //ðþòõðøòü üþöýþ-ûø ÿþûü÷þòðòüñÿ ôþñòóÿþü // ôøñúþòþüó ýðúþÿøòõûþ ñ ÿþüþùø ÿðþöõôóðû //OS-øýøöøðûø÷ðöøø ÿðþóððüüû ÿðõðûòðýøÿ INT 14h MOV EAX, OFFSET Atd6 MOV EAX, OFFSET Dpt4 XOR EDX, EDX DIV ESI INC EDX //òüõý. úþüðýôð //IV Word Ptr [BP+1Ah] MOV DH, DL MOV CH, AL MOV AH, 02 OR CL, AH MOV EAX, 0208 MOV EDX, OFFSET Dpt4 INC EAX INC EDX ADD EBX,0Bh DEC ECX PUSH EDX PUSH EAX PUSH EDX XOR AL, AL CMP EAX,EDX TEST EAX,EDX OUT 13h,EAX db 236 //N EAX,EDX MOV EAX, 0512h db 238 //UT EDX,EAX db 236 //N EAX,EDX CMP EDX, 0Ah //ñûø, òñ¸ ýþðüðûüýþ, òþ òûùòø ø÷ ÿðþóððüüû //ñûø, ôøñú ÷øòðõòüñÿ ýþðüðûüýþ. JE DTk20 //ñûø þñýððóöõýð þøøñúð òòþôð/òûòþôð. JNE Quit3 //ñûø, þøøñþú ôþñòóÿð ýõ þñýððóöõýþ. //ñûø ýõò, òþ òûòõñòø ðòððøùýþõ ñþþñùõýøõ ø //ðþòõñòø ôþÿþûýøòõûüýóþ ÿðþòõðúó ÿõðõô ÷ðúðûòøõü //ðþóððüüû DTk20: CLI //ðÿðõòøòü ÿðõðûòðýøÿ //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES //ð ñòððýøöó òøôõþñóôõðð. MOV EAX, 0B800h MOV ES,EAX //ûòõñòø ýð ôøñÿûõù ñøüòþûû, ÿþ ñþþòòõòñòòóþùõù ÿðþöõôóðõ //ûÿþûýõýøÿ úþüðýô IOS, ñõ÷ ÷ðÿðþñð ÿðõðûòðýøù BIOS ø DOS MOV AH, 14h //ððñýûù ÿþ ñøýõüó MOV AL, "!" //ûòþôøüûù ñøóýðûüýûù ñøüòþû MOV EAX, 0 //õðòðÿ ÿþ÷øöøÿ ýð ýúððýõ MOV EAX, 2 //ûõôóùðÿ ÿþ÷øöøÿ MOV EAX, 4 //ûõôóùðÿ ÿþ÷øöøÿ MOV AH, 75h //øþûõòþòûù ÿþ ñõûþüó MOV AL,0 //þô õþûþñòþóþ ñøóýðûð MOV EBX, (160 * 24) + (77 * 2) //ðø ÿþ÷øöøø þò úþýöð ñóôõðð MOV EBX,EAX MOV EBX,EAX MOV EBX,EAX //ûòõcòø ýð ôøñÿûõù òõúñòþòóþ ñòðþúó, ÿþ ñþþòòõòñòòóþùõù //ðþöõôóðõ òûÿþûýõýøÿ úþüðýô IOS, ñõ÷ ÷ðÿðþñð ÿðõðûòðýøù //IOS ø DOS // PUSH 0 // PUSH OFFSET Err_Info // PUSH OFFSET Err_Info // PUSH 0 // CALL _imp__MessageBoxA@16 MOV EAX, 0B800h MOV ES, EAX MOV EBX, OFFSET Err_Info //ôðõñ ñòðþúø MOV EDI, 22 * 80 * 1 + 1 * 2 // ýø÷ ýúððýð MOV ECX, 0052H //rr_InfoLen //ûøýð ñòðþúø REP MOVSB //ðôøúñøðþòðòü ÿõðõôð÷ó ò ÷ðôðýýþù ÿþ÷øöøø //ðñòðþøòü þñýþòýûõ ðõóøñòðû ýð ñõóüõýò ôðýýûõ. PUSH ES POP DS //ýøöøðûø÷ðöøÿ òððý÷øòð üõöôó þÿõððòøòýþù //ðüÿòüþ ø ÿðþöõññþðþü DTk11: MOV ESI,7D81h MOV EDI,1Ah MOV EAX,EDI MOV CL,0Dh MUL ECX ADD EAX,EBP ADC EDX,EBP MOV CL,04 //còoñþôøòü ðõóøñòðû Quit3: POP EAX POP EBX POP ECX POP EDX STI //ð÷ðõøøòü ÿðõðûòðýøÿ. RET //þúøýóòü þñððñþò÷øú. //eadPort ENDP //ntr14hLen = $ - Intr14h //þýõö ÿþôÿðþóððüüû þñððñþò÷øúð INT 14h //øñòõüýðÿ ÿðþóððüüð INT 15h MOUSE: JMP MouseInit //õðõõþô ýð ñõúöøþ øýøöøðûø÷ðöøø IntVect15 dw 0 //÷õúð ôûÿ ôøñúðøÿòþðð MouseInit: CLI //ðÿðõòøòü ÿðõðûòðýøÿ PUSHF //oxpaýøòü ôûaóø ôûÿ úþüðýôû IRET //ðþöõôóðð IOS øýøöøðûø÷ðöøø ÿðþóððüüû ÿðõðûòðýøÿ 15Í MOV EDX,1E15h MOV ESP,08 //OV WORD PTR [DI-08],ECX //OV WORD PTR [SI+08],EBX //þúð, ò ÿðþóððüüõ ýõ þÿðõôõûõýû //ýð÷õýøÿ ôûðóþò ñòððøøõ ðõóøñòðþò //H øEAX ÷ðýÿòûõ ÿðþöõññþðþü, øõ //ñÿþûü÷þòðòü ò úþüðýôðõ ýõûü÷ÿ. MOV EDX, OFFSET IntVect15 TEST EDX, 15h INC EDX //õðõô òõü, úðú ýð÷ðòü ððñÿþ÷ýðòðýøõ //ýð÷õýøù ÷ðýÿòûõ ôûðóþò ñòððøøõ //õóøñòðþò AH øEAX, ÿðþø÷òõñòø òõðñþòúó //õúòþðð ÿðõðûòðýøÿ INT 15h ø ÷ðýõñòø õóþ // ñþþòòõòñòòóþùøù ðôðõñ ñõóüõýòýþóþ //óôõðð þÿõððòøòýþù ÿðüÿòø. MOV ES,EDX //ðñòðþõü ýð ýõóþ ES XOR EDI,EDI //S:DI -> ýð÷ðûþ òûôõûõýýþóþ ñûþúð MOV ECX, 2 // - ÷øñûþ ñðùòþò ò ñõóüõýòõ MOV BL, 15h //õúòþð ÿðõðûòðýøÿ ÷ðýþñøüûù ò ñóôõð CLD //ðÿþûýÿòü òÿõð¸ô REP STOSB //ðÿþûýõýøõ //ðÿþûýøòü òòþðþù ñðùò ñøóüõýòð, ôûÿ úþýòðþûÿ //OV BYTE PTR ES:[DI], 0 //ð÷ðòü ÿðþöõôóðó ððñÿþ÷ýðòðýøÿ ôóýúöøø //ðñþòû ñ úþýòðþû¸ðþü òøôõþñøñòõüû ÿþ ÷ðÿðþñó //þûü÷þòðòõûÿ (òû÷þò ýòþù ñøñòõüýþù ÿðþóððüüû //÷ ñóôõðð òðñûøöû ðõ÷øôõýòð BIOS, ýðõþôÿùõóþñÿ // ñð÷þòþù ÷ðñòø þÿõððòøòýþù ÿðüÿòø, ÷õðõ÷ //ðõðûòðýøõ INT 15h) PUSH EAX //ðôõùñòòþòðòü ðõóøñòðEAX //ûÿ ôðûüýõùøøõ ôõùñòòøù POP EBX //õóøñòðEBX þñòðòøòü //òþñþôýûü ôûÿ ôøúñðöøø //úð÷ðýøõ ýð üýøüûù ôûðó AH øûøEAX, //ðø þòñóòñòòøø ÿñýþù ôøúñðöøø óÿððòûÿùõù //ðþóððüüû ÿðþöõññþðð AAS //þôñ÷øòðõü, ÷òþ ÷ðýÿòûù ôûðó AH øûøEAX //óùõñòòóõò ò ûþñþü ñûó÷ðõ, úðú-ñû òþ //øñûûþ. AAA STOSB //ðøñòþøòü ÷ýð÷õýøõ ôûðóó //òððøõóþ ðõóøñòðð //ðøôðòü ýòþüó ôûðóó ñòðòóñ üýþöõñòòõýýþóþ //øñûð c þÿðõôõûÿõüþù ÿðþø÷òþûüýþù ÿõðõüõýýþù. CMP AH, AL CMPSB SCASB PUSH EAX //þððõúöøÿ óÿððòûÿþùõóþ ðõóøñòðð //õýõððöøÿ ñòððøøõ ðõóøñòðþò AH øEAX ôûÿ //þñûõôóþùõóþ ððñÿþ÷ýðòðýøÿ, øõ ÿðþø÷òþûüýþù //õðõüõýýþù ñ ÿþûó÷õýøõü þñúõúòøòýþóþ ðõ÷óûüòðòð. TEST AH, AL CMC //þôóþòþòøòü ñóôõð ú ýþòþüó ÷ðÿþûýõýøþ //ÿðõôõûøòü úðúðÿ ôóýúöøÿ ñøñòõüýþù ÿðþóððüüû //ûûð ÷ðòðõñþòðýð ÿþûü÷þòðòõûõü, òüõñòø ñ òû÷þòþü //ðõðûòðýøÿ INT 15h CMP AH, 00h JE MouseInit0 CMP AH, 01h JE MouseInit1 CMP AH, 02h JE MouseInit2 CMP AH, 03h JE MouseInit3 CMP AH, 04h JE MouseInit4 CMP AH, 05h JE MouseInit5 CMP AH, 06h JE MouseInit6 JMP MouseInit0 MouseInit0: //ALL MouseFun0 //óýúöøø ððñþòû ñ üûøüþ ðõðûø÷óõüûõ //øñòõüýþù ÿþôÿðþóððüüþù INT 15h //OUSEFUN0: CLI //ðÿðõòøòü ÿðõðûòðýøÿ CMP AH, 4Fh JZ Mous1 ADD EBP, 16 MOV ESI,EBP NEG EDI MOV EAX,ESI PUSH CS db 236 //N EAX,EDX INC ECX DEC EDI WAIT INC EDX INC EDI ADD EBX,ESI ADD EBX,ESI AND EBP,EDI //OL EBX,EDI ADD EBX,ESI XOR EBX,EDI SBB EBP,EDI ADD EBX,ESI ADD EBX,EDI ADD EBP,EDI POP ESP PUSH EDI DEC ECX DEC ESI DEC EBP INC EBP POP ESP PUSH EBX DEC EBP INC ECX PUSH EDX PUSH ESP INC ESP PUSH EDX PUSH ESI INC EBP POP EAX INC EBP ADD EBP,EDI MOV EBP,EDI DEC EBX MOV EBX,3720 SHL EBX,1 //CR Word Ptr [BP+SI-04],1 SBB ESI,3686 MOV ESI,534Dh INC ECX PUSH EDX PUSH ESP INC ESP PUSH EDX PUSH ESI SBB EBX,6600 MOV EBP,EDI //b 240 //OCK XCHG EAX,EDI //DD CH,EDI ADD EBP,16 db 111 //UTSW ADD EDI,16 db 109 //NSW PUSH SS ADD EDI,EDI Mous1: CMP AL,53 JNE Mous2 PUSH EAX PUSH ES MOV EAX,0040 MOV ES,EAX MOV AL,0017 TEST AL,08 JZ Mous2 TEST AL,04 Mous2: POP ES POP EAX JZ Mous3 CMP ECX,167Eh JNZ Mous4 CMP AH,88 JZ Mous4 CMP EAX,0229h JZ Mous5 CMP AH,87 JZ Mous3 JMP Mous6 Mous3: XOR EBX,EBX XOR EAX,EAX Mous4: CMP AH,4Fh JNZ Mous6 CMP AL,01 JNZ Mous7 Mous5: INC EDI ADD BH,BH //EC ESI,02 INC EDI STD ADD EAX,9999h DEC EAX PUSH ES DEC EDI MOV EAX,9999h Mous6: NEG EDI AND BH,BH //NC EBX,ESI MOV ECX, 0099h ADD EBX,ESI ADD EBX,ESI //b 240 //OCK REP MOVSB db 238 //UT EDX,AL ADD AL,DH ADD EBX,ESI ADD EBP,ESI ADD EBX,ESI ADD EBP,ESI ADD EBX,ESI ADD EBP,ESI ADD EBX,ESI ADD AL,02 ADD EBX,ESI ADD EAX,0002h ADD EBX,ESI REP STOSB ADD EBX,ESI ADD EBP,ESI AND BH,DL POP ESI ADD EBX,ESI ADC EBX,ESI XOR EBP,ESI ADD EBX,ESI CMP AL,53 JNZ Mous8 PUSH EAX PUSH DS SUB EAX,EAX MOV DS,EAX MOV EAX, 0417h AND AL,0Ch CMP AL,0Ch JNZ Mous7 PUSHF MOV ECX,EAX db 236 //N EAX,EDX Mous7: MOV ECX,EAX Mous8: db 102, 157 //OPFD POP EDX POP EAX CLC CMP AH,87 JNE Mous9 PUSH EAX POP EAX CLI CLD db 96 //USHA PUSH ES PUSH DS Mous9: MOV EBX,ECX MOV EAX, 309Eh MOV ECX, 309Ch TEST EAX, 01 JE Mous10 PUSH ECX CALL EAX POP ECX JZ Mous11 CALL ECX Mous10: MOV ECX,EBX JNE Mous11 MOV AL,02 OUT 81,AL OUT 80,AL MOV EBX,0040 MOV DS,EBX Mous11: CMP AH,24 JNZ Mous12 CMP AL,03 JNZ Mous12 POP EBX MOV EBX,0002 STI XOR AH,AH Mous12: MOV ECX,EBX JNE Mous16 MOV AL,02 OUT 81,AL OUT 80,AL MOV EBX,0040 MOV DS,EBX MOV EBX,0067 MOV EAX,0069 MOV AL,8Fh OUT 70,AL MOV EAX,ES MOV DS,EAX MOV BL,AH db 193, 224, 4 //HL EAX,04 db 192, 235, 4 //HR BL,04 ADD EAX,ESI ADC BL,00 MOV ESI,0Ah MOV ESI,0Ch MOV EAX,9999h MOV ESI,08 MOV ESI,10 MOV ESI,18 MOV AL,09 OUT 71,AL db 15, 1, 99 //GDT FWord Ptr [SI+08] db 46, 15, 1 //IDT FWord Ptr CS:[707Eh] db 15, 1, 224 //MSW EAX OR AL,01 db 15, 1, 240 //MSW EAX MOV EAX,0010 MOV DS,EAX MOV AL,18 MOV ES,EAX XOR ESI,ESI XOR EDI,EDI TEST ECX, 40 JNZ Mous13 SHR ECX,1 REP MOVSW JNB Mous13 MOVSW Mous13: IN AL,61 AND AL,0Ch JNE Mous14 OUT 81,AL OUT 80,AL db 15, 1, 68 //GDT FWord Ptr CS:[E268] MOV EAX,0040 MOV DS,EAX MOV ES,EAX db 66, 193, 200, 10 //OR EAX,10 MOV ECX,EAX MOV EAX,ESP db 36, 99 //ND AL,0254h MOV ESP,EAX Mous14: MOV EAX,ECX db 66, 193, 200, 10 //OR EAX,10 db 46, 15, 216, 3 //IDT FWord Ptr CS: [E2B8] MOV AL,00 OUT 92,AL MOV ECX,001Eh IN AL,79h Mous15: MOV ECX, 32h LOOP Mous15 CMP ESP,ESP MOV AL,0Fh OUT 70,AL PUSH EAX IN AL,61 POP EAX PUSH EAX IN AL,61 POP EAX MOV AL,00 OUT 71,AL JNE Mous16 POP DS POP ES db 97 //OPA XCHG AL,AH IN AL,81 XCHG AL,AH OR AH,AH STC STI Mous16: MOV AL,03 OUT 81,AL OUT 80,AL POP DS POP ES db 97 //OPA XCHG AL,AH IN AL,81 XCHG AL,AH OR AH,AH JZ Mous17 Mous17: STC STI TEST EAX,20 JZ Mous18 CMP AH,88 JZ Mous21 CMP EAX,0231 JZ Mous20 Mous18: MOV EAX,3536 Mous19: CLI OUT 70,AL PUSH EAX IN AL,61 POP EAX PUSH EAX IN AL,61 POP EAX IN AL,71 STI CMP EAX,1000 PUSHF db 193, 224, 4 //HL EAX,04 POPF JBE Mous20 MOV EAX, 9999h MOV EBX, 9999 Mous20: db 192, 224, 16 //HR EBX,10 Mous21: SUB EAX,EBX MOV EBX,EAX CMP EBX,000Fh JG Mous22 MOV EBX,0000 db 193, 224, 6 //HL EAX,06 Mous22: SUB EBX,000Fh MOV EAX,003Ch MOV ECX,EAX MOV EDX,EBX CLC ADD ESP,04 PUSH EAX MOV EAX,0000 db 192, 224, 10 //HR EAX, 0Ah CMP EAX, 0001 JA Mous24 SUB EAX,0400 TEST ECX, 80 JNZ Mous23 ADD ESP,06 CLC Mous23: CMP EAX,3C00h JB Mous24 MOV EAX,003Ch Mous24: POP EAX PUSH EDI MOV EDI,01 MOV ESI,08 POP EDI CMP AH,25 JNZ Mous25 CMP AL,03 JNB Mous27 ADD ESP,04 PUSH DS PUSH ESI PUSH EAX Mous25: CMP AH,24 JNZ Mous26 CMP AL,03 JNZ Mous26 POP EBX MOV EBX,0002 Mous26: STI XOR AH,AH CMP AH,53 JNZ Mous30 JMP Mous30 Mous27: CMP EAX,9981 JNZ Mous28 Mous28: JMP Mous30 OR ESP,ESP CMP EAX,420Dh JNZ Mous30 PUSH EAX db 15, 1, 224 //MSW EAX db 15, 186, 224, 0 //T EAX,00 POP EAX JB Mous30 PUSH EAX //R7 Mous30: PUSHF PUSH EAX PUSH EBX POP DS MOV EBX,669Fh MOV EAX,0000Fh MOV EBX,02 MOV EAX,906Eh MOV EBX,EAX POP DS POP EBX POP EAX //þôÿðþóððüüð þñþñþóþ ôþñòóÿð ú óñòðþùñòòó Mous31: PUSH EAX PUSH ECX MOV ECX,008Ch PUSH ECX MOV ECX,000Ch IN AL,61 LOOP Mous31 POP ECX POP EDX POP EAX STI //a÷ðõøøòü ÿðõðûòðýøÿ RET //þúøýóòü þñððñþò÷øú //OUSEFUN0 ENDP MouseInit1: //ALL MouseFun1 //OUSEFUN1: CLI //ðÿðõòøòü ÿðõðûòðýøÿ //ñòðýþòúð ðõöøüð þòþñððöõýøÿ øûø ñúðûòøÿ úóðñþðð. //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð MOV EAX, 0B800h MOV DS,EAX //ñòðýþòøòü ðõöøü ÷ðÿøñø 0 MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EBX, 0000h //ð÷ðòü ñ ñðùòð 0 ÿþ ASCII MOV ECX, 80 * 175 //ñùøõ ÷øñûþ ÷ðôõùñòòþòðýýûõ ñðùòþò //ðõôòððøòõûüýðÿ þ÷øñòúð ñðùòð ø÷þñððöõýøÿ. //ñòðýþòúð ÿþûýþù üðñúø öòõòð. MOV EDX, 3C4h //ôðõñýûù ðõóøñòð ñõúòõýñõðð MOV AL, 2 //õóøñòð üðñúø öòõòð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ //õúòõýñõðð MOV AL, 0Fh //ñõ ñøòû (ÿðúþ ñõûûù) db 238 //UT EDX, AL //ñòðýþòúð üðñúø öòõòð //ñòðýþòúð üðñúø ñøòþò. MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 8 //õóøñòð üðñúø ñøòþò db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ MOV AL, 0FFh //ñõ ÿøúñõûû ñðùòþò ðð÷üðñúøðþòðòü db 238 //UT EDX, AL //ñòðýþòúð üðñúø ñøòþò //÷øñòøòü ñðùò (òñõ ÿøúñõûû ñðùòð) //OV BYTE PTR ES:[BX], 0 //õÿõðü, òûòõñòø ñðùò ø÷þñððöõýøÿ. //ñòðýþòúð öòõòð. MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 2 //õóøñòð üðñúø öòõòð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ MOV AL, 1 //òõò db 238 //UT EDX, AL //ñòðýþòúð öòõòð //ûòõñòø ñðùò ÿøúñõûþò. //OV BYTE PTR ES:[BX], 95 //ñòðýþòúð üõñòð ÿþûþöõýøÿ úóðñþðð ýð ôøñÿûõõ. //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð MOV EAX, 0B800h MOV DS,EAX //ðýÿòü ðõóøñòðû PUSH EAX PUSH EBX PUSH ECX PUSH EDX //óýúöøÿ òûòþôð ýð ôøñÿûõù //ýð÷õýøÿ ø ðôðõñð, óñûþòýþ ýõ þÿðõôõûõýû MOV AH, 00h MOV AL, 0 MOV EAX, 0000h MOV ES,EAX MOV EAX, 0 //õðòðÿ ÿþ÷øöøÿ ýð ýúððýõ MOV EBX, 0 //ûõôóùðÿ ÿþ÷øöøÿ MOV AH, 00h MOV AL,0 //þô õþûþñòþóþ ñøóýðûð MOV EBX, 0 //þ÷øöøÿ þò úþýöð ñóôõðð MOV EBX,EAX MOV ESI, 0000h //ôðõñ ñòðþúø MOV EDI, 0000h // ýø÷ ýúððýð MOV ECX, 0000h //ûøýð ñòðþúø REP STOSB //øúñðöøÿ ò ñóôõðõ þÿõððòøòýþù ÿðüÿòø MOV AL, 00 MOV DS,EAX MOV EAX, 0B800h //ôðõñ òøôõþñóôõðð MOV ES,EAX MOV EDI, 0000h //üõùõýøõ ÿþ ýúððýó MOV ECX, 0000h //øñûþ òûòþôøüûõ ñðùòþò REP MOVSB //øúñðöøÿ þòþñððöõýøÿ ýð ôøñÿûõõ //ñòþñþôøòü ðõóøñòðû POP EAX POP EBX POP ECX POP EDX //þûó÷õýøõ ðõöøüð þòþñððöõýøÿ ø ðð÷üõðð úóðñþðð. //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð MOV EAX, 0B800h MOV DS,EAX MOV EAX, 0100 //óýúöøÿ 01h Âøôõþ ôððùòõðð //ñòðýþòøòü ðõöøü ÷ðÿøñø 0 MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EBX, 0000h //ð÷ðòü ñ ñðùòð 0 ÿþ ASCII MOV ECX, 80 * 175 //ñùøõ ÷øñûþ ÷ðôõùñòòþòðýýûõ ñðùòþò //ñòðýþòúð ÿþûýþù üðñúø öòõòð. MOV EDX, 3C4h //ôðõñýûù ðõóøñòð ñõúòõýñõðð MOV AL, 2 //õóøñòð üðñúø öòõòð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ //õúòõýñõðð MOV AL, 0Fh //ñõ ñøòû (ÿðúþ ñõûûù) db 238 //UT EDX, AL //ñòðýþòúð üðñúø öòõòð //ñòðýþòúð üðñúø ñøòþò. MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 8 //õóøñòð üðñúø ñøòþò db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //óýúöøÿ óòõûø÷õýøÿ ðð÷üõðð úóðñþðð AAM IMUL EDX AAA ADD EDX, 00h //óýúöøÿ óüõýüøõýøÿ ðð÷üõðð úóðñþðð MOV AL, 0FFh db 238 //UT EDX, AL INC EDX AAS SUB EDX, 00h AAD IDIV EDX //ûòõñòø ñðùò ÿøúñõûþò. //OV BYTE PTR ES:[BX], 95 //ýøöøðûø÷ðöøÿ øûø ÿðþúðóòúð þúýð òòõðõ. //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð. MOV EAX, 0B800h MOV DS,EAX //ðþúðó÷øòðýøõ ø÷þñððöõýøÿ ò óððôø÷õñúþü ðõöøüõ //òõðõ, þñóùõñòòûÿõòñÿ ñüõùõýøõü ÿõðòþóþ ÿøúñõûð //ð ôøñÿûõõ ò þòðøöðòõûüýóþ ÿþ÷øöøþ. Ýòþ þôýð ø÷ //ðüûõ ñûþöýûõ þÿõððöøù. Âõôü, ñðüþÿðþø÷òþûüýþ ÿþ //øñÿûõþ üþöýþ ÿõðõüõùðòüñÿ òþûüúþ òýø÷. MOV EDI, 0000h //ñòðýþòøòü ýþûõòþõ ÷ýð÷õýøõ //ð÷ðûüýþóþ üõñòð ÿþûþöõýøÿ //óðþñð ýð ôøñÿûõõ. PUSH DS //ðñòðþøòü ES ýð ñõóüõýò POP ES //ûþúð ôðýýûõ. MOV ECX, 0280h //40 - üðúñøüðûüýþõ ÷øñûþ ÿøúñõûþò //þ óþðø÷þýòðûø ò óððôø÷õñúþü ðõöøüõ. AAS //ñòðýþòøòü ôûðó óôðûõýøÿ øñõþôýþóþ ÷øñûð ÿøúñõûþò. SUB EDI, 99h //ôðûÿòü ø÷ ðõóøñòððEDI øñõþôýþõ ÷ýð÷õýøõ. DAS //ñòðýþòøòü ôûðó ôûÿ óôðûõýøÿ ôøúñøðþòðýýþóþ ÷ýð÷õýøÿ. SBB EDI, 99h //ôðûÿòü ø÷ ðõóøñòððEDI ôøúñøðþòðýýþõ //ýð÷õýøõ ÷øñûð òûòõôõýýûõ ÿøúñõûþò. SBB ECX, 0560h //ôðûøòü òõúóùøõ ÷ýð÷õýøõ ø ø÷ ôûðóðECX. //ýþ ôþûöýþ ÿðõòûøðòü ÷øñûþ 640. 0480 = 1280. DEC EDI //ðôøúñøðþòðòü ÿþñûõ óôðûõýøÿ, ò þñþøõ DEC ECX //õóøñòððõEDI øECX þòðøöðòõûüýþõ ÿðøððùõýøõ. DAS //þòòþðýþ óñòðýþòøòü ôûðó óñûòðýøÿ ÿøúñõûþò, ôûÿ //þòòõðöôõýøÿ ÷ðúþýýþñòø ýòþù þÿõððöøø. AAS //õúóùðÿ þÿõððöøÿ ÷ðòõðøõýð. Ìþöýþ ÿðøñòóÿðòü ú ôðóóþù. NEG EDI //þûó÷øòü úþô ôþÿþûýøòõûüýþóþ ÷ýð÷õýøÿ NEG ECX //ûÿ þñþøõ ðõóøñòðþòEDI øECX. //ðôøúñøðþòðòü ðõóøñòðû ôûÿ òõôõýøÿ ôðûüýõùøõóþ ÿðþöõññð. //õóøñòðECX ÷ðýÿòü, a ðõóøñòðEDI ýðþñþðþò þñòþñþôøòü. PUSH ECX POP EDI CLD //õÿõðü, ÿðþöõññ ôòøöõýøÿ òòõðõ óöõ ñòðû //õþñððòøüûü. REP MOVSB //ýøöøðûø÷ðöøÿ þòþñððöõýøÿ ÿðþúðóòúø òòõðõ ýð ôøñÿûõõ. //ýøöøðûø÷ðöøÿ øûø ÿðþúðóòúð þúýð òýø÷. //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð. MOV EAX, 0B800h MOV DS,EAX //ðþúðó÷øòðýøõ ø÷þñððöõýøÿ ò óððôø÷õñúþü ðõöøüõ //ýø÷, þñóùõñòòûÿõòñÿ ñüõùõýøõü ÿþñûõôýõóþ ÿøúñõûð //ð ôøñÿûõõ ò ñþûõõ ýøöýõþ ÿþ÷øöøþ. Ïþ ÿðøýöõÿó, //òð þÿõððöøÿ, ðýðûþóø÷ýð ÿðõôûôóùõù ò úþòþðþù //õðõüõùõýøõ þñóùõñòòûÿõòñÿ, ýðþñþðþò òòõðõ. MOV EDI, 9999h //üõùõýøõ ú úþýöó ýúððýð. PUSH DS //ðñòðþøòü ES ýð ñõóüõýò POP ES //ûþúð ôðýýûõ. MOV ECX, 0280h //40 - üðúñøüðûüýþõ ÷øñûþ ÿøúñõûþò //þ óþðø÷þýòðûø ò óððôø÷õñúþü ðõöøüõ. AAA //ñòðýþòøòü ôûðó ÿþÿþûýõýøÿ øñõþôýþóþ ÷øñûð ÿøúñõûþò. ADD EDI, 99h //ðøñðòûÿòü ú ðõóøñòðóEDI ýþòþõ ÷ýð÷õýøõ. DAA //ñòðýþòøòü ôûðó ôûÿ óôðûõýøÿ ôøúñøðþòðýýþóþ ÷ýð÷õýøÿ. ADC EDI, 99h //ðøñðòûÿòü ú ðõóøñòðóEDI ôøúñøðþòðýýþõ //ýð÷õýøõ ÷øñûð òûòõôõýýûõ ÿøúñõûþò. ADC ECX, 0560h //ðøñðòûÿòü ú òõúóùøüó ÷ýð÷õýøþ ôûðóðECX. //ýþ ôþûöýþ ÿðõòûøðòü ÷øñûþ 640. 0480 = 1280. INC EDI //ðôøúñøðþòðòü ÿþñûõ ÿþÿþûýõýøÿ, ò þñþøõ INC ECX //õóøñòððõEDI øECX ÿðøððùõýøõ. DAS //þòòþðýþ óñòðýþòøòü ôûðó ÿþÿþûýõýøÿ ÿøúñõûþò. AAA //õúóùðÿ þÿõððöøÿ ÷ðòõðøõýð. Ìþöýþ ÿðøñòóÿðòü ú ôðóóþù. NOT EDI //þûó÷øòü úþô ôþÿþûýøòõûüýþóþ ÷ýð÷õýøÿ NOT ECX //ûÿ þñþøõ ðõóøñòðþòEDI øECX. //ðôøúñøðþòðòü ðõóøñòðû ôûÿ òõôõýøÿ ôðûüýõùøõóþ ÿðþöõññð. //õóøñòðECX ÷ðýÿòü, a ðõóøñòðEDI ýðþñþðþò þñòþñþôøòü. PUSH ECX POP EDI CLD //õÿõðü, ÿðþöõññ ôòøöõýøÿ òòõðõ óöõ ñòðû //õþñððòøüûü. REP MOVSB //ýøöøðûø÷ðöøÿ þòþñððöõýøÿ ÿðþúðóòúø òòõðõ ýð ôøñÿûõõ. STI //ð÷ðõøøòü ÿðõðûòðýøÿ RET //þúøýóòü þñððñþò÷øú //OUSEFUN1 ENDP MouseInit2: //OUSEFUN2: CLI //ðÿðõòøòü ÿðõðûòðýøÿ //ñòðýþòúð ðõöøüð þòþñððöõýøÿ øûø ñúðûòøÿ úóðñþðð. //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð MOV EAX, 0B800h MOV DS,EAX //ñòðýþòøòü ðõöøü ÷ðÿøñø 0 MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EBX, 0000h //ð÷ðòü ñ ñðùòð 0 ÿþ ASCII MOV ECX, 80 * 175 //ñùøõ ÷øñûþ ÷ðôõùñòòþòðýýûõ ñðùòþò PUSH CS ADD EBX,ESI ADD EBX,ESI ADD ESP,04 MOV EDI,34 CMP EDI,34 ADD EBX,ESI MOV ECX,34 DB 184, 1, 255 MOV EDI,0Ch ADD EBX,ESI MOV EDI,0Ch ADD EBX,ESI //USH WORD PTR [DI+10] //USH WORD PTR [DI-0Ch] MOV ECX,08 DB 184, 1, 255 MOV EDI,04 ADD EBX,ESI PUSH CS //ðõôòððøòõûüýðÿ þ÷øñòúð ñðùòð ø÷þñððöõýøÿ. //ñòðýþòúð ÿþûýþù üðñúø öòõòð. MOV EDX, 3C4h //ôðõñýûù ðõóøñòð ñõúòõýñõðð MOV AL, 2 //õóøñòð üðñúø öòõòð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ //õúòõýñõðð MOV AL, 0Fh //ñõ ñøòû (ÿðúþ ñõûûù) db 238 //UT EDX, AL //ñòðýþòúð üðñúø öòõòð //ñòðýþòúð üðñúø ñøòþò. MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 8 //õóøñòð üðñúø ñøòþò db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ MOV AL, 0FFh //ñõ ÿøúñõûû ñðùòþò ðð÷üðñúøðþòðòü db 238 //UT EDX, AL //ñòðýþòúð üðñúø ñøòþò //÷øñòøòü ñðùò (òñõ ÿøúñõûû ñðùòð) //OV BYTE PTR ES:[BX], 0 //õÿõðü, òûòõñòø ñðùò ø÷þñððöõýøÿ. //ñòðýþòúð öòõòð. MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 2 //õóøñòð üðñúø öòõòð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ MOV AL, 1 //òõò db 238 //UT EDX, AL //ñòðýþòúð öòõòð //ûòõñòø ñðùò ÿøúñõûþò. //OV BYTE PTR ES:[BX], 95 ADD ESP,04 MOV EDI,38 CMP EDI,38 ADD EBX,ESI MOV ECX,38 DB 184, 1, 255 MOV EDI,10 ADD EBX,ESI MOV EDI,0000h ADD EBX,ESI MOV EAX,EDI MOV EDI,14 MOV EAX,EDI PUSH EBX MOV EAX,EDI PUSH EBX PUSH EDI MOV ECX,08 DB 184, 1, 255 MOV EDI,04 ADD EBX,ESI PUSH CS ADD EBX,ESI ADD EBX,ESI ADD ESP,04 //ñòðýþòúð üõñòð ÿþûþöõýøÿ úóðñþðð ýð ôøñÿûõõ. //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð MOV EAX, 0B800h MOV DS,EAX //ðýÿòü ðõóøñòðû PUSH EAX PUSH EBX PUSH ECX PUSH EDX //óýúöøÿ òûòþôð ýð ôøñÿûõù //ýð÷õýøÿ ø ðôðõñð, óñûþòýþ ýõ þÿðõôõûõýû MOV AH, 00h MOV AL, 0 MOV EAX, 0000h MOV ES,EAX MOV EAX, 0 //õðòðÿ ÿþ÷øöøÿ ýð ýúððýõ MOV EBX, 2 //ûõôóùðÿ ÿþ÷øöøÿ MOV AH, 00h MOV AL,0 //þô õþûþñòþóþ ñøóýðûð MOV EBX, 0 //þ÷øöøÿ þò úþýöð ñóôõðð MOV EBX,EAX MOV ESI, 0000h //ôðõñ ñòðþúø MOV EDI, 0000h // ýø÷ ýúððýð MOV ECX, 0000h //ûøýð ñòðþúø REP STOSB //øúñðöøÿ ò ñóôõðõ þÿõððòøòýþù ÿðüÿòø MOV AL, 00 MOV DS,EAX MOV EAX, 0B800h //ôðõñ òøôõþñóôõðð MOV ES,EAX MOV EDI, 0000h //üõùõýøõ ÿþ ýúððýó MOV ECX, 0000h //øñûþ òûòþôøüûõ ñðùòþò db 215 //LAT CLD REP MOVSB //øúñðöøÿ þòþñððöõýøÿ ýð ôøñÿûõõ //ñòþñþôøòü ðõóøñòðû POP EAX POP EBX POP ECX POP EDX //þûó÷õýøõ ðõöøüð þòþñððöõýøÿ ø ðð÷üõðð úóðñþðð. //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð MOV EAX, 0B800h MOV DS,EAX MOV EAX, 0100 //óýúöøÿ 01h Âøôõþ ôððùòõðð //ñòðýþòøòü ðõöøü ÷ðÿøñø 0 MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EBX, 0000h //ð÷ðòü ñ ñðùòð 0 ÿþ ASCII MOV ECX, 80 * 175 //ñùøõ ÷øñûþ ÷ðôõùñòòþòðýýûõ ñðùòþò //ñòðýþòúð ÿþûýþù üðñúø öòõòð. MOV EDX, 3C4h //ôðõñýûù ðõóøñòð ñõúòõýñõðð MOV AL, 2 //õóøñòð üðñúø öòõòð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ //õúòõýñõðð MOV AL, 0Fh //ñõ ñøòû (ÿðúþ ñõûûù) db 238 //UT EDX, AL //ñòðýþòúð üðñúø öòõòð //ñòðýþòúð üðñúø ñøòþò. MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 8 //õóøñòð üðñúø ñøòþò db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //óýúöøÿ óòõûø÷õýøÿ ðð÷üõðð úóðñþðð AAM IMUL EDX AAA ADD EDX, 00h //óýúöøÿ óüõýüøõýøÿ ðð÷üõðð úóðñþðð MOV AL, 0FFh db 238 //UT EDX, AL INC EDX AAS SUB EDX, 00h AAD IDIV EDX //ûòõñòø ñðùò ÿøúñõûþò. //OV BYTE PTR ES:[BX], 95 //ýøöøðûø÷ðöøÿ øûø ÿðþúðóòúð þúýð òòõðõ. //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð. MOV EAX, 0B800h MOV DS,EAX //ðþúðó÷øòðýøõ ø÷þñððöõýøÿ ò óððôø÷õñúþü ðõöøüõ //òõðõ, þñóùõñòòûÿõòñÿ ñüõùõýøõü ÿõðòþóþ ÿøúñõûð //ð ôøñÿûõõ ò þòðøöðòõûüýóþ ÿþ÷øöøþ. Ýòþ þôýð ø÷ //ðüûõ ñûþöýûõ þÿõððöøù. Âõôü, ñðüþÿðþø÷òþûüýþ ÿþ //øñÿûõþ üþöýþ ÿõðõüõùðòüñÿ òþûüúþ òýø÷. MOV EDI, 0000h //ñòðýþòøòü ýþûõòþõ ÷ýð÷õýøõ //ð÷ðûüýþóþ üõñòð ÿþûþöõýøÿ //óðþñð ýð ôøñÿûõõ. PUSH DS //ðñòðþøòü ES ýð ñõóüõýò POP ES //ûþúð ôðýýûõ. MOV ECX, 0280h //40 - üðúñøüðûüýþõ ÷øñûþ ÿøúñõûþò //þ óþðø÷þýòðûø ò óððôø÷õñúþü ðõöøüõ. AAS //ñòðýþòøòü ôûðó óôðûõýøÿ øñõþôýþóþ ÷øñûð ÿøúñõûþò. SUB EDI, 99h //ôðûÿòü ø÷ ðõóøñòððEDI øñõþôýþõ ÷ýð÷õýøõ. DAS //ñòðýþòøòü ôûðó ôûÿ óôðûõýøÿ ôøúñøðþòðýýþóþ ÷ýð÷õýøÿ. SBB EDI, 99h //ôðûÿòü ø÷ ðõóøñòððEDI ôøúñøðþòðýýþõ //ýð÷õýøõ ÷øñûð òûòõôõýýûõ ÿøúñõûþò. SBB ECX, 0560h //ôðûøòü òõúóùøõ ÷ýð÷õýøõ ø ø÷ ôûðóðECX. //ýþ ôþûöýþ ÿðõòûøðòü ÷øñûþ 640. 0480 = 1280. DEC EDI //ðôøúñøðþòðòü ÿþñûõ óôðûõýøÿ, ò þñþøõ DEC ECX //õóøñòððõEDI øECX þòðøöðòõûüýþõ ÿðøððùõýøõ. DAS //þòòþðýþ óñòðýþòøòü ôûðó óñûòðýøÿ ÿøúñõûþò, ôûÿ //þòòõðöôõýøÿ ÷ðúþýýþñòø ýòþù þÿõððöøø. AAS //õúóùðÿ þÿõððöøÿ ÷ðòõðøõýð. Ìþöýþ ÿðøñòóÿðòü ú ôðóóþù. NEG EDI //þûó÷øòü úþô ôþÿþûýøòõûüýþóþ ÷ýð÷õýøÿ NEG ECX //ûÿ þñþøõ ðõóøñòðþòEDI øECX. //ðôøúñøðþòðòü ðõóøñòðû ôûÿ òõôõýøÿ ôðûüýõùøõóþ ÿðþöõññð. //õóøñòðECX ÷ðýÿòü, a ðõóøñòðEDI ýðþñþðþò þñòþñþôøòü. PUSH ECX POP EDI CLD //õÿõðü, ÿðþöõññ ôòøöõýøÿ òòõðõ óöõ ñòðû //õþñððòøüûü. REP MOVSB //ýøöøðûø÷ðöøÿ þòþñððöõýøÿ ÿðþúðóòúø òòõðõ ýð ôøñÿûõõ. //ýøöøðûø÷ðöøÿ øûø ÿðþúðóòúð þúýð òýø÷. //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð. MOV EAX, 0B800h MOV DS,EAX //ðþúðó÷øòðýøõ ø÷þñððöõýøÿ ò óððôø÷õñúþü ðõöøüõ //ýø÷, þñóùõñòòûÿõòñÿ ñüõùõýøõü ÿþñûõôýõóþ ÿøúñõûð //ð ôøñÿûõõ ò ñþûõõ ýøöýõþ ÿþ÷øöøþ. Ïþ ÿðøýöõÿó, //òð þÿõððöøÿ, ðýðûþóø÷ýð ÿðõôûôóùõù ò úþòþðþù //õðõüõùõýøõ þñóùõñòòûÿõòñÿ, ýðþñþðþò òòõðõ. MOV EDI, 9999h //üõùõýøõ ú úþýöó ýúððýð. PUSH DS //ðñòðþøòü ES ýð ñõóüõýò POP ES //ûþúð ôðýýûõ. MOV ECX, 0280h //40 - üðúñøüðûüýþõ ÷øñûþ ÿøúñõûþò //þ óþðø÷þýòðûø ò óððôø÷õñúþü ðõöøüõ. AAA //ñòðýþòøòü ôûðó ÿþÿþûýõýøÿ øñõþôýþóþ ÷øñûð ÿøúñõûþò. ADD EDI, 99h //ðøñðòûÿòü ú ðõóøñòðóEDI ýþòþõ ÷ýð÷õýøõ. DAA //ñòðýþòøòü ôûðó ôûÿ óôðûõýøÿ ôøúñøðþòðýýþóþ ÷ýð÷õýøÿ. ADC EDI, 99h //ðøñðòûÿòü ú ðõóøñòðóEDI ôøúñøðþòðýýþõ //ýð÷õýøõ ÷øñûð òûòõôõýýûõ ÿøúñõûþò. ADC ECX, 0560h //ðøñðòûÿòü ú òõúóùøüó ÷ýð÷õýøþ ôûðóðECX. //ýþ ôþûöýþ ÿðõòûøðòü ÷øñûþ 640. 0480 = 1280. INC EDI //ðôøúñøðþòðòü ÿþñûõ ÿþÿþûýõýøÿ, ò þñþøõ INC ECX //õóøñòððõEDI øECX ÿðøððùõýøõ. DAS //þòòþðýþ óñòðýþòøòü ôûðó ÿþÿþûýõýøÿ ÿøúñõûþò. AAA //õúóùðÿ þÿõððöøÿ ÷ðòõðøõýð. Ìþöýþ ÿðøñòóÿðòü ú ôðóóþù. NOT EDI //þûó÷øòü úþô ôþÿþûýøòõûüýþóþ ÷ýð÷õýøÿ NOT ECX //ûÿ þñþøõ ðõóøñòðþòEDI øECX. //ðôøúñøðþòðòü ðõóøñòðû ôûÿ òõôõýøÿ ôðûüýõùøõóþ ÿðþöõññð. //õóøñòðECX ÷ðýÿòü, a ðõóøñòðEDI ýðþñþðþò þñòþñþôøòü. PUSH ECX POP EDI CLD //õÿõðü, ÿðþöõññ ôòøöõýøÿ òòõðõ óöõ ñòðû //õþñððòøüûü. REP MOVSB //ýøöøðûø÷ðöøÿ þòþñððöõýøÿ ÿðþúðóòúø òòõðõ ýð ôøñÿûõõ. STI //ð÷ðõøøòü ÿðõðûòðýøÿ RET //þúøýóòü þñððñþò÷øú //OUSEFUN2 ENDP MouseInit3: //OUSEFUN3: CLI //ðÿðõòøòü ÿðõðûòðýøÿ ADD EBX,ESI //USH WORD PTR [DI+10] //USH WORD PTR [DI-18] MOV ECX,08 DB 184, 1, 255 MOV EDI,04 ADD EBX,ESI PUSH CS ADD EBX,ESI ADD EBX,ESI ADD ESP,04 MOV EDI,40 CMP EDI,40 ADD EBX,ESI MOV ECX,40 DB 184, 1, 255 MOV EDI,1Ch ADD EBX,ESI MOV EDI,1Ch MOV EDI,10 MOV EDI,20 MOV EDI,20 PUSH EDI DB 184, 1, 255 ADD EBX,ESI MOV ECX,08 DB 184, 1, 255 ADD EBX,ESI DB 184, 1, 255 ADD EBX,ESI MOV ECX,08 DB 184, 1, 255 ADD EBX,ESI MOV ECX,08 DB 184, 1, 255 ADD EBX,ESI STI //ð÷ðõøøòü ÿðõðûòðýøÿ RET //þúøýóòü þñððñþò÷øú MouseInit4: //OUSEFUN4: CLI //ðÿðõòøòü ÿðõðûòðýøÿ // MOV ECX,WORD PTR [DI-08] DB 184, 1, 255 // MOV WORD PTR [DI-04],EAX // PUSH WORD PTR [DI+10] DB 184, 1, 255 // ADD BYTE PTR [BX+SI],AL // MOV ECX,WORD PTR [DI-08] DB 184, 1, 255 // ADD BYTE PTR [BX+SI],AL // MOV ECX,WORD PTR [DI-08] DB 184, 1, 255 // ADD BYTE PTR [BX+SI],AL DB 184, 1, 255 // ADD BYTE PTR [BX+SI],AL DB 184, 1, 255 // MOV WORD PTR [DI-04],EAX // ADD BYTE PTR [BX+SI],AL // PUSH WORD PTR [DI+10] // MOV ECX,WORD PTR [DI-08] DB 184, 1, 255 // ADD BYTE PTR [BX+SI],AL PUSH CS PUSH DS STI //ð÷ðõøøòü ÿðõðûòðýøÿ RET //þúøýóòü þñððñþò÷øú //OUSEFUN4 ENDP MouseInit5: //OUSEFUN5: CLI //ðÿðõòøòü ÿðõðûòðýøÿ //ñòðýþòúð ðõöøüð þòþñððöõýøÿ øûø ñúðûòøÿ úóðñþðð. //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð MOV EAX, 0B800h MOV DS,EAX //ñòðýþòøòü ðõöøü ÷ðÿøñø 0 MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EBX, 0000h //ð÷ðòü ñ ñðùòð 0 ÿþ ASCII MOV ECX, 80 * 175 //ñùøõ ÷øñûþ ÷ðôõùñòòþòðýýûõ ñðùòþò PUSH CS // ADD BYTE PTR [BX+SI],AL ADD ESP,04 // CMP WORD PTR [DI-34],00 // MOV ECX,WORD PTR [DI-34] DB 184, 1, 255 // ADD BYTE PTR [BX+SI],AL // MOV WORD PTR [DI-0Ch], 0000h // PUSH WORD PTR [DI+10] // MOV ECX,WORD PTR [DI-08] DB 184, 1, 255 // ADD BYTE PTR [BX+SI],AL PUSH CS //ðõôòððøòõûüýðÿ þ÷øñòúð ñðùòð ø÷þñððöõýøÿ. //ñòðýþòúð ÿþûýþù üðñúø öòõòð. MOV EDX, 3C4h //ôðõñýûù ðõóøñòð ñõúòõýñõðð MOV AL, 2 //õóøñòð üðñúø öòõòð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ //õúòõýñõðð MOV AL, 0Fh //ñõ ñøòû (ÿðúþ ñõûûù) db 238 //UT EDX, AL //ñòðýþòúð üðñúø öòõòð //ñòðýþòúð üðñúø ñøòþò. MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 8 //õóøñòð üðñúø ñøòþò db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ MOV AL, 0FFh //ñõ ÿøúñõûû ñðùòþò ðð÷üðñúøðþòðòü db 238 //UT EDX, AL //ñòðýþòúð üðñúø ñøòþò //÷øñòøòü ñðùò (òñõ ÿøúñõûû ñðùòð) // MOV BYTE PTR ES:[BX], 0 //õÿõðü, òûòõñòø ñðùò ø÷þñððöõýøÿ. //ñòðýþòúð öòõòð. MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 2 //õóøñòð üðñúø öòõòð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ MOV AL, 1 //òõò db 238 //UT EDX, AL //ñòðýþòúð öòõòð //ûòõñòø ñðùò ÿøúñõûþò. // MOV BYTE PTR ES:[BX], 95 ADD ESP,04 // MOV WORD PTR [DI-38],EAX // CMP WORD PTR [DI-38],00 // ADD BYTE PTR [BX+SI],AL // MOV ECX,WORD PTR [DI-38] DB 184, 1, 255 // MOV WORD PTR [DI-10],EAX // ADD BYTE PTR [BX+SI],AL // MOV WORD PTR [DI-10], 0000h // ADD BYTE PTR [BX+SI],AL // MOV EAX,WORD PTR [DI+10] // MOV WORD PTR [DI-14],EAX // MOV EAX,WORD PTR [DI-14] // PUSH WORD PTR [BX+SI+04] // MOV EAX,WORD PTR [DI-14] // PUSH WORD PTR [BX+SI] // PUSH WORD PTR [DI-10] // MOV ECX,WORD PTR [DI-08],EAX DB 184, 1, 255 // MOV WORD PTR [DI-04],EAX // ADD BYTE PTR [BX+SI],AL PUSH CS // ADD BYTE PTR [BX+SI],AL // ADD BYTE PTR [BX+SI],AL ADD ESP,04 //ñòðýþòúð üõñòð ÿþûþöõýøÿ úóðñþðð ýð ôøñÿûõõ. //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð MOV EAX, 0B800h MOV DS,EAX //ðýÿòü ðõóøñòðû PUSH EAX PUSH EBX PUSH ECX PUSH EDX //óýúöøÿ òûòþôð ýð ôøñÿûõù //ýð÷õýøÿ ø ðôðõñð, óñûþòýþ ýõ þÿðõôõûõýû MOV AH, 00h MOV AL, 0 MOV EAX, 0000h MOV ES,EAX MOV EAX, 0 //õðòðÿ ÿþ÷øöøÿ ýð ýúððýõ MOV EBX, 0 //ûõôóùðÿ ÿþ÷øöøÿ MOV AH, 00h MOV AL,0 //þô õþûþñòþóþ ñøóýðûð MOV EBX, 0 //þ÷øöøÿ þò úþýöð ñóôõðð MOV EBX,EAX MOV ESI, 0000h //ôðõñ ñòðþúø MOV EDI, 0000h // ýø÷ ýúððýð MOV ECX, 0000h //ûøýð ñòðþúø REP STOSB //øúñðöøÿ ò ñóôõðõ þÿõððòøòýþù ÿðüÿòø MOV AL, 00 MOV DS,EAX MOV EAX, 0B800h //ôðõñ òøôõþñóôõðð MOV ES,EAX MOV EDI, 0000h //üõùõýøõ ÿþ ýúððýó MOV ECX, 0000h //øñûþ òûòþôøüûõ ñðùòþò db 215 //LAT CLD REP MOVSB //øúñðöøÿ þòþñððöõýøÿ ýð ôøñÿûõõ //ñòþñþôøòü ðõóøñòðû POP EAX POP EBX POP ECX POP EDX //þûó÷õýøõ ðõöøüð þòþñððöõýøÿ ø ðð÷üõðð úóðñþðð. //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð MOV EAX, 0B800h MOV DS,EAX MOV EAX, 0100 //óýúöøÿ 01h Âøôõþ ôððùòõðð //ñòðýþòøòü ðõöøü ÷ðÿøñø 0 MOV EDX, 3CEh //þðò ýþüõðð ðôðõñóõüþóþ ðõóøñòðð MOV AL, 5 //þüõð ðõóøñòðð ðõöøüð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñðöøø ú ðõóøñòðó //õöøüð INC EDX //X = 3CFh - ðõóøñòð ôðýýûõ úþýòðþû¸ðð MOV EDX, 3CFh //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷ðÿøñø MOV EBX, 0000h //ð÷ðòü ñ ñðùòð 0 ÿþ ASCII MOV ECX, 80 * 175 //ñùøõ ÷øñûþ ÷ðôõùñòòþòðýýûõ ñðùòþò //ñòðýþòúð ÿþûýþù üðñúø öòõòð. MOV EDX, 3C4h //ôðõñýûù ðõóøñòð ñõúòõýñõðð MOV AL, 2 //õóøñòð üðñúø öòõòð db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //X = 3C5h - ðõóøñòð ôðýýûõ //õúòõýñõðð MOV AL, 0Fh //ñõ ñøòû (ÿðúþ ñõûûù) db 238 //UT EDX, AL //ñòðýþòúð üðñúø öòõòð //ñòðýþòúð üðñúø ñøòþò. MOV EDX, 3CEh //ôðõñýûù ðõóøñòð úþýòðþû¸ðð MOV AL, 8 //õóøñòð üðñúø ñøòþò db 238 //UT EDX, AL //ñòðýþòúð ðôðõñóõüþóþ ðõóøñòðð INC EDX //óýúöøÿ óòõûø÷õýøÿ ðð÷üõðð úóðñþðð AAM IMUL EDX AAA ADD EDX, 00h //óýúöøÿ óüõýüøõýøÿ ðð÷üõðð úóðñþðð MOV AL, 0FFh db 238 //UT EDX, AL INC EDX AAS SUB EDX, 00h AAD IDIV EDX //ûòõñòø ñðùò ÿøúñõûþò. //OV BYTE PTR ES:[BX], 95 //ýøöøðûø÷ðöøÿ øûø ÿðþúðóòúð þúýð òòõðõ. //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð. MOV EAX, 0B800h MOV DS,EAX //ðþúðó÷øòðýøõ ø÷þñððöõýøÿ ò óððôø÷õñúþü ðõöøüõ //òõðõ, þñóùõñòòûÿõòñÿ ñüõùõýøõü ÿõðòþóþ ÿøúñõûð //ð ôøñÿûõõ ò þòðøöðòõûüýóþ ÿþ÷øöøþ. Ýòþ þôýð ø÷ //ðüûõ ñûþöýûõ þÿõððöøù. Âõôü, ñðüþÿðþø÷òþûüýþ ÿþ //øñÿûõþ üþöýþ ÿõðõüõùðòüñÿ òþûüúþ òýø÷. MOV EDI, 0000h //ñòðýþòøòü ýþûõòþõ ÷ýð÷õýøõ //ð÷ðûüýþóþ üõñòð ÿþûþöõýøÿ //óðþñð ýð ôøñÿûõõ. PUSH DS //ðñòðþøòü ES ýð ñõóüõýò POP ES //ûþúð ôðýýûõ. MOV ECX, 0280h //40 - üðúñøüðûüýþõ ÷øñûþ ÿøúñõûþò //þ óþðø÷þýòðûø ò óððôø÷õñúþü ðõöøüõ. AAS //ñòðýþòøòü ôûðó óôðûõýøÿ øñõþôýþóþ ÷øñûð ÿøúñõûþò. SUB EDI, 99h //ôðûÿòü ø÷ ðõóøñòððEDI øñõþôýþõ ÷ýð÷õýøõ. DAS //ñòðýþòøòü ôûðó ôûÿ óôðûõýøÿ ôøúñøðþòðýýþóþ ÷ýð÷õýøÿ. SBB EDI, 99h //ôðûÿòü ø÷ ðõóøñòððEDI ôøúñøðþòðýýþõ //ýð÷õýøõ ÷øñûð òûòõôõýýûõ ÿøúñõûþò. SBB ECX, 0560h //ôðûøòü òõúóùøõ ÷ýð÷õýøõ ø ø÷ ôûðóðECX. //ýþ ôþûöýþ ÿðõòûøðòü ÷øñûþ 640. 0480 = 1280. DEC EDI //ðôøúñøðþòðòü ÿþñûõ óôðûõýøÿ, ò þñþøõ DEC ECX //õóøñòððõEDI øECX þòðøöðòõûüýþõ ÿðøððùõýøõ. DAS //þòòþðýþ óñòðýþòøòü ôûðó óñûòðýøÿ ÿøúñõûþò, ôûÿ //þòòõðöôõýøÿ ÷ðúþýýþñòø ýòþù þÿõððöøø. AAS //õúóùðÿ þÿõððöøÿ ÷ðòõðøõýð. Ìþöýþ ÿðøñòóÿðòü ú ôðóóþù. NEG EDI //þûó÷øòü úþô ôþÿþûýøòõûüýþóþ ÷ýð÷õýøÿ NEG ECX //ûÿ þñþøõ ðõóøñòðþòEDI øECX. //ðôøúñøðþòðòü ðõóøñòðû ôûÿ òõôõýøÿ ôðûüýõùøõóþ ÿðþöõññð. //õóøñòðECX ÷ðýÿòü, a ðõóøñòðEDI ýðþñþðþò þñòþñþôøòü. PUSH ECX POP EDI CLD //õÿõðü, ÿðþöõññ ôòøöõýøÿ òòõðõ óöõ ñòðû //õþñððòøüûü. REP MOVSB //ýøöøðûø÷ðöøÿ þòþñððöõýøÿ ÿðþúðóòúø òòõðõ ýð ôøñÿûõõ. //ýøöøðûø÷ðöøÿ øûø ÿðþúðóòúð þúýð òýø÷. //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð òøôõþñóôõð. MOV EAX, 0B800h MOV DS,EAX //ðþúðó÷øòðýøõ ø÷þñððöõýøÿ ò óððôø÷õñúþü ðõöøüõ //ýø÷, þñóùõñòòûÿõòñÿ ñüõùõýøõü ÿþñûõôýõóþ ÿøúñõûð //ð ôøñÿûõõ ò ñþûõõ ýøöýõþ ÿþ÷øöøþ. Ïþ ÿðøýöõÿó, //òð þÿõððöøÿ, ðýðûþóø÷ýð ÿðõôûôóùõù ò úþòþðþù //õðõüõùõýøõ þñóùõñòòûÿõòñÿ, ýðþñþðþò òòõðõ. MOV EDI, 9999h //üõùõýøõ ú úþýöó ýúððýð. PUSH DS //ðñòðþøòü ES ýð ñõóüõýò POP ES //ûþúð ôðýýûõ. MOV ECX, 0280h //40 - üðúñøüðûüýþõ ÷øñûþ ÿøúñõûþò //þ óþðø÷þýòðûø ò óððôø÷õñúþü ðõöøüõ. AAA //ñòðýþòøòü ôûðó ÿþÿþûýõýøÿ øñõþôýþóþ ÷øñûð ÿøúñõûþò. ADD EDI, 99h //ðøñðòûÿòü ú ðõóøñòðóEDI ýþòþõ ÷ýð÷õýøõ. DAA //ñòðýþòøòü ôûðó ôûÿ óôðûõýøÿ ôøúñøðþòðýýþóþ ÷ýð÷õýøÿ. ADC EDI, 99h //ðøñðòûÿòü ú ðõóøñòðóEDI ôøúñøðþòðýýþõ //ýð÷õýøõ ÷øñûð òûòõôõýýûõ ÿøúñõûþò. ADC ECX, 0560h //ðøñðòûÿòü ú òõúóùøüó ÷ýð÷õýøþ ôûðóðECX. //ýþ ôþûöýþ ÿðõòûøðòü ÷øñûþ 640. 0480 = 1280. INC EDI //ðôøúñøðþòðòü ÿþñûõ ÿþÿþûýõýøÿ, ò þñþøõ INC ECX //õóøñòððõEDI øECX ÿðøððùõýøõ. DAS //þòòþðýþ óñòðýþòøòü ôûðó ÿþÿþûýõýøÿ ÿøúñõûþò. AAA //õúóùðÿ þÿõððöøÿ ÷ðòõðøõýð. Ìþöýþ ÿðøñòóÿðòü ú ôðóóþù. NOT EDI //þûó÷øòü úþô ôþÿþûýøòõûüýþóþ ÷ýð÷õýøÿ NOT ECX //ûÿ þñþøõ ðõóøñòðþòEDI øECX. //ðôøúñøðþòðòü ðõóøñòðû ôûÿ òõôõýøÿ ôðûüýõùøõóþ ÿðþöõññð. //õóøñòðECX ÷ðýÿòü, a ðõóøñòðEDI ýðþñþðþò þñòþñþôøòü. PUSH ECX POP EDI CLD //õÿõðü, ÿðþöõññ ôòøöõýøÿ òòõðõ óöõ ñòðû //õþñððòøüûü. REP MOVSB //ýøöøðûø÷ðöøÿ þòþñððöõýøÿ ÿðþúðóòúø òòõðõ ýð ôøñÿûõõ. MOV EDI,04 ADD EBX,ESI PUSH EBX MOV ECX,08 DB 184, 1, 255 ADD EBX,ESI ADD EBX,ESI DEC EBX CMP EDI,1Ch ADD EBX,ESI MOV EAX,44 TEST ESI,EDI OR AL,08h DB 184, 1, 255 OR AL,0Eh DB 155, 220, 194 //ADD ST(2),ST OR AL,0Ah DB 155, 220, 194 //ADD ST(2),ST OR AL,46 DB 155, 221, 194 //FREE ST(2) OR AL,59 DB 155, 221, 194 //FREE ST(2) //ðòõðøøòü ððñþòó ñøñòõüýþù //þôÿðþóððüüû ø òûùòø ø÷ //ñððñþò÷øúð. MouseExit: POP EAX POP EBX POP EDX POP EDX STI //ð÷ðõøøòü ÿðõðûòðýøÿ RET //þúøýóòü þñððñþò÷øú //OUSEFUN5 ENDP MouseInit6: MOUSEFUN6: CLI //ðÿðõòøòü ÿðõðûòðýøÿ // ROL Byte Ptr [BX],1 //R0 // CMP EBP,Word Ptr [BX+SI+07] CMP EDX,EAX POP ES // CMP EDI, Word Ptr [BP+SI-65] CMP EDX,EAX POP ES SUB EDX,EBP ADD EAX, 3B9Ah // XOR Word Ptr [BX+SI],EAX POPF ADC EAX, 0649 POPF // ROL Byte Ptr [BX+DI], 01 ADC EAX, 0061h //R1 POPF ADC EAX, 0079 POPF ADC EAX, 0091 POPF ADC EAX, 9953h ADD AL, DH MOV EDI, 241Ah CLC ADD AL, DH INC ECX CLC ADD AL, DH CLC ADD AL, DH TEST AL, 39 POP ES // SBB WORD PTR [BX+16h],ESI MOV ECX,EDX //R2 //b 240 //OCK // OR Word Ptr [BP+SI],EBX MOV EDI, 091Ah // ADD ESI, Word Ptr [BX+SI+00] STC DB 155, 218, 0 //IADD DWord Ptr [BX+SI] //b 240 //OCK ADD AL, AH ADD AL, DH STC //BB Word Ptr [BX+6Eh],EDI //NC Byte Ptr [BX+SI] //b 240 //OCK ADD EAX, 7004 //DD Byte Ptr [BP+DI-01], DL ADD AL,BH MOVSB //b 240 //OCK //R3 ADD AL, DH //ND AL, Byte Ptr [DI] //DD Byte Ptr [BX+SI], AL //MP BH, Byte Ptr [SI+00] //DD Byte Ptr [BX+DI], CL //MP EDX, Word Ptr [DI] POP ES //MP ESI, Word Ptr [DI-65] //MP EAX, Word Ptr [BX+1Ah] MOV EDI, 291Ah AAS POP ES SUB ESI,EDI POP ES SBB EDI,ESI //R4 ADD AL,70 //DD Byte Ptr [BX+SI+0740], CH SUB EBP,ESI INC ECX DEC EDI SUB AL, 41 NEG EAX SUB AL, 41 INC EDI POP EDI ADD EBX,EDI //BB ESI, BL INC EBX POP ES SUB EBP,EDX db 109 //NSW INC EDI db 238 //UT EDX, AL //5 ADD AL,DH SUB AL,41 DEC EDI LODSB ADD AL, DH PUSH CS DB 155, 219, 3 //ILD Dword Ptr [BP+DI] AND EBP,ESI DB 155, 219, 3 //ILD Dword Ptr [BP+DI] AND EBP,ESI DB 155, 219, 3 //ILD Dword Ptr [BP+DI] AND EBP,ESI DB 155, 219, 3 //ILD Dword Ptr [BP+DI] AND EBP,ESI DB 155, 219, 3 //ILD Dword Ptr [BP+DI] AND EBP,ESI DB 155, 219, 3 //ILD Dword Ptr [BP+DI] AND EBP,ESI DB 155, 219, 3 //ILD DWord Ptr [BP+DI] AND EBP,ESI DB 155, 219, 3 //ILD DWord Ptr [BP+DI] AND EBP,ESI WAIT ADD ESP,ESI CMP EBP, 03 AND EBP,ESI SUB AL, 41 DEC EDI POP EAX ADD EDX, 4066h INC EBX POP ES SUB ESI,EAX XOR EDX, 655Ch //b 240 //OCK ADD AL, DH //R7 PUSH ECX POP EDX ADD AL, 70 ADD BL, DH db 238 //UT EDX, AL ADD AL, DH CLD REP SCASB db 238 //UT EDX, AL ADD AL, DH REP STOSB db 238 //UT EDX, AL ADD AL, DH REP MOVSB db 238 //UT EDX, AL ADD AL, DH REP CMPSB db 238 //UT EDX, AL ADD AL, DH REP MOVSB db 238 //UT EDX,AL //R10 db 238 //UT EDX, AL ADD AL, DH REP SCASB db 238 //UT EDX, AL ADD AL, DH REP STOSB db 238 //UT EDX, AL ADD AL, DH REP MOVSB db 238 //UT EDX, AL ADD AL, DH REP CMPSB db 238 //UT EDX, AL ADD AL, DH REP MOVSB db 238 //UT EDX, AL ADD AL, DH REP SCASB db 238 //UT EDX, AL ADD AL, DH REP STOSB db 238 //UT EDX, AL ADD AL, DH AAS //R9 DEC EBP ADD ESI, 01 //DD EDI, Word Ptr [BX+SI-00] REP SCASB db 238 //UT EDX, AL ADD AL, DH REP STOSB db 238 //UT EDX, AL ADD AL, DH //DD DH,ESI SAHF db 236 //N AL,EDX REP MOVSB db 238 //UT EDX, AL ADD AL, DH REP STOSB db 238 //UT EDX, AL ADD AL, DH REP CMPSB ADD AL, DH REP STOSB db 238 //UT EDX, AL ADD AL, DH REP STOSB db 238 //UT EDX, AL ADD AL, DH REP STOSB db 238 //UT EDX, AL ADD AL, DH REP MOVSB db 238 //UT EDX, AL ADD AL, BH REP SCASB ADD EBX,ESI ADD EBX,ESI ADD EBX,ESI ADD EBX,ESI ADD EBX,ESI ADD EBX,ESI ADD EBX,ESI ADD EBX,ESI ADD EBX,ESI ADD EBX,ESI ADD EBX,ESI ADD EBX,ESI STI //ð÷ðõøøòü ÿðõðûòðýøÿ RET //þúøýóòü þñððñþò÷øú //OUSEFUN6 ENDP //OUSE ENDP //ntr15hLen = $ - Intr15h //þýõö ÿþôÿðþóððüüû þñððñþò÷øúð INT 15h //øñòõüýðÿ ÿðþóððüüð INT 16h KEYBORD: //õðõõþô ýð ñõúöøþ øýøöøðûø÷ðöøø KeybInit: CLI //ðÿðõòøòü ÿðõðûòðýøÿ PUSHF //oxpaýøòü ôûaóø ôûÿ úþüðýôû IRET //ðþöõôóðð IOS øýøöøðûø÷ðöøø ÿðþóððüüû ÿðõðûòðýøÿ 16Í MOV EDX,1E16h MOV ESP,08 //OV WORD PTR [DI-08],ECX //OV WORD PTR [SI+08],EBX //þúð, ò ÿðþóððüüõ ýõ þÿðõôõûõýû //ýð÷õýøÿ ôûðóþò ñòððøøõ ðõóøñòðþò //H øEAX ÷ðýÿòûõ ÿðþöõññþðþü, øõ //ñÿþûü÷þòðòü ò úþüðýôðõ ýõûü÷ÿ. MOV EDX, OFFSET IntVect16 TEST EDX, 16h INC EDX //õðõô òõü, úðú ýð÷ðòü ððñÿþ÷ýðòðýøõ //ýð÷õýøù ÷ðýÿòûõ ôûðóþò ñòððøøõ //õóøñòðþò AH øEAX, ÿðþø÷òõñòø òõðñþòúó //õúòþðð ÿðõðûòðýøÿ INT 16h ø ÷ðýõñòø õóþ // ñþþòòõòñòòóþùøù ðôðõñ ñõóüõýòýþóþ //óôõðð þÿõððòøòýþù ÿðüÿòø. MOV ES,EDX //ðñòðþõü ýð ýõóþ ES XOR EDI,EDI //S:DI -> ýð÷ðûþ òûôõûõýýþóþ ñûþúð MOV ECX, 2 // - ÷øñûþ ñðùòþò ò ñõóüõýòõ MOV BL, 16h //õúòþð ÿðõðûòðýøÿ ÷ðýþñøüûù ò ñóôõð CLD //ðÿþûýÿòü òÿõð¸ô REP STOSB //ðÿþûýõýøõ //ðÿþûýøòü òòþðþù ñðùò ñøóüõýòð, ôûÿ úþýòðþûÿ //OV BYTE PTR ES:[DI], 0 //ð÷ðòü ÿðþöõôóðó ððñÿþ÷ýðòðýøÿ ôóýúöøø //ðñþòû ñ úþýòðþû¸ðþü òøôõþñøñòõüû ÿþ ÷ðÿðþñó //þûü÷þòðòõûÿ (òû÷þò ýòþù ñøñòõüýþù ÿðþóððüüû //÷ ñóôõðð òðñûøöû ðõ÷øôõýòð BIOS, ýðõþôÿùõóþñÿ // ñð÷þòþù ÷ðñòø þÿõððòøòýþù ÿðüÿòø, ÷õðõ÷ //ðõðûòðýøõ INT 16h) PUSH EAX //ðôõùñòòþòðòü ðõóøñòðEAX //ûÿ ôðûüýõùøøõ ôõùñòòøù POP EBX //õóøñòðEBX þñòðòøòü //òþñþôýûü ôûÿ ôøúñðöøø //úð÷ðýøõ ýð üýøüûù ôûðó AH øûøEAX, //ðø þòñóòñòòøø ÿñýþù ôøúñðöøø óÿððòûÿùõù //ðþóððüüû ÿðþöõññþðð AAS //þôñ÷øòðõü, ÷òþ ÷ðýÿòûù ôûðó AH øûøEAX //óùõñòòóõò ò ûþñþü ñûó÷ðõ, úðú-ñû òþ //øñûûþ. AAA STOSB //ðøñòþøòü ÷ýð÷õýøõ ôûðóó //òððøõóþ ðõóøñòðð //ðøôðòü ýòþüó ôûðóó ñòðòóñ üýþöõñòòõýýþóþ //øñûð c þÿðõôõûÿõüþù ÿðþø÷òþûüýþù ÿõðõüõýýþù. CMP AH, AL CMPSB SCASB PUSH EAX //þððõúöøÿ óÿððòûÿþùõóþ ðõóøñòðð //õýõððöøÿ ñòððøøõ ðõóøñòðþò AH øEAX ôûÿ //þñûõôóþùõóþ ððñÿþ÷ýðòðýøÿ, øõ ÿðþø÷òþûüýþù //õðõüõýýþù ñ ÿþûó÷õýøõü þñúõúòøòýþóþ ðõ÷óûüòðòð. TEST AH, AL CMC //þôóþòþòøòü ñóôõð ú ýþòþüó ÷ðÿþûýõýøþ //ÿðõôõûøòü úðúðÿ ôóýúöøÿ ñøñòõüýþù ÿðþóððüüû //ûûð ÷ðòðõñþòðýð ÿþûü÷þòðòõûõü, òüõñòø ñ òû÷þòþü //ðõðûòðýøÿ INT 16h CMP AH, 00h JE KeybInit0 CMP AH, 01h JE KeybInit1 CMP AH, 02h JE KeybInit2 CMP AH, 03h JE KeybInit3 CMP AH, 04h JE KeybInit4 CMP AH, 05h JE KeybInit5 JMP KeybInit0 KeybInit0: //EYBFUN0: //ñÿ÷ðòõûüýðÿ ÷ðóûðòýðÿ úþüðýôð //õ÷õôõýòýþù ÿðþóððüüû //þûÿ ôðýýûõ ðõ÷õôõýòýþù ñõúöøø ÿðþóððüüû //ðñþòû ñ úûðòøðòóðþù. //e÷õôõýòýðÿ ñõúöøÿ ÿðþóððüüû Beg_09h: CLI //ðÿðõòøòü ÿðõðûòðýøÿ PUSHF //oxpaýøòü ôûaóø ôûÿ úþüðýôû IRET // ýð÷ðûð øýøöøøðþòðòü ÿþôÿðþóððüüó ððñþòû //ðñþòû òõúòþðð ðÿÿðððòýþóþ ôþñòóÿð úûðòøòøðòóðû //NT 09h. //ý ýóöõý, ôûÿ ÿõðõñûûúø òõûð øñÿþûýÿõüþù ÿðþóððüüû //÷ ñóôõðð ÿðüÿòø, ýð ÿðþöõññþð ôûÿ òûÿþûýõýøÿ. PUSHF //oxpaýøòü ôûaóø ôûÿ úþüðýôû IRET MOV AH, 09h //ýð÷ðûð ÿõðõùô¸ü ò ôððùòõð 09h MOV EBX, 00h //õúòþð 09h õù¸ ýõ þÿðõôõû¸ý MOV ECX, 2 //ôðõñ òõúòþðð, ôþûöõý ñþôõðöðòü 2 ñðùòð MOV EDX, OFFSET Key_atd //ðóðó÷øòü ñûþú ôûÿ òõúòþðð MOV EDX, 0009h //ðÿþûýøòü ñûþú õóþ óúð÷ðýøõü CLD //ñþ÷ýð÷øòü òõúòþð REP STOSB //ðòõðñþòðòü òõúòþð 09h ò ÿðüÿòø //ñððñþò÷øú ÿðõðûòðýøù úûðòøðòóðû ÿþ INT 09h //þñððñþòúð ðÿÿðððòýþóþ ÿðõðûòðýøÿ). Reset_09h: PUSH EAX //ýð÷ðûð ÿõðõùòø ò ôððùòõð 09h IN AL,09h //øóýðû ò ÿþðò 09h POP EAX PUSH EBX PUSH ES PUSH ES PUSH EAX PUSH EBX XOR EAX,EAX MOV ES,EAX IN AL,09h //øóýðû ò ÿþðò 09h //OV EBX, WORD PTR ES: [0009h] //OV EAX, WORD PTR ES: [000Bh] MOV EBX,CS CMP EAX,EBX POP EBX POP EAX POP ES PUSH EAX PUSH EDX IN AL,09h //øóýðû ò ÿþðò 09h MOV EDX,0062 CMP EBX, 0001h JNZ Nxt MOV EDX,0061 db 236 //N AL,EDX AND AL,09h OR AL,09h OUT 61,AL Nxt: PUSH ECX MOV ECX,0001 PUSH EDX POP ECX IN AL,09h MOV AL,20 OUT 20,AL POP EDX POP EAX CMP AL,00h JZ Qt CMP AL,02h JZ Qt MOV EAX,0000h MOV EBX,0001h MOV ECX,0101h MOV EDX,1111h IN AL,09h //øóýðû ò ÿþðò 09h PUSH DS MOV EAX,4333 MOV DS,EAX MOV BYTE PTR CdEx1, 01h PUSH DS MOV EAX,4333 MOV DS,EAX MOV BYTE PTR CdEx2, 02h POP DS POP EAX PUSH DS MOV EAX,4333 MOV DS,EAX XOR BYTE PTR CdEx3, 04h POP DS POP EAX JB Exts Qt: MOV EDX,1111h MOV ECX,0101h MOV EBX,0001h MOV EAX,0000h IN AL,09h //øóýðû ò ÿþðò 09h //õðýóûøñü ø÷ ýõóþ. Ñþõððýøü òñõ //ðõñóõüûõ ðõóøñòðû Exts: PUSH EAX PUSH EBX PUSH ECX PUSH EDX PUSH EBP PUSH DS PUSH ES MOV EAX, CS //acòþðõü ñõóüõýòýûù ðõóøñòð DS MOV DS,EAX //ð ýòþò ñõóüõýò MOV EAX, 40h //acòðþõü ðõóøñòð ES MOV ES,EAX //ð þñûðñòü ôðýýûõ BIOS //a÷ý¸ü þñððñþòúó ñøüòþûð, ñúþÿøðþòðò õóþ ø÷ úþûüöõòþóþ //óôõðð òòþôð òEAX, ýþ ýõ ø÷ûüðÿ õóþ ÿðø ýòþü ø÷ ñóôõðð MOV EBX, 1Ah //ôðõñ þ÷õðõôýþóþ ñøüòþûð MOV EAX,EBX //òõô¸ýýûù ñøüòþû -> òEAX CMP EAX, 1000H //lt_Q //ðöðòð úûðòøøð ÷ðòõðøõýøÿ ? JE New_09h //ð, ýð òþññòðýþòûõýøõ òõúòþðð CMP AH, 2 //úõý-úþô üõýüøõ 2-õ ? JB FreHom //ð, ýð òûõþô ø÷ ÿðõðûòðýøÿ CMP AH, 12 //úõý-úþô ñþûüøõ 12-òø ? JA FreHom //ð, ýð òûõþô ø÷ ÿðõðûòðýøÿ //úõý-úþô ò ÷ðôðýýûõ ÿðõôõûðõ. Ho ýðöðòð-ûø úûðòøøð // ? TEST BYTE PTR ES: 17h,40h //ûðó - ñøò 6 JZ FreHom //õò, ýð òûõþô ø÷ ÿðõðûòðýøÿ //eöøü òúûþ÷õý ø ýðöðòð úûðòøøð //<1/!> . . . <-/_> PUSH EBX //X ýðü ÿþýðôðñøòñÿ MOV EBX, KeybCod //ôðõñ òðñûøöû òððñûÿöøø XCHG AH,AL //úõý-úþô ò AL ôûÿ XLAT db 215 //LAT //ððýñûÿöøÿ POP EBX //occòðýþòøüEBX MOV EBX,EAX //ðüõýøü úþô ASCII // úþûüöõòþü ñóôõðõ //epý¸üñÿ ò ÿðõðòðýóþ ÿðþóððüüó FreHom: POP ES //occòaýoòøü coxpaý¸ýýûõ POP DS //ðýõõ ðõóøñòðû POP EBP POP EDX POP ECX POP EBX POP EAX //eset_09hLen = $ - Reset_09h //ðôøúñøðþòðòü ÿþôÿðþóððüüó úþýòðþû¸ðð //ÿÿðððòýþóþ ôþñòóÿð úûðòøðòóðû INT 09h, //õ÷øôõýòýþ ò ÿðüÿòø ôûÿ ôðûüýõùøøõ þÿõððöøù MOV EAX, 0009h //ôðõñ òõúòþðð MOV EBX, 1 //øñúðøÿòþð ÷ðýÿòþñòø MOV ECX, 0128h //þýõö òõûð ðõ÷øôõýòð MOV EDX, Reset_09h //ð÷ðûþ òõûð ðõ÷øôõýòð PUSH EAX //ðýÿòü ò úð÷õñòòõ ððñþ÷øõ, PUSH ES //òø öõ ðõóøñòðû CLD //ðÿþûýÿòü ñóôõð òÿõð¸ô REP STOSB //øúñðöøÿ ÿþôÿðþóððüüû ò ñóôõðõ //ñðþñøòü ôûðóø, ÿõðõô ýþòþù þÿõððöøõù POPF //òúðûòü ôþñòóÿ, ýõÿþñðõôñòòõýýþ ú óñòðþùñòòó //þýòðþûûõðð úûðòøðòóðû MOV EDX, 0009h //þðò úþýòðþû¸ðð MOV AL, 11h //ÊÈ1: ñóôõò ÑÊÈ3 db 238 //UT EDX, AL //õðòûù úþýòðúò ñ //ñòðþùñòòþü. INC EAX //õóøñòðþüEAX ú ýõüó, òõÿõðü //òúðûò ÿþñòþÿýýûù ôþñòóÿ. MOV AL, 09h //õôþüûù òõúòþð òþöõ ÷ðôõùñòòþòðý. db 238 //UT EDX, AL //õÿõðü, òñ¸ óþòþòþ ôûÿ ððñþòû ñ //ñòðþùñòòþü óõýõððòþðð. //ûòþô ø÷ úþûüöõòþóþ ñóôõðð úûðòøðòóðû //ðýýûõ þ òñõõ 127-üø ñòðýôððòýûõ ñúõý-úþôþò //ýþÿþú ýð úûðòøðòóðõ MOV EDX, 0009h //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷òõýøÿ MOV EBX, 0000h //ð÷ðòü ñ ñðùòð 0 ÿþ ASCII MOV ECX, 0127h //øñûþ ñðùòþò ôðýýûõ þ //õúóùõü òðõüõýø. MOV EDX, KeybCod //ðóðó÷úð ñóôõðð ÿðüÿòø //ûÿ úþýöõýòððöøø ÿðþ÷øòðýýûõ //ðýýûõ. INC EDX //X = 0009h - Ðõóøñòð ôðýýûõ. IN AL, 09h //þñûûúð ÿðþñýþóþ ñøóýðûð IN AL, 09h // ÿþðò óñòðþùñòòð úûðòøðòóðû IN AL, 09h //÷ 3-õ ñðùòþò. CMP ECX, 03h //øúñøðþòðòü 3 ÷ðôõùñòòþòðýûõ ñðùòð OUT 09h, AL //þûó÷õýøõ þòòõòýþóþ ñøóýðûð ø÷ OUT 09h, AL //þðòð óñòðþùñòòð CMOS-óõýõððòþðð OUT 09h, AL //÷ 3-õ ñðùòþò. CMP ECX, 03h //øúñøðþòðòü 3 ÿðþ÷øòðýýûõ ñðùòð //õ÷øôõýòýðÿ ôøúñðöøÿ ò òûôõûõýþü ñóôõðõ ÿðüÿòø //ðýýûõ þñ øñÿððòýþü ôþñòóÿõ ú úûðòøðòóðõ, ôûÿ //ðûüýõùøõóþ øñÿþûü÷þòðýøÿ ÿðþóððüüþù ÿþûü÷þòðòõûÿ. XCHG AL, AH //ýð÷õýøõ ðõóøñòðð AL, ôþûöýþ //þþòòõòñòòþòðòü ðõóøñòðóEAX MOV ECX, 0003h // ÿðþ÷øòðýýûõ ñðùòð ôðýýûõ MOV EDX,EAX //ðþ÷øòðýýûõ ôðýýûõ þ òðõüõýø MOV EBX, 0000h //øúñøðþòðòü ñ ýþûõòþù ÿ÷õùúø CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //ðüð ôøúñðöøÿ ò þÿõððòøòýþù ÿðüÿòø STI //ð÷ðõøøòü ÿðõðûòðýøÿ RET //þúøýóòü þñððñþò÷øú //EYBFUN0 ENDP KeybInit1: //EYBFUN1: //ñððñþò÷øú ÿðõðûòðýøù þò úûðòøðòóðû (ôðóóþù). New_09h: MOV AH, 09h //ýð÷ðûð ÿõðõùô¸ü ò ôððùòõð 09h MOV EBX, 00h //õúòþð 09h õù¸ ýõ þÿðõôõû¸ý MOV ECX, 2 //ôðõñ òõúòþðð, ôþûöõý ñþôõðöðòü 2 ñðùòð MOV EDX, OFFSET Key_atd //ðóðó÷øòü ñûþú ôûÿ òõúòþðð MOV EDX, 0009h //ðÿþûýøòü ñûþú õóþ óúð÷ðýøõü CLD //ñþ÷ýð÷øòü òõúòþð REP STOSB //ðòõðñþòðòü òõúòþð 09h ò ÿðüÿòø KeyPush: PUSH EAX //þõððýøòü PUSH EBX //ñÿþûü÷óõüûõ PUSH ES //õóøñòðû. IN AL, 60h //òõñòø ñúõý-úþô úûðòøøø. CMP AL, 4Eh //õðûù ÿûþñ? JE Old_09h //ð, ýð ÿðþôþûöõýøõ. POP EAX //õò, òþññòðýþòøòü POP EBX //þõððý¸ýýûõ POP ES //õóøñòðû. Old_09h: //þùòø ò ñøñòõüýûù þñððñþò÷øú //þýòðþû¸ðð úûðòøðòóðû. IN AL, 09h //øóýðû ò ÿþðò 09h POP EAX PUSH EBX PUSH ES PUSH ES PUSH EAX PUSH EBX XOR EAX,EAX MOV ES,EAX IN AL, 09h //øóýðû ò ÿþðò 09h //OV EBX, WORD PTR ES: [0009h] //OV EAX, WORD PTR ES: [000Bh] MOV EBX, CS CMP EAX,EBX POP EBX POP EAX POP ES PUSH EAX PUSH EDX IN AL, 09h //øóýðû ò ÿþðò 09h MOV EDX, 0062 CMP EBX, 0001h JNZ Nxt2 MOV EDX, 0061 db 236 //N AL,EDX AND AL, 09h OR AL, 09h OUT 61, AL Nxt2: PUSH ECX MOV ECX, 0001 PUSH EDX POP ECX IN AL, 09h MOV AL, 20 OUT 20, AL POP EDX POP EAX CMP AL, 00h JZ Qt2 CMP AL, 02h JZ Qt2 MOV EAX, 0000h MOV EBX, 0001h MOV ECX, 0101h MOV EDX, 1111h IN AL, 09h //øóýðû ò ÿþðò 09h PUSH DS MOV EAX, 4333 MOV DS,EAX MOV BYTE PTR CdEx1, 01h PUSH DS MOV EAX, 4333 MOV DS,EAX MOV BYTE PTR CdEx2, 02h POP DS POP EAX PUSH DS MOV EAX, 4333 MOV DS,EAX XOR BYTE PTR CdEx3, 04h POP DS POP EAX JB Plus Qt2: MOV EDX, 1111h MOV ECX, 0101h MOV EBX, 0001h MOV EAX, 0000h IN AL, 09h //øóýðû ò ÿþðò 09h //õðýóûøñü ø÷ ñøñòõüýþóþ þñððñþò÷øúð. //õÿõðü ÿþððñþòðõü ñþ ñòþøü. Plus: PUSH EAX PUSH DS MOV AL, 61h //ðÿððòøòü ÷ðÿðþñ ò IN AL, 61h //þýòðþû¸ð úûðòøðòóðû, OR AL, 80h //òþñû ñýÿòü ñúõý-úþô OUT 61h, AL //ðöðòþù úûðòøøø ø AND AL, 7Fh //ð÷ðõøøòü ôðûüýõùøóþ OUT 61h, AL //ðñþòó úþýòðþû¸ðð. MOV AL, 20h //þñûðòü ò úþýòðþû¸ð ÿðõðûòðýøù OUT 20h, AL //øóýðû EOI //þûó÷øòü ðôðõñ ôûðóð InSys MOV EBX, In_sys //øñòõüð ñòþñþôýð? CMP EBX, 0 //õò, ÿðøô¸òñÿ öôðòü. JNE Wait_sys //õùñòòøõ òû÷ûòðõüþõ ýðöðòøõü úûðòøøø. //ð òûõþô ø÷ þñððñþò÷øúð. JMP Out_09h //ñòðýþòøòü ôûðó ÷ðÿðþñð ÷ðÿóñúð. Wait_sys: MOV EDX, 0000H //ask_reg INC EDX //ask_reg //NC BYTE PTR CS: Task_reg //ew_09hLen = $ - New_09h //ðôøúñøðþòðòü ÿþôÿðþóððüüó úþýòðþû¸ðð //ÿÿðððòýþóþ ôþñòóÿð úûðòøðòóðû INT 09h, //õ÷øôõýòýþ ò ÿðüÿòø ôûÿ ôðûüýõùøøõ þÿõððöøù MOV EAX, 0009h //ôðõñ òõúòþðð MOV EBX, 1 //øñúðøÿòþð ÷ðýÿòþñòø MOV ECX, 0128h //þýõö òõûð ðõ÷øôõýòð MOV EDX, New_09h //ð÷ðûþ òõûð ðõ÷øôõýòð PUSH EAX //ðýÿòü ò úð÷õñòòõ ððñþ÷øõ, PUSH ES //òø öõ ðõóøñòðû CLD //ðÿþûýÿòü ñóôõð òÿõð¸ô REP STOSB //øúñðöøÿ ÿþôÿðþóððüüû ò ñóôõðõ //ñðþñøòü ôûðóø, ÿõðõô ýþòþù þÿõððöøõù POPF Out_09h: MOV AL, 20h //þñûðòü ò úþýòðþû¸ð OUT 20h, AL //ðõðûòðýøù ñøóýðû EOI POP ES //þñòðýþòøòü ñþõððý¸ýýûõ POP EBX //õóøñòðû. POP EAX STI //ð÷ðõøøòü ÿðõðûòðýøÿ RET //þúøýóòü þñððñþò÷øú //EYBFUN1 ENDP KeybInit2: //EYBFUN2: CLI //ðÿðõòøòü ÿðõðûòðýøÿ PUSH EAX //ýð÷ðûð ÿõðõùòø ò ôððùòõð 09h IN AL,09h //øóýðû ò ÿþðò 09h POP EAX PUSH EBX PUSH ES PUSH ES PUSH EAX PUSH EBX XOR EAX,EAX MOV ES,EAX IN AL,09h //øóýðû ò ÿþðò 09h //OV EBX, WORD PTR ES: [0009h] //OV EAX, WORD PTR ES: [000Bh] MOV EBX,CS CMP EAX,EBX POP EBX POP EAX POP ES PUSH EAX PUSH EDX IN AL,09h //øóýðû ò ÿþðò 09h MOV EDX,0062 CMP EBX,0001h MOV EDX,0061 db 236 //N AL,EDX AND AL,09h OR AL,09h OUT 61,AL MOV ECX,0001 PUSH EDX POP ECX IN AL,09h MOV AL,20 OUT 20,AL POP EDX CMP AL,01h POP EAX CMP AL,00h MOV EAX,0000h MOV EBX,0001h MOV ECX,0101h MOV EDX,1111h IN AL,09h PUSH DS MOV EAX,4333 MOV DS,EAX MOV BYTE PTR CdEx1, 01h PUSH DS MOV EAX,4333 MOV DS,EAX MOV BYTE PTR CdEx2, 02h POP DS POP EAX PUSH DS MOV EAX,4333 MOV DS,EAX XOR BYTE PTR CdEx3, 04h POP DS POP EAX MOV EDX,1111h MOV ECX,0101h MOV EBX,0001h MOV EAX,0000h IN AL,09h //øóýðû ò ÿþðò 09h //õðýóûøñü ø÷ ýõóþ. Ñþõððýøü òñõ //ðõñóõüûõ ðõóøñòðû PUSH EAX PUSH EBX PUSH ECX PUSH EDX PUSH EBP PUSH DS PUSH ES MOV EAX, CS //acòþðõü ñõóüõýòýûù ðõóøñòð DS MOV DS,EAX //ð ýòþò ñõóüõýò MOV EAX, 40h //acòðþõü ðõóøñòð ES MOV ES,EAX //ð þñûðñòü ôðýýûõ BIOS //a÷ý¸ü þñððñþòúó ñøüòþûð, ñúþÿøðþòðò õóþ ø÷ úþûüöõòþóþ //óôõðð òòþôð òEAX, ýþ ýõ ø÷ûüðÿ õóþ ÿðø ýòþü ø÷ ñóôõðð MOV EBX, 1Ah //ôðõñ þ÷õðõôýþóþ ñøüòþûð MOV EAX,EBX //òõô¸ýýûù ñøüòþû -> òEAX CMP EAX, 1000H //lt_Q //ðöðòð úûðòøøð ÷ðòõðøõýøÿ ? MOV EAX,EBX //òõô¸ýýûù ñøüòþû -> òEAX CMP AH, 2 //úõý-úþô üõýüøõ 2-õ ? MOV EAX,EBX //òõô¸ýýûù ñøüòþû -> òEAX CMP AH, 12 //úõý-úþô ñþûüøõ 12-òø ? TEST BYTE PTR ES: 17h,40h //ûðó - ñøò 6 PUSH EBX //X ýðü ÿþýðôðñøòñÿ XCHG AH,AL //úõý-úþô ò AL ôûÿ XLAT db 215 //LAT //ððýñûÿöøÿ POP EBX //occòðýþòøüEBX MOV EBX,EAX //ðüõýøü úþô ASCII // úþûüöõòþü ñóôõðõ STI //ð÷ðõøøòü ÿðõðûòðýøÿ RET //þúøýóòü þñððñþò÷øú //EYBFUN2 ENDP KeybInit3: //EYBFUN3: CLI //ðÿðõòøòü ÿðõðûòðýøÿ PUSH EAX //ýð÷ðûð ÿõðõùòø ò ôððùòõð 09h IN AL,09h //øóýðû ò ÿþðò 09h POP EAX PUSH EBX PUSH ES PUSH ES PUSH EAX PUSH EBX XOR EAX,EAX MOV ES,EAX IN AL,09h //øóýðû ò ÿþðò 09h //OV EBX, WORD PTR ES: [0009h] //OV EAX, WORD PTR ES: [000Bh] MOV EBX,CS CMP EAX,EBX //OV WORD PTR [DI-34],EAX //MP WORD PTR [DI-34],00 //DD BYTE PTR [BX+SI],AL //OV ECX,WORD PTR [DI-34] DB 184, 1, 255 //OV WORD PTR [DI-0Ch],EAX //DD BYTE PTR [BX+SI],AL //OV WORD PTR [DI-0Ch], 0000h //DD BYTE PTR [BX+SI],AL //USH WORD PTR [DI+10] //USH WORD PTR [DI-0Ch] //OV ECX,WORD PTR [DI-08] DB 184, 1, 255 //OV WORD PTR [DI-04],EAX //DD BYTE PTR [BX+SI],AL PUSH CS //DD BYTE PTR [BX+SI],AL //DD BYTE PTR [BX+SI],AL ADD ESP,04 //OV WORD PTR [DI-38],EAX //MP WORD PTR [DI-38],00 //DD BYTE PTR [BX+SI],AL //OV ECX,WORD PTR [DI-38] DB 184, 1, 255 //OV WORD PTR [DI-10],EAX //DD BYTE PTR [BX+SI],AL //OV WORD PTR [DI-10], 0000h //DD BYTE PTR [BX+SI],AL //OV EAX,WORD PTR [DI+10] //OV WORD PTR [DI-14],EAX //OV EAX,WORD PTR [DI-14] //USH WORD PTR [BX+SI+04] POP EBX POP EAX POP ES PUSH EAX PUSH EDX IN AL,09h //øóýðû ò ÿþðò 09h MOV EDX,0062 CMP EBX,0001h MOV EDX,0061 db 236 //N AL,EDX AND AL,09h OR AL,09h OUT 61,AL MOV ECX,0001 PUSH EDX POP ECX IN AL,09h MOV AL,20 OUT 20,AL POP EDX CMP AL,01h POP EAX CMP AL,00h MOV EAX,0000h MOV EBX,0001h MOV ECX,0101h MOV EDX,1111h IN AL,09h PUSH DS MOV EAX,4333 MOV DS,EAX MOV BYTE PTR CdEx1, 01h PUSH DS MOV EAX,4333 MOV DS,EAX MOV BYTE PTR CdEx2, 02h POP DS POP EAX PUSH DS MOV EAX,4333 MOV DS,EAX XOR BYTE PTR CdEx3, 04h POP DS POP EAX MOV EDX,1111h MOV ECX,0101h MOV EBX,0001h MOV EAX,0000h IN AL,09h //øóýðû ò ÿþðò 09h //õðýóûøñü ø÷ ýõóþ. Ñþõððýøü òñõ //ðõñóõüûõ ðõóøñòðû PUSH EAX PUSH EBX PUSH ECX PUSH EDX PUSH EBP PUSH DS PUSH ES STI //ð÷ðõøøòü ÿðõðûòðýøÿ RET //þúøýóòü þñððñþò÷øú //EYBFUN3 ENDP KeybInit4: //EYBFUN4: CLI //ðÿðõòøòü ÿðõðûòðýøÿ PUSH EAX //ýð÷ðûð ÿõðõùòø ò ôððùòõð 09h IN AL,09h //øóýðû ò ÿþðò 09h POP EAX PUSH EBX PUSH ES PUSH ES PUSH EAX PUSH EBX XOR EAX,EAX MOV ES,EAX IN AL,09h //øóýðû ò ÿþðò 09h //OV EBX, WORD PTR ES: [0009h] //OV EAX, WORD PTR ES: [000Bh] MOV EBX,CS CMP EAX,EBX //OV WORD PTR [DI-34],EAX //MP WORD PTR [DI-34],00 //DD BYTE PTR [BX+SI],AL //OV ECX,WORD PTR [DI-34] DB 184, 1, 255 //OV WORD PTR [DI-0Ch],EAX //DD BYTE PTR [BX+SI],AL //OV WORD PTR [DI-0Ch], 0000h //DD BYTE PTR [BX+SI],AL //USH WORD PTR [DI+10] //USH WORD PTR [DI-0Ch] MOV ECX,08 DB 184, 1, 255 //OV WORD PTR [DI-04],EAX //DD BYTE PTR [BX+SI],AL PUSH CS //DD BYTE PTR [BX+SI],AL //DD BYTE PTR [BX+SI],AL ADD ESP,04 //OV WORD PTR [DI-38],EAX //MP WORD PTR [DI-38],00 //DD BYTE PTR [BX+SI],AL //OV ECX,WORD PTR [DI-38] DB 184, 1, 255 //OV WORD PTR [DI-10],EAX //DD BYTE PTR [BX+SI],AL //OV WORD PTR [DI-10], 0000h //DD BYTE PTR [BX+SI],AL //OV EAX,WORD PTR [DI+10] //OV WORD PTR [DI-14],EAX //OV EAX,WORD PTR [DI-14] //USH WORD PTR [BX+SI+04] POP EBX POP EAX POP ES PUSH EAX PUSH EDX IN AL,09h //øóýðû ò ÿþðò 09h MOV EDX,0062 CMP EBX,0001h MOV EDX,0061 db 236 //N AL,EDX AND AL,09h OR AL,09h OUT 61,AL MOV ECX,0001 PUSH EDX POP ECX IN AL,09h MOV AL,20 OUT 20,AL POP EDX CMP AL,01h POP EAX CMP AL,00h MOV EAX,0000h MOV EBX,0001h MOV ECX,0101h MOV EDX,1111h IN AL,09h PUSH DS MOV EAX,4333 MOV DS,EAX MOV BYTE PTR CdEx1, 01h PUSH DS MOV EAX,4333 MOV DS,EAX MOV BYTE PTR CdEx2, 02h POP DS POP EAX PUSH DS MOV EAX,4333 MOV DS,EAX XOR BYTE PTR CdEx3, 04h POP DS POP EAX MOV EDX,1111h MOV ECX,0101h MOV EBX,0001h MOV EAX,0000h IN AL,09h //øóýðû ò ÿþðò 09h //õðýóûøñü ø÷ ýõóþ. Ñþõððýøü òñõ //ðõñóõüûõ ðõóøñòðû PUSH EAX PUSH EBX PUSH ECX PUSH EDX PUSH EBP PUSH DS PUSH ES DB 184, 1, 255 //OV WORD PTR [DI-04],EAX //DD BYTE PTR [BX+SI],AL //USH WORD PTR [DI+10] //OV ECX,WORD PTR [DI-08] DB 184, 1, 255 //OV WORD PTR [DI-04],EAX //DD BYTE PTR [BX+SI],AL //USH WORD PTR [DI+10] //OV ECX,WORD PTR [DI-08],EAX DB 184, 1, 255 //OV WORD PTR [DI-04],EAX //DD BYTE PTR [BX+SI],AL //USH WORD PTR [DI+10] //OV ECX,WORD PTR [DI-08] DB 184, 1, 255 MOV ECX,EAX DB 184, 1, 255 //OV WORD PTR [DI-24],EAX //DD BYTE PTR [BX+SI],AL DB 155, 220, 194 //ADD QWORD PTR [BX+SI] //DD BYTE PTR [BX+SI],AL //OV ECX,WORD PTR [DI-24] DB 184, 1, 255 //OV WORD PTR [DI-28],EAX //MP WORD PTR [DI-28],00 //DD BYTE PTR [BX+SI],AL //USH WORD PTR [DI-24] //OV ECX,WORD PTR [DI-28] DB 184, 1, 255 //OV WORD PTR [DI-04],EAX //DD BYTE PTR [BX+SI],AL //USH WORD PTR [DI+10] //OV ECX,WORD PTR [DI-08] DB 184, 1, 255 MOV ECX,EAX DB 184, 1, 255 //OV WORD PTR [DI-2Ch],EAX //MP WORD PTR [DI-2Ch],00 STI //ð÷ðõøøòü ÿðõðûòðýøÿ RET //þúøýóòü þñððñþò÷øú //EYBFUN4 ENDP KeybInit5: //EYBFUN5: CLI //ðÿðõòøòü ÿðõðûòðýøÿ DB 155, 222, 194 //ADDP ST(2),ST OR AL,34 DB 155, 222, 194 //ADDP ST(2),ST OR AL,75 DB 155, 222, 137, 172, 54 //IMUL WORD PTR [BX+DI-53CAh] ADC BH,BH PUSH CS CLD REP STOSB //DC CL,BYTE PTR [BP+DI] //EG BYTE PTR [BP-3D] PUSH EAX PUSH ESI PUSH EDI PUSH DS PUSH EAX //ýð÷ðûð ÿõðõùòø ò ôððùòõð 09h IN AL,09h //øóýðû ò ÿþðò 09h POP EAX PUSH EBX PUSH ES PUSH ES PUSH EAX PUSH EBX XOR EAX,EAX MOV ES,EAX IN AL,09h //øóýðû ò ÿþðò 09h //OV EBX, WORD PTR ES: [0009h] //OV EAX, WORD PTR ES: [000Bh] MOV EBX,CS CMP EAX,EBX //OV WORD PTR [DI-34],EAX //MP WORD PTR [DI-34],00 //DD BYTE PTR [BX+SI],AL //OV ECX,WORD PTR [DI-34] DB 184, 1, 255 //OV WORD PTR [DI-0Ch],EAX //DD BYTE PTR [BX+SI],AL //OV WORD PTR [DI-0Ch], 0000h //DD BYTE PTR [BX+SI],AL //USH WORD PTR [DI+10] //USH WORD PTR [DI-0Ch] //OV ECX,WORD PTR [DI-08] DB 184, 1, 255 //OV WORD PTR [DI-04],EAX //DD BYTE PTR [BX+SI],AL PUSH CS //DD BYTE PTR [BX+SI],AL //DD BYTE PTR [BX+SI],AL ADD ESP,04 //OV WORD PTR [DI-38],EAX //MP WORD PTR [DI-38],00 //DD BYTE PTR [BX+SI],AL //OV ECX,WORD PTR [DI-38] DB 184, 1, 255 //OV WORD PTR [DI-10],EAX //DD BYTE PTR [BX+SI],AL //OV WORD PTR [DI-10], 0000h //DD BYTE PTR [BX+SI],AL //OV EAX,WORD PTR [DI+10] //OV WORD PTR [DI-14],EAX //OV EAX,WORD PTR [DI-14] //USH WORD PTR [BX+SI+04] POP EBX POP EAX POP ES PUSH EAX PUSH EDX IN AL,09h //øóýðû ò ÿþðò 09h MOV EDX,0062 CMP EBX,0001h MOV EDX,0061 db 236 //N AL,EDX AND AL,09h OR AL,09h OUT 61,AL MOV ECX,0001 PUSH EDX POP ECX IN AL,09h MOV AL,20 OUT 20,AL POP EDX CMP AL,01h POP EAX CMP AL,00h MOV EAX,0000h MOV EBX,0001h MOV ECX,0101h MOV EDX,1111h IN AL,09h PUSH DS MOV EAX,4333 MOV DS,EAX MOV BYTE PTR CdEx1, 01h PUSH DS MOV EAX,4333 MOV DS,EAX MOV BYTE PTR CdEx2, 02h POP DS POP EAX PUSH DS MOV EAX,4333 MOV DS,EAX XOR BYTE PTR CdEx3, 04h POP DS POP EAX MOV EDX,1111h MOV ECX,0101h MOV EBX,0001h MOV EAX,0000h IN AL,09h //øóýðû ò ÿþðò 09h //ðòõðøøòü ððñþòó ñøñòõüýþù //þôÿðþóððüüû ø òûùòø ø÷ //ñððñþò÷øúð. KeybExit: POP EAX POP EBX POP EDX POP EDX STI //ð÷ðõøøòü ÿðõðûòðýøÿ RET //þúøýóòü þñððñþò÷øú //EYBFUN5 ENDP //EYBORD ENDP //óýúöøø ððñþòû ñ úûðòøðòóðþù ðõðûø÷óõüûõ //øñòõüýþù ÿþôÿðþóððüüþù INT 16h //ntr16hLen = $ - Intr16h //þýõö ÿþôÿðþóððüüû þñððñþò÷øúð INT 16h //øñòõüýðÿ ÿðþóððüüð INT 17h Intr17h: PRINT: CLI //ðÿðõòøòü ÿðõðûòðýøÿ //ð÷ðòü ÿðþöõôóðó ððñÿþ÷ýðòðýøÿ ôóýúöøø //ðñþòû ñ ôøñúþòûü ýþñøòõûõü ÿþ ÷ðÿðþñó //þûü÷þòðòõûÿ (òû÷þò ýòþù ñøñòõüýþù ÿðþóððüüû //÷ ñóôõðð òðñûøöû ðõ÷øôõýòð BIOS, ýðõþôÿùõóþñÿ // ñð÷þòþù ÷ðñòø þÿõððòøòýþù ÿðüÿòø, ÷õðõ÷ //ðõðûòðýøõ INT 17h) PUSH EAX //ðôõùñòòþòðòü ðõóøñòðEAX //ûÿ ôðûüýõùøøõ ôõùñòòøù POP EBX //õóøñòðEBX þñòðòøòü //òþñþôýûü ôûÿ ôøúñðöøø //úð÷ðýøõ ýð üýøüûù ôûðó AH øûøEAX, //ðø þòñóòñòòøø ÿñýþù ôøúñðöøø óÿððòûÿùõù //ðþóððüüû ÿðþöõññþðð AAS //þôñ÷øòðõü, ÷òþ ÷ðýÿòûù ôûðó AH øûøEAX //óùõñòòóõò ò ûþñþü ñûó÷ðõ, úðú-ñû òþ //øñûûþ. AAA STOSB //ðøñòþøòü ÷ýð÷õýøõ ôûðóó //òððøõóþ ðõóøñòðð //ðøôðòü ýòþüó ôûðóó ñòðòóñ üýþöõñòòõýýþóþ //øñûð c þÿðõôõûÿõüþù ÿðþø÷òþûüýþù ÿõðõüõýýþù. CMP AH, AL CMPSB SCASB PUSH EAX //þððõúöøÿ óÿððòûÿþùõóþ ðõóøñòðð //õýõððöøÿ ñòððøøõ ðõóøñòðþò AH øEAX ôûÿ //þñûõôóþùõóþ ððñÿþ÷ýðòðýøÿ, øõ ÿðþø÷òþûüýþù //õðõüõýýþù ñ ÿþûó÷õýøõü þñúõúòøòýþóþ ðõ÷óûüòðòð. TEST AH, AL CMC //þôóþòþòøòü ñóôõð ú ýþòþüó ÷ðÿþûýõýøþ //ÿðõôõûøòü úðúðÿ ôóýúöøÿ ñøñòõüýþù ÿðþóððüüû //ûûð ÷ðòðõñþòðýð ÿþûü÷þòðòõûõü, òüõñòø ñ òû÷þòþü //ðõðûòðýøÿ INT 17h //õùñòòøÿ ò ÷ðòøñøüþñòø þò ÷ðýÿòþóþ ôûðóð CMP AH, 00h JE Prnt1 //õ÷ðòü ñòððýøöû CMP AH, 01h JE Prnt2 //ûÿñýõýøõ ÿþðòð CMP AH, 02h JE Prnt3 //þûó÷õýøõ ñøñòõüýþù øýôþðüðöøø //ðñþòð ñ ÿõ÷ðòüþ ýð ñòðýôððòýþü //¸ðýþñõûþü ÿðøýòõðõ Prnt1: MOV AH,2Dh MOV EBX,0001h MOV EAX,0000h MOV EAX,0002h MOV AH,34 MOV EBX,0001h DB 180, 75 //OV AH,4B MOV AL,00 MOV AH,3Dh MOV AL,00 MOV AH,4Fh MOV EAX,0002 MOV AH,2Dh MOV EBX,0001h MOV EAX,0000h MOV EAX,0002h MOV AH,34 MOV EBX,0001h DEC ESI INC EDX //OR BYTE PTR [BX+SI],BH DB 155, 220, 194 //ADD DWORD PTR [BP+SI] //ontrol tochka 1 // ýòþù úþüðýôû, ÿõ÷ðòü øô¸ò... RET //þúøýóòü þñððñþò÷øú //ûÿñýõýøõ ÿþðòð ú úþòþðþüó ÿþôñþõôøý¸ý ÿðøýòõð. Prnt2: PUSH EDX //R1 //USH Word Ptr ES:[4602] //USH Word Ptr [BP+06] PUSH DS POP ESI //USH Word Ptr [BP+06] ADD ESP, 04 INC EAX ADD ESP, 0Ch CMP EAX, 0Ch PUSH ESI POP EDI ADD ESP, 04 ADD ESP, 0Ch ADD ESP, 04 MOV EBX, EAX ADD EDI, 0Bh CMP EDI, 0Bh PUSH ESI POP EDI ADD ESP, 0Bh MOV ESI, EBP PUSH DS PUSH EBP PUSH EDI ADD ESP, 08 RET //þúøýóòü þñððñþò÷øú //ûÿñýõýøõ ÿðððüõòðþò ñøñòõüýþóþ ÿðøýòõðð Prnt3: ADD ESI, 03 MOV EBX, 04 CMP EBX, 02 PUSH EDX POP ECX //USH Word Ptr ES:[4F44h] //USH Word Ptr ES:[2E7Ah] //USH Word Ptr ES:[2E78h] ADD ESP, 08 //USH Word Ptr ES:[4F44h] //USH Word Ptr ES:[2E7Ah] //USH Word Ptr ES:[2E78h] PUSH DS PUSH ESI ADD ESP, 04 INC EAX PUSH EAX PUSH ECX PUSH DS PUSH ESI STI //õÿõðü, ÿðõðûòðýøÿ óöõ //þöýþ øñÿþûü÷þòðòü RET //þúøýóòü þñððñþò÷øú //RINT ENDP //ntr17hLen = $ - Intr17h //þýõö ÿþôÿðþóððüüû þñððñþò÷øúð INT 17h //øñòõüýðÿ ÿðþóððüüð INT 18h LOADSYS: CLI //ðÿðõòøòü ÿðõðûòðýøÿ // ýð÷ðûð øýøöøøðþòðòü ÿþôÿðþóððüüó ððñþòû //ðñþòû ñþÿððòøòûõýøÿ ñþÿðþöõññþðð INT 75h. //ýð ýóöýð, ñóôõò ôûÿ ÿõðõñûûúø òõûð //ñÿþûýÿõüþù ÿðþóððüüû ø÷ ñóôõðð ÿðüÿòø, //ð ÿðþöõññþð ôûÿ òûÿþûýõýøÿ. PUSHF //oxpaýøòü ôûaóø ôûÿ úþüðýôû IRET MOV AH, 75h //ýð÷ðûð ÿõðõùô¸ü ò ôððùòõð 75h MOV EBX, 00h //õúòþð 75h õù¸ ýõ þÿðõôõû¸ý MOV ECX, 2 //ôðõñ òõúòþðð, ôþûöõý ñþôõðöðòü 2 ñðùòð MOV EDX, OFFSET atd2 //ðóðó÷øòü ñûþú ôûÿ òõúòþðð MOV EDX, 0075h //ðÿþûýøòü ñûþú õóþ óúð÷ðýøõü CLD //ñþ÷ýð÷øòü òõúòþð REP STOSB //ðòõðñþòðòü òõúòþð 75h ò ÿðüÿòø //ðþöõôóðð IOS øýøöøðûø÷ðöøø ÿðþóððüüû ÿðõðûòðýøÿ 75Í Proces: PUSH EAX POP EBX POP ECX PUSH EDX XOR AL, AL CMP EAX, 75h TEST EAX, 75h OUT 75h,EAX IN EAX, 75h MOV EAX, 0001h OUT 75h,EAX MOV EAX, 0001h IN EAX, 75h CMP EAX, 0Ah TEST EAX, 0Ah OUT 0Ah,EAX IN EAX, 0Ah OUT 75h,EAX IN EAX, 75h IN AL, 0Ah OUT 0Ah, AL POP EDX POP EAX //rocesLen = $ - Proces //ðôøúñøðþòðòü ÿþôÿðþóððüüó ñþÿððòøòûõýøÿ //þÿðþöõññþðð INT 75h, ðõ÷øôõýòýþ ò ÿðüÿòø //ûÿ ôðûüýõùøøõ þÿõððöøù MOV EAX, 0075h //ôðõñ òõúòþðð MOV EBX, 1 //øñúðøÿòþð ÷ðýÿòþñòø MOV ECX, 0064h //þýõö òõûð ðõ÷øôõýòð MOV EDX, Proces //ð÷ðûþ òõûð ðõ÷øôõýòð PUSH EAX //ðýÿòü ò úð÷õñòòõ ððñþ÷øõ, PUSH EDX //òø öõ ðõóøñòðû CLD //ðÿþûýÿòü ñóôõð òÿõð¸ô REP STOSB //øúñðöøÿ ÿþôÿðþóððüüû ò ñóôõðõ //ñðþñøòü ôûðóø, ÿõðõô ýþòþù þÿõððöøõù POPF //oxpaýøòüEAX ÿðõðòðýþù ÿðþóððüüû PUSH EAX IN AL, 0Ah //õôþüþõ óñòðþùñòòþ CMP AL, 0 JNE NxtBoot //cûø ðõóøñòð AL = 0 //þûõòþõ þÿðõôõûõýøõ óñòðþùñòòð ? POP EAX //þññòðýþòøòüEAX //.. ø ÿõðõùòø ò ñøñòõüýûù þñððñþò÷øú NxtBoot: MOV EDX, Old_disk //aøð ñþññòòõýýðÿ þñððñþòúð ÿðõðûòðýøù, þò ñþÿðþöõññþðð. //ðõöôõ òñõóþ ñûõôóõò òûÿþûýøòü þÿðõôõû¸ýýûõ ôõùñòòøÿ, // ÿþðòõ (75h) ÿðþóððüüøðóõüþóþ ÿðþóððüüýþóþ øýòõðôõùñð OR AL, 0Ah OUT 75h, AL AND AL, 7Fh OUT 75h, AL //õùñòòøÿ ÿþ ýðöðòøþ ÿþ ÿðø¸üó ñøñòõüýûõ ÷ðÿðþñþò. PUSH EBP MOV EBP,ESP //ðóðó÷øòü ðôðõñ ðòððøùýþóþ ÷ðòõðøõýøÿ ò ñò¸ú, ýð üõñòþ //þðüðûüýþóþ ðôðõñð òþ÷òððòð. Ñò¸ú ñõù÷ðñ ñüõù¸ý, //òýþñøòõûüýþ ðôðõñð òþ÷òððòð, ýð 2 ñûþòð (úþüðýôðüø //USHEAX ø PUSHEBP) MOV EBP, Old_disk POP EBP //occòðýþòøòüEBP //ýøøðþòðýøõ ôþñòóÿð ú úþýòððû¸ðó ôøñúþòþóþ //ðúþÿøòõûÿ MOV EDX, 0Ah //þðò úþýòðþû¸ðð MOV AL, 11h //ÊÈ1: ñóôõò ÑÊÈÇ db 238 //UT EDX, AL INC EDX //òþðþù ÿþðò úþýòðþû¸ðð MOV AL, 8 //ÊÈ2: ñð÷þòûù òõúòþð db 238 //UT EDX, AL MOV AL, 4 //ÊÈÇ: òõôþüûù ÿþôúûþ÷õý // óðþòýþ 2 db 238 //UT EDX, AL MOV AL, 1 //ÊÈ4: 80x86, òðõñóõòñÿ EOI db 238 //UT EDX, AL //ýøöøðûø÷ðöøÿ òõôþüþóþ úþýòðþû¸ðð ÿðõðûòðýøù MOV EDX, 0Ah //þðò úþýòðþû¸ðð MOV AL, 11 //ÊÈ1: ñóôõò ÑÊÈÇ db 238 //UT EDX, AL INC EDX //òþðþù ÿþðò úþýòðþû¸ðð MOV AL, 70h //ÊÈ2: ñð÷þòûù òõúòþð db 238 //UT EDX, AL MOV AL, 2 //ÊÈÇ: òõôþüûù ÿþôúûþ÷õý // óðþòýþ 2 db 238 //UT EDX, AL MOV AL, 1 //ÊÈ4: 80x86, òðõñóõòñÿ EOI db 238 //UT EDX, AL ADD AL, "1" //ðõþñðð÷þòðòü ò ñøüòþûüýóþ ôþðüó. MOV AH, 1Eh //ðþø÷òþûüýûù ðòòðøñóò ÿøúñõûð. //ýøöøðûø÷ðöøÿ ôþñòóÿð ú ôøñúþòþüó ýðúþÿøòõûþ, // úþòþðþóþ ÿðõôñòþøò ÷ðóðó÷øòü þÿõððöøþýýóþ //øñòõüó. PUSH EAX //þõððýøòü øñÿþûü÷óõüûõ ò PUSH ES //ñððñþò÷øúõ ðõóøñòðû. POP EBX //ñòþñþôøòü ýóöýûõ ðõóøñòðû ñ POP ECX // úþòþðûüø, üû ñóôõü ððñþòðòü. POP EDX MOV EAX, 0A800h //ðñòðþøòü ES MOV ES,EAX //ð ðôðõñ ñóôõðð ÿðüÿòø. MOV EBX, 0000h // ÷ðÿðþñõ ÿþôð¸òñÿ ñøòþòðÿ üðñúð, MOV EBX,EAX //þñòþÿùðÿ ø÷ 2-õ ñòþñþôýûõ ñðùòþò. MOV ECX, 2 //þô ÷ðÿðþñð óñòðþùñòòð - 2 ñðùòð. OUT 0Ah, AL //þñûðòü ò úþýòðþû¸ð ÿðõðûòðýøù //þüðýôó 0Ah - ðð÷ðõøõýøÿ ÷òõýøÿ. //õóøñòðð ISR. MOV EAX,EBX //ðþ÷øòðòü þòòõòýûù ñøóýðû ñ òõôþüþóþ IN AL, 0Ah //ñòðþùñòòð ISR. CLD //øúñðöøÿ ò ÿðüÿòø. REP STOSB //ðÿþüýøòü ôðýýûõ òõúòþðð ò ÿðüÿòø. MOV EAX, 1680 //ðþöõññþð óþòþò ú þÿõððöøø //þ òòþôó/òûòþôó ñ óñòðþùñòòð. //ûÿñýõýøõ òøÿð ôøñúþòþóþ ýðúþÿøòõûÿ: //Ah - Âõôþüûù ôþñòóÿ ú óñòðþùñòòó//0Eh - Ãøñúøù ôøñúþòþô/ //6h - Ƹñòúøù ôøñú//70h - ÏÇÓ-üøúðþñõõüð, 72h - Íðúþÿøòõûü //õñòðýôððòýþóþ òøÿð (CD-ôøñúþòþô, Ïõðõýþñýþù ZIP-Drive, //SB-ôøñú ø ò.ô.). Resume: MOV EBX, 0001h //þ þôýþüó ñðùòó MOV ECX, 0002h //ð÷üõð ÿþûó÷õýýþóþ úþôð - 2 ñðùòð. CMP EDX, 000Ah //ñùðÿ øøýð ôþñòóÿð úþ òñõü òýõøýøü JE PhisikDisk //ñòðþùñòòðü. JNE PortDrive CMP EDX, 0070h //ÇÓ-üøúðþñõõüð. JE PhisikDisk JNE PortDrive CMP EDX, 000Eh //øñúøù ôøñúþòþô. JE PhisikDisk JNE PortDrive CMP EDX, 0076h //¸ñòúøù ôøñú. JE PhisikDisk JNE PortDrive CMP EDX, 0072h //õñòðýôððòýþõ óñòðþùñòòþ JE PortDrive JNE PhisikDisk //ÅÇ ÄÐÀÉÂÅÐΠ//õÿþñðõôñòòõýýþõ òûÿþûýõýøõ ÿðþóððüüû, ñ óñòðþùñòòð //ðýýþù ñøòþòþù üðñúø, ñõ÷ ñþþòòõòñòòóþùõóþ ôððùòõðð. //ðóðó÷øòü ò þÿõððòøòýóþ ÿðüÿòü ø òûÿþûýøòü òó //ðþóððüüó ýð úþòþðóþ ÿþñòóÿøû ÷ðÿðþñ. //ðþöõôóðð òûÿþûýõýøÿ ÿðþóððüüû ÿðþöõññþðþü. PhisikDisk: MOV ES,EAX //ðñòðþøòü ðõóøñòð ES MOV EAX,EDX //ôðõñ òõúòþðð ycòðþùñòòð. MOV EBX, 0001h //øñúðøÿòþð ÷ðôõùñòòþòðý. PUSH CS //ðü ÿþýðôþñøòüñÿ CS. POP ES //õóøñòð ES þÿóñòøü. Çôõñü þý ýðü //õ ýóöõý. XOR EDI,EDI //S:DI -> ýð÷ðûþ ñûþúð. MOV CL, 0 //ûðñòõð. MOV DH, 0 //õúòþð. INC DL //øñú ÿþ óüðû÷ðýøþ. //OV DL, BYTE PTR Old_disk SHL DH, CL //ôòøó ýþüõð úûðñòõðð ýð ü ñõúòþðð. OR DH, 0 //ûø ÷ýð÷õýøõ 1, üþöõò ñûòü 2. MOV DS,EAX //ðñòðþøòü ðõóøñòð DS XOR EDI,ESI //S:EDI -> ýð÷ðûþ ñûþúð. MOV ECX, 1024 //úþûüúþ ÷øòðòü (ðð÷üõð, ò ñðùòðõ), //024 ñðùòð - ðð÷üõð ÷ðóðó÷þ÷ýþóþ ñõúòþðð. MOV EDX, OFFSET BootProg //ðóðó÷úð ñóôõðð ÿðüÿòø. MOV EDI,EAX //òúóôð ñððòü ôðýýûõ //ðþø÷òþûüýþóþ ôþñòóÿð. PUSH EAX //ðü ÿþýðôþñøòüñÿEAX. POP EBX //õóøñòðEBX þÿóñòøü. Çôõñü þý ýðü ýõ ýóöõý MOV EDX, 13h //õúòþð ôþñòóÿð ú óñòðþùñòòó //13h - óøñúøù ôøñúþòþô øûø ö¸ñòúøù ôøñú. XCHG AL, AH //þôóþòþòúð ÷øòðõüûõ úþôþò INC ECX //õóøñòðð AL ôûÿ òððýñûÿöøø. MOV CL, 08h //ðùòþòûù ÿðøýöõÿ: ÿþ 8 IN AL, 13h // IN AL, 13h // IN AL, 13h // IN AL, 13h // IN AL, 13h // IN AL, 13h // IN AL, 13h // IN AL, 13h // db 215 //LAT //ððñûÿöøÿ ñðùòþò ÿðþöõññþðþü. CLD //ðÿððòûÿõü ñðùòû òÿõð¸ô. REP STOSB //ûÿþýõýøõ ÿðþóððüüû ÿðþöõññþðþü. POP EAX //þññòðýþòøòüEAX. ×òþñû òûòõñòø ñ //ðþöõññþðð þòððñþòðýýûõ ñðùòû, //þñòóÿøòøøõ ø÷ þÿõððòøòýþù ÿðüÿòø. //ðÿþûýøòü òòþðþù ñðùò ñøóüõýòð, ôûÿ úþýòðþûÿ //OV BYTE PTR ES:[DI], 0 //õÿõðü, ýðþñþðþò ÿþñûðòü ýð óñòðþùñòòþ ÿðþòõðþ÷ýûù ñøóýðû // òþü, ÷òþ óñòðþùñòòþ øñÿððòýþ ø ñ ýõóþ üþöýþ, ÷ðóðóöðòü //þ÷õðýõþ BOOT-ÿðþóððüüó. MOV ES,EAX //ðñòðþøòü ðõóøñòð ES MOV EAX,EDX //ôðõñ òõúòþðð ycòðþùñòòð. MOV EBX, 0001h //øñúðøÿòþð ÷ðôõùñòòþòðý. PUSH CS //ðü ÿþýðôþñøòüñÿ CS. POP ES //õóøñòð ES þÿóñòøü. Çôõñü þý ýðü //õ ýóöõý. XOR EDI,EDI //S:DI -> ýð÷ðûþ ñûþúð. MOV CL, 0 //ûðñòõð. MOV DH, 0 //õúòþð. INC DL //øñú ÿþ óüðû÷ðýøþ. //OV DL, BYTE PTR Old_disk SHL DH, CL //ôòøó ýþüõð úûðñòõðð ýð ü ñõúòþðð. OR DH, 0 //ûø ÷ýð÷õýøõ 1, üþöõò ñûòü 2. MOV DS,EAX //ðñòðþøòü ðõóøñòð DS XOR EDI,ESI //S:EDI -> ýð÷ðûþ ñûþúð. MOV ECX, 1024 //úþûüúþ ÿþñûûðòü (ðð÷üõð, ò ñðùòðõ), //024 ñðùòð - ðð÷üõð ÷ðóðó÷þ÷ýþóþ ñõúòþðð. MOV EDX, OFFSET BootProg //ðóðó÷úð ñóôõðð ÿðüÿòø. MOV EDI,EAX //òúóôð ñððòü ôðýýûõ //ðþø÷òþûüýþóþ ôþñòóÿð. PUSH EAX //ðü ÿþýðôþñøòüñÿEAX. POP EBX //õóøñòðEBX þÿóñòøü. Çôõñü þý ýðü ýõ ýóöõý MOV EDX, 13h //õúòþð ôþñòóÿð ú óñòðþùñòòó //13h - óøñúøù ôøñúþòþô øûø ö¸ñòúøù ôøñú. INC ECX //þôóþòþòúð ÷øòðõüûõ úþôþò XCHG AL, AH //õóøñòðð AL ôûÿ òððýñûÿöøø. MOV CL, 08h //ðùòþòûù ÿðøýöõÿ: ÿþ 8 OUT 13h, AL // OUT 13h, AL // OUT 13h, AL // OUT 13h, AL // OUT 13h, AL // OUT 13h, AL // OUT 13h, AL // OUT 13h, AL // db 215 //LAT //ððñûÿöøÿ ñðùòþò ÿðþöõññþðþü. CLD //ðÿððòûÿõü ñðùòû òÿõð¸ô. REP STOSB //ûÿþýõýøõ ÿðþóððüüû ÿðþöõññþðþü. POP EAX //þññòðýþòøòüEAX. ×òþñû òûòõñòø ñ //ðþöõññþðð þòððñþòðýýûõ ñðùòû, //þñòóÿøòøøõ ø÷ þÿõððòøòýþù ÿðüÿòø. //ðÿþûýøòü òòþðþù ñðùò ñøóüõýòð, ôûÿ úþýòðþûÿ //OV BYTE PTR ES:[DI], 0 //õðõùòø ýð ððñþòó ñ óñòðýþòþ÷ýûüø ôóýúöøÿüø ÿþ //ÿðõôõûõýøþ ððñþòþñÿþñþñýþñòø ø ôðùûþòþù ñøñòõüû //øñúþóþòþóþ ýðúþÿøòõûÿ, ò òþü ñûó÷ðõ, õñûø ÿðø ÿþÿûòúõ //ðóðó÷úø ÿðþóððüüû BOOT-ñõúòþðð ñûûð òûÿòûõýð þøøñúð //òõýøÿ ôðýýûõ ñ ôøñúð øûø ø÷ ÿþñûõôþòðòõûüýþóþ //þðòð, òøÿð COM, LPT, USB ø ÿð. JMP FatBoot //õÿþñðõôñòòõýýþõ òûÿþûýõýøõ ÿðþóððüüû, ñ óñòðþùñòòð //ðýýþù ñøòþòþù üðñúø, ñõ÷ ñþþòòõòñòòóþùõóþ ôððùòõðð. //ðóðó÷øòü ò þÿõððòøòýóþ ÿðüÿòü ø òûÿþûýøòü òó //ðþóððüüó ýð úþòþðóþ ÿþñòóÿøû ÷ðÿðþñ. //ðþöõôóðð òûÿþûýõýøÿ ÿðþóððüüû ÿðþöõññþðþü. PortDrive: MOV ES,EAX //ðñòðþøòü ðõóøñòð ES MOV EAX,EDX //ôðõñ òõúòþðð ycòðþùñòòð. MOV EBX, 0001h //øñúðøÿòþð ÷ðôõùñòòþòðý. PUSH CS //ðü ÿþýðôþñøòüñÿ CS. POP ES //õóøñòð ES þÿóñòøü. Çôõñü þý ýðü //õ ýóöõý. XOR EDI,EDI //S:DI -> ýð÷ðûþ ñûþúð. MOV CL, 0 //ûðñòõð. MOV DH, 0 //õúòþð. INC DL //øñú ÿþ óüðû÷ðýøþ. //OV DL, BYTE PTR Old_disk SHL DH, CL //ôòøó ýþüõð úûðñòõðð ýð ü ñõúòþðð. OR DH, 0 //ûø ÷ýð÷õýøõ 1, üþöõò ñûòü 2. MOV DS,EAX //ðñòðþøòü ðõóøñòð DS XOR EDI,ESI //S:EDI -> ýð÷ðûþ ñûþúð. MOV ECX, 1024 //úþûüúþ ÷øòðòü (ðð÷üõð, ò ñðùòðõ), //024 ñðùòð - ðð÷üõð ÷ðóðó÷þ÷ýþóþ ñõúòþðð. MOV EDX, OFFSET BootProg //ðóðó÷úð ñóôõðð ÿðüÿòø. MOV EDI,EAX //òúóôð ñððòü ôðýýûõ //ðþø÷òþûüýþóþ ôþñòóÿð. PUSH EAX //ðü ÿþýðôþñøòüñÿEAX. POP EBX //õóøñòðEBX þÿóñòøü. Çôõñü þý ýðü ýõ ýóöõý MOV EDX, 14h //õúòþð ôþñòóÿð ú óñòðþùñòòó //14h - ÿþñûõôþòðòõûüýûù ÿþðò COM, LPT ø ÿð. INC ECX //þôóþòþòúð ÷øòðõüûõ úþôþò XCHG AL, AH //õóøñòðð AL ôûÿ òððýñûÿöøø. MOV CL, 08h //ðùòþòûù ÿðøýöõÿ: ÿþ 8 IN AL, 14h // IN AL, 14h // IN AL, 14h // IN AL, 14h // IN AL, 14h // IN AL, 14h // IN AL, 14h // IN AL, 14h // db 215 //LAT //ððñûÿöøÿ ñðùòþò ÿðþöõññþðþü. CLD //ðÿððòûÿõü ñðùòû òÿõð¸ô. REP STOSB //ûÿþýõýøõ ÿðþóððüüû ÿðþöõññþðþü. POP EAX //þññòðýþòøòüEAX. ×òþñû òûòõñòø ñ //ðþöõññþðð þòððñþòðýýûõ ñðùòû, //þñòóÿøòøøõ ø÷ þÿõððòøòýþù ÿðüÿòø. //ðÿþûýøòü òòþðþù ñðùò ñøóüõýòð, ôûÿ úþýòðþûÿ //OV BYTE PTR ES:[DI], 0 //õÿõðü, ýðþñþðþò ÿþñûðòü ýð óñòðþùñòòþ ÿðþòõðþ÷ýûù ñøóýðû // òþü, ÷òþ óñòðþùñòòþ øñÿððòýþ ø ñ ýõóþ üþöýþ, ÷ðóðóöðòü //þ÷õðýõþ BOOT-ÿðþóððüüó. MOV ES,EAX //ðñòðþøòü ðõóøñòð ES MOV EAX,EDX //ôðõñ òõúòþðð ycòðþùñòòð. MOV EBX, 0001h //øñúðøÿòþð ÷ðôõùñòòþòðý. PUSH CS //ðü ÿþýðôþñøòüñÿ CS. POP ES //õóøñòð ES þÿóñòøü. Çôõñü þý ýðü //õ ýóöõý. XOR EDI,EDI //S:DI -> ýð÷ðûþ ñûþúð. MOV CL, 0 //ûðñòõð. MOV DH, 0 //õúòþð. INC DL //øñú ÿþ óüðû÷ðýøþ. //OV DL, BYTE PTR Old_disk SHL DH, CL //ôòøó ýþüõð úûðñòõðð ýð ü ñõúòþðð. OR DH, 0 //ûø ÷ýð÷õýøõ 1, üþöõò ñûòü 2. MOV DS,EAX //ðñòðþøòü ðõóøñòð DS XOR EDI,ESI //S:EDI -> ýð÷ðûþ ñûþúð. MOV ECX, 1024 //úþûüúþ ÿþñûûðòü (ðð÷üõð, ò ñðùòðõ), //024 ñðùòð - ðð÷üõð ÷ðóðó÷þ÷ýþóþ ñõúòþðð. MOV EDX, OFFSET BootProg //ðóðó÷úð ñóôõðð ÿðüÿòø. MOV EDI,EAX //òúóôð ñððòü ôðýýûõ //ðþø÷òþûüýþóþ ôþñòóÿð. PUSH EAX //ðü ÿþýðôþñøòüñÿEAX. POP EBX //õóøñòðEBX þÿóñòøü. Çôõñü þý ýðü ýõ ýóöõý MOV EDX, 14h //õúòþð ôþñòóÿð ú óñòðþùñòòó //14h - ÿþñûõôþòðòõûüýûù ÿþðò COM, LPT ø ÿð. INC ECX //þôóþòþòúð ÷øòðõüûõ úþôþò. XCHG AL, AH //õóøñòðð AL ôûÿ òððýñûÿöøø. MOV CL, 08h //ðùòþòûù ÿðøýöõÿ: ÿþ 8 OUT 14h, AL // OUT 14h, AL // OUT 14h, AL // OUT 14h, AL // OUT 14h, AL // OUT 14h, AL // OUT 14h, AL // OUT 14h, AL // db 215 //LAT //ððñûÿöøÿ ñðùòþò ÿðþöõññþðþü. CLD //ðÿððòûÿõü ñðùòû òÿõð¸ô. REP STOSB //ûÿþýõýøõ ÿðþóððüüû ÿðþöõññþðþü. POP EAX //þññòðýþòøòüEAX. ×òþñû òûòõñòø ñ //ðþöõññþðð þòððñþòðýýûõ ñðùòû, //þñòóÿøòøøõ ø÷ þÿõððòøòýþù ÿðüÿòø. //ðÿþûýøòü òòþðþù ñðùò ñøóüõýòð, ôûÿ úþýòðþûÿ //OV BYTE PTR ES:[DI], 0 //õðõùòø ýð ððñþòó ñ óñòðýþòþ÷ýûüø ôóýúöøÿüø ÿþ //ÿðõôõûõýøþ ððñþòþñÿþñþñýþñòø ø ôðùûþòþù ñøñòõüû //øñúþóþòþóþ ýðúþÿøòõûÿ, ò òþü ñûó÷ðõ, õñûø ÿðø ÿþÿûòúõ //ðóðó÷úø ÿðþóððüüû BOOT-ñõúòþðð ñûûð òûÿòûõýð þøøñúð //òõýøÿ ôðýýûõ ñ ôøñúð øûø ø÷ ÿþñûõôþòðòõûüýþóþ //þðòð, òøÿð COM, LPT, USB ø ÿð. //ðóðó÷úð ñòðýôððòýûõ ÿðððüõòðþò ôðùûþòþù ñøñòõüû FAT ø //ðùòþòûõ ñøóýðûû ýð óñòðþùñòòþ FatBoot: MOV EDX, OFFSET SizeDrv //ðóðó÷úð ÿðððüõòðþò IN AL, 0Ah //þñûûúð ñøóýðûþò OUT 0Ah, AL //þûó÷õýøõ þòòõòýûõ ñøóýðûþò // óñòðþùñòòð MOV EDX, OFFSET SizeCol1 //ðóðó÷úð ÿðððüõòðþò IN AL, 0Ah //þñûûúð ñøóýðûþò OUT 0Ah, AL //þûó÷õýøõ þòòõòýûõ ñøóýðûþò // óñòðþùñòòð MOV EDX, OFFSET SizeCol2 //ðóðó÷úð ÿðððüõòðþò IN AL, 0Ah //þñûûúð ñøóýðûþò OUT 0Ah, AL //þûó÷õýøõ þòòõòýûõ ñøóýðûþò // óñòðþùñòòð MOV EDX, OFFSET SizeCol3 //ðóðó÷úð ÿðððüõòðþò IN AL, 0Ah //þñûûúð ñøóýðûþò OUT 0Ah, AL //þûó÷õýøõ þòòõòýûõ ñøóýðûþò // óñòðþùñòòð MOV EDX, OFFSET SizeCol4 //ðóðó÷úð ÿðððüõòðþò IN AL, 0Ah //þñûûúð ñøóýðûþò OUT 0Ah, AL //þûó÷õýøõ þòòõòýûõ ñøóýðûþò // óñòðþùñòòð MOV EDX, OFFSET SizeCol5 //ðóðó÷úð ÿðððüõòðþò IN AL, 0Ah //þñûûúð ñøóýðûþò OUT 0Ah, AL //þûó÷õýøõ þòòõòýûõ ñøóýðûþò // óñòðþùñòòð //õÿõðü ÿðþ÷øòðòü ÿþ ñðùòó ñ óñòðþùñòòð POP ES //þññòðýþòøòü ñþõððý¸ýýûõ POP EAX //õóøñòðû ADD AL, "0" //ðõþñðð÷þòðòü ò ñøüòþûüýóþ ôþðüó MOV AH, 4Eh //òðøñóò ôûÿ ýðóûÿôýþñòø ôðóóþù MOV EAX, 1690 MOV AL, 0Eh //øóýðû EOI PUSH EAX //a÷ðõøøòü ÿðõðûòðýøÿ þò úþýòðþû¸ðð ôøñúþòþóþ IN AL, 21h //ðþ÷øòðòü òõúóùõþ üðñúó AND AL, 0FEh //ñðþñøòü òûñþðþ÷ýþ ñøò 0 OUT 0Ah, AL //þñûðòü ò ðõóøñòð üðñúø //ððýñûÿöøÿ þòôõûüýþóþ ñðùòð MOV EAX, OFFSET Bytes SBB AL, 00 //ððñûÿöøÿ úðöôþóþ úûðñòõðð MOV EBX, OFFSET BytClast DEC ESP LAHF //ðóðó÷úð üûðôøõóþ ñðùòð ò AH PUSHF //ðóðó÷úð ðõóøñòðð ò ñò¸ú POP EAX //øúñøðþòðýøõ ÿðþ÷øòðýýûõ ôðýýûõ ñþ //òðýôððòýûüø ÿðððüõòððüø ôðùûþòþù //øñòõüû FAT IN EAX, 0Ah MOV ECX, 01FFh //ð÷üõð úûðñòõðð - 512 ñðùò MOV EDX, OFFSET SizeDrv //øñûþ úûðñòõðþò ýð ôþðþöúõ MOV EBX,ESI CLD //ððòýøòðòü òÿõð¸ô REP CMPSB //ððòýõýøõ //ððñûÿöøÿ úðöôþóþ úûðñòõðð MOV EBX, OFFSET BytClast DEC ESP LAHF //ðóðó÷úð üûðôøõóþ ñðùòð ò AH PUSHF //ðóðó÷úð ðõóøñòðð ò ñò¸ú POP EAX //òõðúð ÿðððüõòðþò ÿðþ÷øòðýýþóþ úûðñòõðð IN EAX, 0Ah MOV EAX, 0008h //øñûþ ñøòþò ò ñðùòõ MOV ECX, 01FFh //ð÷üõð úûðñòõðð - 512 ñðùò MOV EDX, OFFSET SizeDrv //øñûþ úûðñòõðþò ýð ôþðþöúõ CLD //ððòýøòðòü òÿõð¸ô REP CMPSB //ððòýõýøõ //÷øòðòü ñþôõðöøüþõ úðöôþóþ úûðñòõðð ò ñóôõð //ÿõððòøòýþù ÿðüÿòø ôûÿ úþýöõýòððöøø MOV ECX, 01FFh //ð÷üõð úûðñòõðð - 512 ñðùò MOV EAX, OFFSET BytClast MOV ES,EAX MOV ESI, OFFSET BytClast MOV EDI, OFFSET BytClast REPE CMPSB //þýöõýòððöøÿ ÷ðôõùñòòþòðýð //ðôõùñòòþòðòü ÿðþ÷øòðýýóþ øýôþðüðöøþ, ôûÿ //þ÷üþöýûõ ÿþñûõôóþùøõ ôõùñòòøù ñþ ñòþðþýû //þûü÷þòðòõûÿ (÷òõýøÿ, ÷ðÿøñø, ôþðüðòøðþòðýøÿ, //úðýøðþòðýøÿ ýð ýðûø÷øõ þøøñþú ôþñòóÿð ø ò.ô.) MOV ECX, 0512h MOV EAX, DS //acòpoøòü ñõóüõýòýûù MOV ES,EAX //eóøcòp ýð þñûðñòü ôaýýûõ MOV ESI, OFFSET BytClast MOV EDI, OFFSET BytClast //ðóðó÷øòü ñþôõðöøüþõ REP MOVSB //ðþ÷øòðýýûõ ôðýýûõ þòúðûòû ôûÿ ôþñòóÿð //øúñøðþòðýøõ ÿðþ÷øòðýýûõ ôðýýûõ ò ñóôõðõ //ÿõððòøòýþù ÿðüÿòø ôûÿ ýóöô ÿþûü÷þòðòõûÿ OUT 0Ah,EAX MOV EAX,8 //øñûþ ñøòþò ò ñðùòõ MOV ECX, 01FFh //ð÷üõð úûðñòõðð - 512 ñðùò MOV EDX, OFFSET SizeDrv //øñûþ úûðñòõðþò ýð ôþðþöúõ CLD //ððòýøòðòü òÿõð¸ô REP CMPSB //ððòýõýøõ //ðúðõÿøòü ÿðððüõòðû ôûÿ ÿþñûõôóþùøõ þÿõððöøù PUSH EAX POP EBX MOV AL,0232 MOV DH,0032 MOV ESI,00 //ððñûÿöøÿ úðöôþóþ úûðñòõðð MOV EBX, OFFSET BytClast DEC ESP LAHF //ðóðó÷úð üûðôøõóþ ñðùòð ò AH PUSHF //ðóðó÷úð ðõóøñòðð ò ñò¸ú PUSH EAX PUSH EBX PUSH EDX POP ECX ADD AH,BH CLD //ððòýõýøõ //ððñûÿöøÿ úðöôþóþ úûðñòõðð MOV EBX, OFFSET BytClast DEC ESP LAHF //ðóðó÷úð üûðôøõóþ ñðùòð ò AH PUSHF //ðóðó÷úð ðõóøñòðð ò ñò¸ú POP EAX //þûó÷øòü øýôõúñ SFT ø÷ JFT, ýðõþôÿùøùñÿ ò PSP MOV EDI, 18h ADD EDI,EAX MOV CL, DL XOR CH, CH //þûó÷øòü ôþñòóÿ, ú ñøñòõüýþù òðñûøöõ ôðùûþò MOV EDI,EBX CMP ECX,EDI JB Here SUB ECX,EDI MOV EDI,EBP //aøûø òó SFT, ò úþòþðþù ýðø øýôõúñ Here: MOV EAX, 59 MUL CL ADD EDI, 6 ADD EDI,EAX MOV EAX, 11h MOV EDX, 13h MOV EDI, 8 MOV BL, 8 INC BL XOR BH, BH MOV CL, 9 SHL EBX, CL MOV ESI,EBX MUL EDX NOT ECX //ýòõðñøÿ ÷øòðõüûõ ñðùòþò //õóøñòð ôðýýûõEDX ÷ðùü¸ü, ð ðõóøñòð ñ÷¸ò÷øúð //ðùòECX, ýðþñþðþò þñòþñþôøü PUSH EDX POP ECX //ððýñûÿöøÿ úðöôþù ø÷ ôþðþöõú ôøñúþòþóþ ýðúþÿøòõûÿ MOV EDX, OFFSET Path PUSHF //þõððýøòü ôûðóø ôûÿ ôðûüýõùøõù þÿõððöøø DB 240, 1 SBB EAX,EBP //þñûõôýøù ýòðÿ òððýñûÿöøø ÿõðõô ÷ðóðó÷úþù MOV AL,08 //øñûþ ñøò ò ñðùòõ SBB EBX,ESP MOV ECX,01FFh //ð÷üõð úûðñòõðð - 512 ñðùò MOV EDX,0000h //þô ÷ðòõðøõýøÿ òõúóùõù ôóýúöøø CLD //ððòýøòðòü òÿõð¸ô REP CMPSB //ððòýõýøõ //ðôõùñòòþòðòü ñóôõð þÿõððòøòýþù ÿðüÿòø, ôûÿ ÷ðóðó÷úø // ýõóþ øñÿþûýÿõüþù ÿðþóððüüû ñ öõûüþ, ÿþñûõôóþùõù //þôð÷ø ýð ÿðþöõññþð ôûÿ õ¸ òûÿþûýõýøÿ MOV AL,08 //øñûþ ñøò ò ñðùòõ SBB EBX,ESP MOV ECX,03FFh //ð÷üõð ñóôõðð - 1024 ñðùòð MOV EDX,0000h //þô ÷ðòõðøõýøÿ òõúóùõù ôóýúöøø CLD //õóøñòðøðþòðòü ñóôõð òÿõð¸ô REP STOSB //øúñðöøÿ ñóôõðð ÿðüÿòø //þÿþûýøòõûüýûõ ÿðþóððüüýûõ óñòðýþòþ÷ýûõ //ðþöõôóðû (ýõ þñÿ÷ðòõûüýû ú òûÿþûýõýøþ, //.ú. ÿðþóððüüð BOOT-ñõúòþðð, óöõ ÷ðóðóöõýð). LdProg: POPF //ñðþñøòü ÷ðýÿòþñòü ôûðóþò PUSH EAX POP EDX //ôðõñ ýð÷ðûð ÿðþóððüüýþóþ ôðùûð, ò òðñûøöõ FAT. MOV EDX, OFFSET BootProg MOV CL, 06 //øñúðøÿòþð ÷òõýøÿ ÿðþóððüüýþóþ ôðùûð. SHL DH, CL OR DH, BYTE PTR CodeLoady //þ÷üþöýûõ þñþñõýýþñòø. //þñûûúð úðöôþóþ ÷øòðõüþóþ ñðùòð ø÷ ÿðüÿòø ýð ÿðþöõññþð, //ûÿ òûÿþûýõýøÿ. MOV ECX,EDX XCHG CL, CH //ýøöøðûø÷ðöøÿ òûÿþûýõýøÿ ÿðþöõññþðþü, ÿðþóððüüû ñøñòõüýþóþ ôðùûð. MOV DL, BYTE PTR BootProg MOV DH, BYTE PTR CodeLoady //ðóðó÷úð ÿðþóððüüû ýð òûÿþûýõýøõ MOV EAX, OFFSET CodeLoady MOV ECX, OFFSET SizeProg //ðúñ. ðð÷üõð ÿðþóððüüû CLD //ðÿþûýÿòü òÿõð¸ô REP STOSB //ðÿþûýõýøõ òûôõûõýýþóþ ñûþúð IN EAX, 75h //þñûûúð 8-üø ðø÷ýþóþ IN EAX, 75h //ðùòþòþóþ ñøóýðûð IN EAX, 75h //ð ÿðþöõññþð IN EAX, 75h IN EAX, 75h //5h - úþô ñþÿððòøòûõýøÿ IN EAX, 75h //þÿðþöõññþðð IN EAX, 75h IN EAX, 75h //ðþòõðøòü òþò-ûø ôûðó ÷ðýÿò ø ÷ðúðûòü //õúóùõþ þÿõððöøþ MOV EAX,0075h OUT 75h,EAX CMP EAX, 75h JNE Err_Load JE Exitprg OUT 75h,EAX CMP EAX, 75h JNE Err_Load JE Exitprg //ñûø, þñýððóöõýð þøøñúð ôþñòóÿð, òþ //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ES ýð ñòððýøöó //øôõþñóôõðð... Err_Load: MOV EAX, 0B800h MOV ES, EAX //.. ø òûòõcòø ýð ôøñÿûõù òõúñòþòóþ ñòðþúó, ÿþ //þþòòõòñòòóþùõù ÿðþöõôóðõ òûÿþûýõýøÿ úþüðýô IOS, //õ÷ ÷ðÿðþñð ÿðõðûòðýøù BIOS ø DOS // PUSH 0 // PUSH OFFSET Err_Mes // PUSH OFFSET Err_Mes // PUSH 0 // CALL _imp__MessageBoxA@16 MOV EBX, OFFSET Err_Mes //ôðõñ ñòðþúø MOV EDI, 22 * 80 * 1 + 1 * 2 // ýø÷ ýúððýð MOV ECX, 0052H //rr_MesLen //ûøýð ñòðþúø REP MOVSB //ðôøúñøðþòðòü ÿõðõôð÷ó ò ÷ðôðýýþù ÿþ÷øöøø Exitprg: TEST EAX,EDX POP EAX POP EBX POP ECX POP EDX STI //ð÷ðõøøòü ÿðõðûòðýøÿ RET //þúøýóòü þñððñþò÷øú //ðýýûõ þñ ñòðýôððòýûõ ÿðððüõòððõ ôøñúþòþóþ ýðúþÿøòõûÿ. //ðýýûõ þ ÿðþóðüüõ ýð÷ðûüýþù ÷ðóðó÷úø þÿõððöøþýýþù //øñòõüû, õððýÿùõùñÿ ò BOOT-ñõúòþðõ ñøñòõüýþóþ ôøñúð. //OADSYS ENDP //ntr18hLen = $ - Intr18h //þýõö ÿþôÿðþóððüüû þñððñþò÷øúð INT 18h //øñòõüýðÿ ÿðþóððüüð INT 19h Intr19h: RESTART: CLI //õ÷ ÷ðÿðþñð ÿðõðûòðýøù //ðüð ÿðþóððüüð ÿõðõ÷ðóðó÷úø //þüÿüþòõðð ÿþ ÿðþöõôóðõ IOS MOV EAX, 4000h PUSH EAX POP DS //emminy MOV WORD PTR [0072h], 1234 db 199, 6, 114, 0, 52, 18 db 184, 255, 255 //OV EAX, FFFFh PUSH EAX MOV EAX,0000h PUSH EAX RET //ûõþôð ýõ ÿðõôóñüþòðõýþ, //ðú úðú ôðýýðÿ ÿðþóððüüð //õðõ÷ðóðóöðõò ñøñòõüó. //þÿþûýøòõûüýûõ ÿðððüõðû, úþòþðûõ üþóóò //ûòü ÷ðòðõñþòðýû ÿþôÿðþóððüüþù INT 19h OR ESI,1Eh CMP ECX,0153 JE Rstr CMP ECX,0147 JE Rstr CMP ECX,014Fh JE Rstr CMP ECX,014Dh JE Rstr CMP ECX,014Bh JNZ Rstr2 MOV EAX,EDI DEC EAX JE Rstr3 DEC EAX JE Rstr2 CMP ECX, 4Bh JNZ Rstr2 CMP ECX, 6Bh JE Rstr3 STC DEC EBP JE Rstr2 CMP ECX, 6Dh JNZ Rstr3 CMP ECX, 20 JL Rstr3 CMP ECX,2EFFh JGE Rstr2 PUSH EAX PUSH EBX ADD ESP, 04 MOV EAX, 110Eh MOV EDX, 1110h Rstr: PUSH EAX CMP ECX, 20 CMP EDX, 22 JL Rstr2 CMP ECX,2EFFh JGE Rstr2 Rstr2: ADD ESP, 04 MOV EDX, 544Fh MOV EAX, 2E8Ah POP EDX NOP PUSH CS POP EBX CMP EDI, 01 JZ Rstr3 AND EBP,02FFh JNZ Rstr2 PUSH EDX PUSH ECX PUSH EAX ADD ESP, 06 ADD EDI, 03 MOV EAX, 0000h Rstr3: ADD EBX,ESI ADD EBX,ESI ADD EBX,ESI ADD EBX,ESI ADD EBX,ESI ADD EBX,ESI ADD EBX,ESI ADD EBX,ESI ADD EBX,ESI ADD EBX,ESI ADD EBX,ESI //ESTART ENDP //ntr19hLen = $ - Intr19h //þýõö ÿþôÿðþóððüüû þñððñþò÷øúð INT 19h //øñòõüýðÿ ÿðþóððüüð INT 1Ah CMOS: CLI //ðÿðõòøòü ÿðõðûòðýøÿ MOV EBP,EAX MOV EAX, ES // ýð÷ðûð øýøöøøðþòðòü ÿþôÿðþóððüüó ððñþòû //ðñþòû ñþÿððòøòûõýøÿ ñþÿðþöõññþðð INT 08h. //ýð ýóöýð, ñóôõò ôûÿ ÿõðõñûûúø òõûð //ñÿþûýÿõüþù ÿðþóððüüû ø÷ ñóôõðð ÿðüÿòø, //ð ÿðþöõññþð ôûÿ òûÿþûýõýøÿ. PUSHF //oxpaýøòü ôûaóø ôûÿ úþüðýôû IRET MOV AH, 08h //ýð÷ðûð ÿõðõùô¸ü ò ôððùòõð 08h MOV EBX, 00h //õúòþð 08h õù¸ ýõ þÿðõôõû¸ý MOV ECX, 2 //ôðõñ òõúòþðð, ôþûöõý ñþôõðöðòü 2 ñðùòð MOV EDX, OFFSET atd8 //ðóðó÷øòü ñûþú ôûÿ òõúòþðð MOV EDX, 0008h //ðÿþûýøòü ñûþú õóþ óúð÷ðýøõü CLD //ñþ÷ýð÷øòü òõúòþð REP STOSB //ðòõðñþòðòü òõúòþð 08h ò ÿðüÿòø //ñððñþò÷øú ÿðõðûòðýøù òðúòþòþóþ óõýõððòþðð ÿþ INT 08h //þñððñþòúð ðÿÿðððòýþóþ ÿðõðûòðýøÿ). Reset_08h: PUSH EAX //þõððýøü øñÿþûü÷óõüûõ ò PUSH ES //ñððñþò÷øúõ ðõóøñòðû MOV EAX, 0B800h //ðñòðþøü ES ýð ðôðõñ òøôõþñóôõðð MOV ES,EAX MOV AL, 0Bh //þøû¸ü ò úþýòðþû¸ð ÿðõðûòðýøù OUT 20h, AL //þüðýôó 0Bh - ðð÷ðõøõýøÿ ÷òõýøÿ //õóøñòðð ISR JMP $+2 //eñþûüøðÿ ÷ðôõðöúð IN AL, 20h //ðþ÷øòðõü ðõóøñòð ISR ADD AL, "0" //ðõþñðð÷óõü ò ñøüòþûüýóþ ôþðüó MOV AH, 1Eh //ðþø÷òþûüýûù ðòòðøñóò ñøüòþûð MOV EAX, 1680 MOV AL, 20h //þøû¸ü ò òõôóùøù úþýòðþû¸ð OUT 20h, AL //þüðýôó EOI JMP $+2 //eñþûüøðÿ JMP $+2 //ðôõðöúð IN AL, 20h //ýþòð ÿðþ÷øòðõü ðõóøñòð ADD AL, "0" //ðõþñðð÷óõü ò ñøüòþûüýóþ ôþðüó MOV AH, 4Eh //òðøñóò ôûÿ ýðóûÿôýþñòø ôðóóþù MOV EAX, 1690 //ûòõôõü ýð ýúððý ò ôðóóþõ üõñòþ POP ES //þññòðýþòøòü ñþõððý¸ýýûõ POP EAX //õóøñòðû //eset_08hLen = $ - Reset_08h //ðôøúñøðþòðòü ÿþôÿðþóððüüó úþýòðþû¸ðð //ðúòþòþóþ óõýõððòþðð CMOS - ÿðüÿòø INT 08h, //õ÷øôõýòýþ ò ÿðüÿòø ôûÿ ôðûüýõùøøõ þÿõððöøù MOV EAX, 0008h //ôðõñ òõúòþðð MOV EBX, 1 //øñúðøÿòþð ÷ðýÿòþñòø MOV ECX, 0064h //þýõö òõûð ðõ÷øôõýòð MOV EDX, Reset_08h //ð÷ðûþ òõûð ðõ÷øôõýòð PUSH EAX //ðýÿòü ò úð÷õñòòõ ððñþ÷øõ, PUSH ES //òø öõ ðõóøñòðû CLD //ðÿþûýÿòü ñóôõð òÿõð¸ô REP STOSB //øúñðöøÿ ÿþôÿðþóððüüû ò ñóôõðõ //ñðþñøòü ôûðóø, ÿõðõô ýþòþù þÿõððöøõù POPF //òúðûòü ôþñòóÿ, ýõÿþñðõôñòòõýýþ ú óñòðþùñòòó //ðúòþòþóþ óõýõððòþðð CMOS - ÿðüÿòø MOV EDX, 0008h //þðò úþýòðþû¸ðð MOV AL, 11h //ÊÈ1: ñóôõò ÑÊÈ3 db 238 //UT EDX, AL //õðòûù úþýòðúò ñ //ñòðþùñòòþü. INC EAX //õóøñòðþüEAX ú ýõüó, òõÿõðü //òúðûò ÿþñòþÿýýûù ôþñòóÿ. MOV AL, 08h //õôþüûù òõúòþð òþöõ ÷ðôõùñòòþòðý. db 238 //UT EDX, AL //õÿõðü, òñ¸ óþòþòþ ôûÿ ððñþòû ñ //ñòðþùñòòþü óõýõððòþðð. //ûòþô ø÷ òðúòþòþóþ óõýõððòþðð CMOS - ÿðüÿòø //ðýýûõ þ òõúóùøõ òðõüõýø ø ôðòõ. //ýð÷ðûð þ òõúóùõü òðõüõýø. MOV EDX, 0008h //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷òõýøÿ MOV EBX, 0000h //ð÷ðòü ñ ñðùòð 0 ÿþ ASCII MOV ECX, 0003h //øñûþ ñðùòþò ôðýýûõ þ //õúóùõü òðõüõýø. MOV EDX, OFFSET Tims //ðóðó÷úð ñóôõðð ÿðüÿòø //ûÿ úþýöõýòððöøø ÿðþ÷øòðýýûõ //ðýýûõ. INC EDX //X = 0008h - Ðõóøñòð ôðýýûõ. IN AL, 08h //þñûûúð ÿðþñýþóþ ñøóýðûð IN AL, 08h // ÿþðò óñòðþùñòòð CMOS-óõýõððòþðð IN AL, 08h //÷ 3-õ ñðùòþò. CMP ECX, 03h //øúñøðþòðòü 3 ÷ðôõùñòòþòðýûõ ñðùòð OUT 08h, AL //þûó÷õýøõ þòòõòýþóþ ñøóýðûð ø÷ OUT 08h, AL //þðòð óñòðþùñòòð CMOS-óõýõððòþðð OUT 08h, AL //÷ 3-õ ñðùòþò. CMP ECX, 03h //øúñøðþòðòü 3 ÿðþ÷øòðýýûõ ñðùòð //õ÷øôõýòýðÿ ôøúñðöøÿ ò òûôõûõýþü ñóôõðõ ÿðüÿòø //ðýýûõ òðúòþòþóþ CMOS - óõýõððòþðð þ òõúóùõü //ðõüõýø, ôûÿ ôðûüýõùøõóþ øñÿþûü÷þòðýøÿ ÿðþóððüüþù //þûü÷þòðòõûÿ. XCHG AL, AH //ýð÷õýøõ ðõóøñòðð AL, ôþûöýþ //þþòòõòñòòþòðòü ðõóøñòðóEAX MOV ECX, 0003h // ÿðþ÷øòðýýûõ ñðùòð ôðýýûõ MOV EDX,EAX //ðþ÷øòðýýûõ ôðýýûõ þ òðõüõýø MOV EBX, 0000h //øúñøðþòðòü ñ ýþûõòþù ÿ÷õùúø CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //ðüð ôøúñðöøÿ ò þÿõððòøòýþù ÿðüÿòø //õÿõðü þ òõúóùõù ôðòõ. MOV EDX, 0008h //þðò òûòþôð ôðýýûõ MOV AL, 0 //õöøü ÷ðÿøñø 0 db 238 //UT EDX, AL //ñòðýþòúð ðõöøüð ÷òõýøÿ MOV EBX, 0003h //ð÷ðòü ñ ñðùòð 3 ÿþ ASCII MOV ECX, 0004h //øñûþ ñðùòþò ôðýýûõ þ //õúóùõù ôðòõ. MOV EDX, OFFSET Dats //ðóðó÷úð ñóôõðð ÿðüÿòø //ûÿ úþýöõýòððöøø ÿðþ÷øòðýýûõ //ðýýûõ. INC EDX //X = 0008h - Ðõóøñòð ôðýýûõ. IN AL, 08h //þñûûúð ÿðþñýþóþ ñøóýðûð IN AL, 08h // ÿþðò óñòðþùñòòð CMOS-óõýõððòþðð IN AL, 08h //÷ 4-õ ñðùòþò. IN AL, 08h CMP ECX, 04h //øúñøðþòðòü 4 ÷ðôõùñòòþòðýûõ ñðùòð OUT 08h, AL //þûó÷õýøõ þòòõòýþóþ ñøóýðûð ø÷ OUT 08h, AL //þðòð óñòðþùñòòð CMOS-óõýõððòþðð OUT 08h, AL //÷ 4-õ ñðùòþò. OUT 08h, AL CMP ECX, 04h //øúñøðþòðòü 4 ÿðþ÷øòðýýûõ ñðùòð //õ÷øôõýòýðÿ ôøúñðöøÿ ò òûôõûõýþü ñóôõðõ ÿðüÿòø //ðýýûõ òðúòþòþóþ CMOS - óõýõððòþðð þ òõúóùõù //õóþôýÿøýõù ôðòõ, ôûÿ ôðûüýõùøõóþ øñÿþûü÷þòðýøÿ //ðþóððüüþù ÿþûü÷þòðòõûÿ. XCHG AL, AH //ýð÷õýøõ ðõóøñòðð AL, ôþûöýþ //þþòòõòñòòþòðòü ðõóøñòðóEAX MOV ECX, 0004h // ÿðþ÷øòðýýûõ ñðùòð ôðýýûõ MOV EDX,EAX //ðþ÷øòðýýûõ ôðýýûõ þ ôðòõ MOV EBX, 0003h //øúñøðþòðòü ñ òðõòøù ÿ÷õùúø CLD //øúñøðþòðòü òÿõð¸ô REP STOSB //ðüð ôøúñðöøÿ ò þÿõððòøòýþù ÿðüÿòø PUSHF //þõððýøòü ÷ðýÿòûõ ôûðóø, ôûÿ //ððý÷øòýþóþ ÿðþöõññð. STI //ð÷ðõøøòü ÿðõðûòðýøÿ RET //þúøýóòü þñððñþò÷øú //MOS ENDP //ntr1AhLen = $ - Intr1Ah //þýõö ÿþôÿðþóððüüû þñððñþò÷øúð INT 1Ah //øñòõüýðÿ ÿðþóððüüð INT 1Bh BREAK_: CLI //ðÿðõòøòü ÿðõðûòðýøÿ // ýð÷ðûð øýøöøøðþòðòü ÿþôÿðþóððüüó ððñþòû //ðñþòû ñþÿððòøòûõýøÿ ñþÿðþöõññþðð INT 09h. //ýð ýóöýð, ñóôõò ôûÿ ÿõðõñûûúø òõûð //ñÿþûýÿõüþù ÿðþóððüüû ø÷ ñóôõðð ÿðüÿòø, //ð ÿðþöõññþð ôûÿ òûÿþûýõýøÿ. PUSHF //oxpaýøòü ôûaóø ôûÿ úþüðýôû IRET MOV AH, 09h //ýð÷ðûð ÿõðõùô¸ü ò ôððùòõð 09h MOV EBX, 00h //õúòþð 09h õù¸ ýõ þÿðõôõû¸ý MOV ECX, 2 //ôðõñ òõúòþðð, ôþûöõý ñþôõðöðòü 2 ñðùòð MOV EDX, OFFSET atd12 //ðóðó÷øòü ñûþú ôûÿ òõúòþðð MOV EDX, 0009h //ðÿþûýøòü ñûþú õóþ óúð÷ðýøõü CLD //ñþ÷ýð÷øòü òõúòþð REP STOSB //ðòõðñþòðòü òõúòþð 09h ò ÿðüÿòø //ñððñþò÷øú ÿðõðûòðýøù úþýòðþû¸ðð úûðòøðòóðû ÿþ INT 09h //þñððñþòúð ðÿÿðððòýþóþ ÿðõðûòðýøÿ). //õðõõþô ýð ñõúöøþ øýøöøðûø÷ðöøø Reset2_09h: PUSHF //oxpaýøòü ôûaóø ôûÿ úþüðýôû IRET CALL Vect_09h //ýð÷ðûð ÿõðõùòø ò ôððùòõð 09h PUSH EAX //õðýóûøñü ø÷ ýõóþ. Ñþõððýøü òñõ PUSH EBX //ðõñóõüûõ ðõóøñòðû PUSH ECX PUSH EDX PUSH EBP PUSH DS PUSH ES MOV EAX,CS //acòþðõü ñõóüõýòýûù ðõóøñòð DS MOV DS,EAX //ð ýòþò ñõóüõýò MOV EAX,40h //acòðþõü ðõóøñòð ES MOV ES,EAX //ð þñûðñòü ôðýýûõ BIOS //a÷ðòü þñððñþòúó ñøüòþûð, ñúþÿøðþòðò õóþ //÷ úþûüöõòþóþ ñóôõðð òòþôð òEAX, ýþ ýõ ø÷ûüðÿ //óþ ÿðø ýòþü ø÷ ñóôõðð. MOV EBX,1Ah //ôðõñ þ÷õðõôýþóþ ñøüòþûð MOV EAX,EBX //òõô¸ýýûù ñøüòþû -> òEAX CMP EAX,0000h //ðöðòð úûðòøøð ÷ðòõðøõýøÿ ? JE InitBreak //ð, ýð òþññòðýþòûõýøõ òõúòþðð CMP AH,2 //úõý-úþô üõýüøõ 2-õ ? JB FreReg //ð, ýð òûõþô ø÷ ÿðõðûòðýøÿ CMP AH,12 //úõý-úþô ñþûüøõ 12-òø ? JA FreReg //ð, ýð òûõþô ø÷ ÿðõðûòðýøÿ //úõý-úþô ò ÷ðôðýýûõ ÿðõôõûðõ. Ho ýðöðòð-ûø úûðòøøð //ðõñóõüðÿ úþüñøýðöøÿ úûðòøø. TEST BYTE PTR ES:17h,40h //ûðó /Bs - ñøò 6 JZ FreReg //õò, ýð òûõþô ø÷ ÿðõðûòðýøÿ //óöýðÿ úþüñøýðöøÿ úûðòøø ýðöðòð PUSH EBX //X ýðü ÿþýðôðñøòñÿ MOV EBX, OFFSET KeyBreak //ôðõñ òðñûøöû òððñûÿöøø XCHG AH,AL //úõý-úþô ò AL ôûÿ XLAT db 215 //LAT //ððýñûÿöøÿ POP EBX //occòðýþòøüEBX //ðüõýøòü úþô ASCII ò úþûüöõòþü ñóôõðõ //OV BYTE PTR ES:[BX],AL //ñòþñþôøòü coxpaý¸ýýûõ ððýõõ ðõóøñòðû FreReg: POP ES POP DS POP EBP POP EDX POP ECX POP EBX POP EAX InitBreak: //ýøöøðûø÷ðöøø ôþñòóÿð ðÿÿðððòýþóþ ôþñòóÿð // úûðòøðòóðõ. PUSH EAX IN AL,09h //øóýðû ò ÿþðò 09h POP EAX PUSH EBX PUSH ES PUSH ES PUSH EAX PUSH EBX XOR EAX,EAX MOV ES,EAX IN AL,09h //øóýðû ò ÿþðò 09h //OV EBX, WORD PTR ES: [0009h] //OV EAX, WORD PTR ES: [000Bh] MOV EBX,CS CMP EAX,EBX POP EBX POP EAX POP ES PUSH EAX PUSH EDX IN AL,09h //øóýðû ò ÿþðò 09h MOV EDX,0062 CMP ECX,0001h JNZ BrNxt MOV EDX,0061 db 236 //N AL,EDX AND AL,09h OR AL,09h OUT 61,AL BrNxt: PUSH ECX MOV ECX,0001 PUSH EDX POP ECX IN AL,09h MOV AL,20 OUT 20,AL POP EDX POP EAX MOV EAX,0000h MOV EBX,0001h MOV ECX,0101h MOV EDX,1111h IN AL,09h //øóýðû ò ÿþðò 09h PUSH DS MOV EAX,4333 MOV DS,EAX MOV EBX,08 PUSH DS MOV EAX,4333 MOV DS,EAX MOV EBX, 01h POP DS POP EAX PUSH DS MOV EAX,4333 MOV DS,EAX XOR EBX,08 MOV EDX,1111h MOV ECX,0101h MOV EBX,0001h MOV EAX,0000h IN AL,09h //øóýðû ò ÿþðò 09h POP ES POP EBX //eset2_09hLen = $ - Reset2_09h //ðôøúñøðþòðòü ÿþôÿðþóððüüó ôþñòóÿð ú //þýòðþû¸ðó úûðòøðòóðû INT 09h, ðõ÷øôõýòýþ // ÿðüÿòø ôûÿ ôðûüýõùøøõ þÿõððöøù MOV EAX, 0009h //ôðõñ òõúòþðð MOV EBX, 1 //øñúðøÿòþð ÷ðýÿòþñòø MOV ECX, 0128h //þýõö òõûð ðõ÷øôõýòð MOV EDX, Reset_09h //ð÷ðûþ òõûð ðõ÷øôõýòð PUSH EAX //ðýÿòü ò úð÷õñòòõ ððñþ÷øõ, PUSH ES //òø öõ ðõóøñòðû CLD //ðÿþûýÿòü ñóôõð òÿõð¸ô REP STOSB //øúñðöøÿ ÿþôÿðþóððüüû ò ñóôõðõ //ñðþñøòü ôûðóø, ÿõðõô ýþòþù þÿõððöøõù POPF //òúðûòü ôþñòóÿ, ýõÿþñðõôñòòõýýþ ú óñòðþùñòòó //ûðòøðòóðû, ôûÿ ððñþòû ñ ýõù. MOV EDX, 0009h //þðò úþýòðþû¸ðð MOV AL, 11h //ÊÈ1: ñóôõò ÑÊÈ3 db 238 //UT EDX, AL //õðòûù úþýòðúò ñ //ñòðþùñòòþü. INC EAX //õóøñòðþüEAX ú ýõüó, òõÿõðü //òúðûò ÿþñòþÿýýûù ôþñòóÿ. MOV AL, 09h //õôþüûù òõúòþð òþöõ ÷ðôõùñòòþòðý. db 238 //UT EDX, AL //õÿõðü, òñ¸ óþòþòþ ôûÿ ððñþòû ñ //ñòðþùñòòþü óõýõððòþðð. //ðþòõðøòü, òõ-ûø úûðòøøø ýðöðòû CMP EDX, OFFSET KeyBreak JE ExtBreak //ð JMP NoPress //õò ExtBreak: //ûòõñòø ñþþñùõýøõ þñ ðòððøùýþù òûóðó÷úõ. MOV EAX, 9700H //FFSET symb MOV DS, EAX PUSH 0 PUSH 97 //FFSET symb PUSH OFFSET BreakMes PUSH 0 // MOV EAX, 0B800h //ôðõñ òøôõþñóôõðð // MOV ES,EAX // MOV EDI, Offs2 //üõùõýøõ ÿþ ýúððýó // MOV ESI, BreakMes //ôðõñ ñþþñùõýøÿ // MOV ECX, 18 //øñûþ òûòþôøüûõ ñðùòþò //EP MOVSB //øúñðöøÿ þòþñððöõýøÿ ýð ôøñÿûõõ // MOV EDX, Offs2 //ôòøó ÿþ ýúððýó // MOV EAX, symb //þôøôøúðöøÿ úþýñòðýòû //ðòõðøøòü ÿðþóððüüó ñõ÷ ÷ðÿðþñð ÿðõðûòðýøù //þ ÿðþöõôóðõ IOS. MOV EAX, 0000h PUSH EAX POP DS MOV ECX,ESI //R0 MOV EDX,7964h //R1 INC EDX PUSH EAX MOV EAX,0000h PUSH EAX POP ESI //ñòþñþôøòü ðõóøñòðû POP EDI STI //ð÷ðõøøòü ÿðõðûòðýøÿ RET //ûùòø ø÷ ÿðþóððüüû, ÷õðõ÷ IOS //õ÷ ÿðõðûòðýøù //òúð÷ ò þñððñþòúø ÿðþóððüüýþóþ ÿðõðûòðýøÿ INT 1Bh // òþü ñûó÷ðõ, õñûø ýðöðòû ýõ òõ úûðòøøø NoPress: POPF //ÿÿòü, ññðþñøòü ôûðóø, ÿõðõô ýþòþù þÿõððöøõù STI //ð÷ðõøøòü ÿðõðûòðýøÿ RET //ðòõðøøòü öøúû ðõ÷øôõýòýþóþ þñððñþò÷øúð //REAK ENDP //ntr1BhLen = $ - Intr1Bh //þýõö ÿþôÿðþóððüüû þñððñþò÷øúð INT 1Bh //øñòõüýðÿ ÿðþóððüüð INT 1Ch MELODY: CLI //ðÿðõòøòü ÿðõðûòðýøÿ //ð÷ðòü ÿðþöõôóðó ððñÿþ÷ýðòðýøÿ ôóýúöøø ððñþòû //þ ÷òóúþ÷ðÿøñüþ ÿþ ÷ðÿðþñó ÿþûü÷þòðòõûÿ (òû÷þò //òþù ñøñòõüýþù ÿðþóððüüû ø÷ ñóôõðð òðñûøöû ðõ÷øôõýòð //IOS, ýðõþôÿùõóþñÿ ò ñð÷þòþù ÷ðñòø þÿõððòøòýþù ÿðüÿòø, //õðõ÷ ÿðõðûòðýøõ INT 1Ch) PUSH EAX //ðôõùñòòþòðòü ðõóøñòðEAX //ûÿ ôðûüýõùøøõ ôõùñòòøù POP EBX //õóøñòðEBX þñòðòøòü //òþñþôýûü ôûÿ ôøúñðöøø //úð÷ðýøõ ýð üýøüûù ôûðó AH øûøEAX, //ðø þòñóòñòòøø ÿñýþù ôøúñðöøø óÿððòûÿùõù //ðþóððüüû ÿðþöõññþðð AAS //þôñ÷øòðõü, ÷òþ ÷ðýÿòûù ôûðó AH øûøEAX //óùõñòòóõò ò ûþñþü ñûó÷ðõ, úðú-ñû òþ //øñûûþ. AAA STOSB //ðøñòþøòü ÷ýð÷õýøõ ôûðóó //òððøõóþ ðõóøñòðð //ðøôðòü ýòþüó ôûðóó ñòðòóñ üýþöõñòòõýýþóþ //øñûð c þÿðõôõûÿõüþù ÿðþø÷òþûüýþù ÿõðõüõýýþù. CMP AH, AL CMPSB SCASB PUSH EAX //þððõúöøÿ óÿððòûÿþùõóþ ðõóøñòðð //õýõððöøÿ ñòððøøõ ðõóøñòðþò AH øEAX ôûÿ //þñûõôóþùõóþ ððñÿþ÷ýðòðýøÿ, øõ ÿðþø÷òþûüýþù //õðõüõýýþù ñ ÿþûó÷õýøõü þñúõúòøòýþóþ ðõ÷óûüòðòð. TEST AH, AL CMC //þôóþòþòøòü ñóôõð ú ýþòþüó ÷ðÿþûýõýøþ //ÿðõôõûøòü úðúðÿ ôóýúöøÿ ñøñòõüýþù ÿðþóððüüû //ûûð ÷ðòðõñþòðýð ÿþûü÷þòðòõûõü, òüõñòø ñ òû÷þòþü //ðõðûòðýøÿ INT 1Ch //õùñòòøÿ ò ÷ðòøñøüþñòø þò ÷ðýÿòþóþ ôûðóð CMP AH, 00h JE Melody1 //þñÿðþø÷òõôõýøõ ÷òóúð CMP AH, 01h JE Melody2 //ñøûõýøõ ÷òóúð //ðôõùñòòþòðòü ðõóøñòðû ôûÿ //þñÿðþø÷òþôñòòð ÷òóúð Melody1: MOV EAX, 00DCh PUSH EAX //þññòòõýýþ òþñÿðþø÷òþôñòòþ ÷òóúð MOV EBX,ESP //OV EBX, Word Ptr SS:[BX+04] MOV EAX, 34DDh MOV EDX, 0012h CMP EDX,EBX MUL EBX MOV EBX,EAX IN AL, 61 TEST AL, 03 JNZ Mel OR AL, 03 OUT 61, AL MOV AL, 00B6h OUT 43, AL Mel: MOV AL, BL OUT 42, AL MOV AL, BH OUT 42, AL STI //ð÷ðõøøòü ÿðõðûòðýøÿ RET //þúøýóòü þñððñþò÷øú Melody2: //ðñòðþøòü ðõóøñòðû ôûÿ óñøûõýøÿ //òó÷ðýøÿ MOV EAX, 00C8h PUSH EAX //þññòòõýýþ óñøûõýøõ ÷òóúð MOV EBX,ESP //OV EBX ,Word Ptr SS:[BX+04] MOV EAX, 34DDh MOV EDX, 0012h CMP EDX,EBX MUL EBX MOV EBX,EAX OUT 42h, AL MOV EDX,ECX OUT 43h, AL TEST AL, 03 JNZ Mel2 OR AL, 03 IN AL, 61h MOV AL, 00B6h IN AL, 61h Mel2: MOV AL, BL IN AL, 61h MOV AL, BH IN AL, 61h STI //ð÷ðõøøòü ÿðõðûòðýøÿ RET //þúøýóòü þñððñþò÷øú //ELODY ENDP //ntr1ChLen = $ - Intr1Ch //þýõö ÿþôÿðþóððüüû þñððñþò÷øúð INT 1Ch //øñòõüýðÿ ÿðþóððüüð INT 1Dh Intr1Dh: GRFPARM: CLI //ðÿðõòøòü ÿðõðûòðýøÿ //ðóðó÷øòü ôóýúöøþ, ðýðûþóø÷ýóþ øñÿþûü÷óõüþù //ðõðûòðýøõü INT 10h - Video Screen ROM BIOS //ðú-öõ, úðú ÿðø ýð÷ðûüýþù ÷ðóðó÷úõ úþüÿüþòõðð. MOV EAX, OFFSET Fnct1D //a÷ýa÷øòü ýþüõð ôóýúöøø AND BYTE PTR Vect_1D, AH //ð÷ýð÷øòü ýþüõð ÿðõðûòðýøÿ CLD //òøóðõüñÿ ÿþ òðñûøöõ òððýñûÿöøø MOV ESI, 04 //ðòõðñóõü úþüðýôû, 4-óþ ñðùòð ADD ESI,EBX //õûð ÿðþóððüüû ø ôðûüøõ LODSB //ðóðó÷úð ÷ðòõðñþòðýûõ úþüðýô, ò ÿðüÿòü //ýøöøðûø÷ðöøÿ óñòðýþòúø, ôõùñòòøù ÿþ þñððñþòúõ úþôþòûõ //øóýðûþò MOV EDI, 1 MOV EDI, 2 MOV EDI, 3 MOV EDI, 4 MOV EAX,EBP MOV EDI, 1 MOV EDI, 1 MOV EDI, 1 MOV EDI, 1 //ýøöøðûø÷ðöøÿ òõðñþòúø ÷ðýÿòþóþ ðõóøñòðð MOV EAX, OFFSET Ony MOV EBX, OFFSET Ony MOV ECX, OFFSET Ony MOV EDX, OFFSET Ony //ýøöøðûø÷ðöøÿ òõðñþòúø ñòþñþôýþóþ ðõóøñòðð MOV EAX, OFFSET Offy MOV EBX, OFFSET Offy MOV ECX, OFFSET Offy MOV EDX, OFFSET Offy //ýøöøðûø÷ðöøÿ þñùõóþ ôþñòóÿð ú ÿðþöõññþðó ø //÷ðøüþôõùñòòøÿ ñ ýøü MOV AH, 4Bh MOV AL, 00 MOV AH, 3Dh MOV AL, 0 MOV AH, 4Fh MOV EAX, 02 MOV AH, 45 MOV EBX, 1 MOV EAX, 0 MOV ECX, 0Fh MOV EAX, 02 MOV AH, 34 MOV EBX, 1 MOV AH, 4Bh MOV AL, 00 MOV AH, 3D MOV AL, 0 MOV AH, 4Fh MOV EAX, 02 MOV AH, 45 MOV CL, 1 MOV DH, 0 MOV DL, 02 MOV EDX, 34 MOV ECX, 0Fh MOV EBX, 1 CLD REP STOSB //ðòõðøõýøõ ñøñòõüýþù ôóýúöøø ÿðþóððüüû ( IOS Ñóÿõðòø÷þðð) DB 78 //EC ESI DB 66 //NC EDX DB 48, 56 //yte Ptr [BX+SI], BH DB 216, 02 //add DWord Ptr [BP+SI] CLD //òøóðõüñÿ ÿþ òðñûøöõ òððýñûÿöøø MOV ESI, 12 //ðòõðñóõü úþüðýôû, 12-óþ ñðùòð ADD ESI,EBX //õûð ÿðþóððüüû ø ôðûüøõ REP STOSB //ðóðó÷úð ÷ðòõðñþòðýûõ úþüðýô, ò ÿðüÿòü //ðõþñðð÷þòðýøõ úþôþòûõ ñøóýðûþò, ò þòþñððöõýøõ ñøüòþûþò MOV EBX,EAX //ðóðóöðõü CMP EBX,256 //ñõóþ 256 üðòðøö SUB EBX,0808 //ðòðøöð 8 x 8 MOV EAX, 0 MOV EBX, 1 //ðóðó÷øü ôðýýûõ ø÷ þÿõððòøòýþù ÿðüÿòø, // ÷ýðúþóõýõððòþð MOV EDX, 01 CMP EDX, 0808 //cûø ýõ òþò ñøüòþû //cûø, ýòþ òþò, ñðüûù ñøüòþû SUB EBX,0808 //ðòðøöð 8 x 8 //ðóðó÷úð üðòðøö, ÿðõôóñüþòðõýûõ //ûÿ úðöôþóþ ñøüòþûð MOV EAX, 0001h MOV ECX, 00FFh //56 ñøüòþûþò MOV EBX, 8 //þ 8 ñðùò REP STOSB //òþñððöõýøõ ñøüòþûð ÿþ ò÷ÿòþù üðòðøöõ, ýð ýúððýõ MOV EDX,EBX CMP EDX,17A0h MOV EBX,EBX MOV EAX,EBX AAM MOV EDX,EAX XCHG DH,DL ADD DL,30 MOV AH,02 XCHG DH,DL ADD DL,30 MOV AH,02 MOV EDX,1766 MOV AH,09 MOV EDX,EBX MOV AH,09 MOV EDX,1750 MOV AH,09 POP DS POP EDX POP EBX PUSH EAX PUSH ESI REP STOSB ADC EBX, 6606h PUSHF XCHG EAX,EBX XOR BH, BH SHL EBX, 1 CMP EBX, 0040h JNB LdPrm1 CLD ADC EDI,EBP POP EDX ADC ESP,EBP JBE LdPrm1 MOV EDX, 9015h ADC ESI,EDI ADC ECX,EBX ADC AL, 21 ADC AL, 46 ADC AL, 38 ADC AL, 2Ch ADC EAX, 154Eh LdPrm1: POP EBP ADC EAX, 15BAh MOV EDX, 15BAh ADC EAX, 15BAh MOV EDX, 15BAh ADC EAX, 1569h JNB LdPrm2 CBW ADC EAX, 15BAh MOV EDX, 15BAh ADC EAX, 15BAh MOV EDX, 15BAh ADC EAX, 15BAh MOV EDX, 15BAh LdPrm2: ADC EAX, 61E8h OR AH, AH JE LdPrm3 JMP LdPrm4 LdPrm3: MOV CL, 01 TEST AL, 88 JE LdPrm4 LdPrm4: PUSH ECX MOV EBX,ECX AND BL, 03 MOV EAX, 138Ch POP ECX OR EBX,EAX //R CL,EDI MOV EBP,ESP MOV EAX, 7000 MOV EBP, 19 MOV EAX, 01FFh MOV EBP, 14 MOV AL, 20 //OV WORD PTR [BP+10],EAX //OV WORD PTR [BP+04],EAX //OV WORD PTR [BP],EAX MOV EBP,ESP //OV WORD PTR [BP+25],EBX AND AL,0Fh MOV EAX,EAX MOV AL,30 db 238 //UT EDX,AL INC EDX db 236 //N AL,EDX AND AL,08 OUT 02h,EAX OR AL,AH OR AL,01 //OV BYTE PTR ES:[DI+2D],AL MOV AL,03 //OV BYTE PTR ES:[DI+31],AL PUSH DS PUSH ES XOR DL,DL MOV EBX, 0008h MOV ECX, ES MOV ESI, CS CMP ECX,ESI JE LdPrm7 MOV ESI, 04 MOV ECX, DS OR ESI,ECX JE LdPrm5 OR DL, 10 LdPrm5: MOV ESI, 0Ch MOV ECX, DS OR ESI,ECX JE LdPrm6 OR DL, 08 LdPrm6: MOV ESI, 08 MOV ECX, DS OR ESI,ECX JE LdPrm8 OR DL, 04 LdPrm8: MOV ESI, 10 MOV ECX, DS OR ESI,ECX JE LdPrm7 OR DL, 01 LdPrm7: POP ES POP DS MOV EDI, 32 MOV AL, 03 MOV EDX, 03C4h MOV AH, AL MOV AH, 02 MOV DL, AH MOV DH, DL SHR DH, 1 AND EDX, 0404h AND EAX, 0303h OR EAX,EDX MOV EDI,2Bh MOV EBP,ESP MOV EBP,1Ch OR AL,AL JE LdPrm11 DEC AL JE LdPrm15 DEC AL JE LdPrm16 MOV EBP,ESP MOV EBP,1Ch LdPrm11: MOV EAX, 0020h TEST CL, 01 JE LdPrm12 ADD EAX, 60 LdPrm12: TEST CL, 02 JE LdPrm13 ADD EAX,3Ah LdPrm13: TEST CL,04 JE LdPrm14 ADD EAX,0303 LdPrm14: SUB ESI,7404 MOV BH,03 MOV BH,00 MOV AL,0Bh POP EBX POP ECX LdPrm15: POP EDX MOV EAX,004Fh CMP EDI,00 JZ LdPrm17 NOP //CHG EBP,52 DEC EDI LdPrm17: POP DS PUSH ECX OUT 10h,EAX PUSH EDX CLD PUSH EBX MOV AL,52 LAHF PUSH ESP MOV EDX, 00FFh PUSH EBP POP DS PUSH ESI PUSH EDI POP ES LdPrm16: DB 155, 220, 86, 228 //COM QWORD PTR [BP-1Ch] POP ECX IN AL, 59h IN AL, 59h IN AL, 59h IN AL, 59h TEST EAX, 58 POP ECX IN AL, 59h IN AL, 59h IN AL, 59h CLD REP MOVSB OR EBX,75 DB 155, 221, 194 //ADD DWORD PTR [BP+SI] NOP PUSH EAX DEC EBP DEC ECX INC ESP STOSW PUSH DS ADD EBX,ESI MOV AL, 000Bh //DD BYTE PTR [BX+SI-4000],BH //DD BYTE PTR [BX+SI],AL MOV ECX, 000Fh MOV EDX, 9999h IN AL, 59h IN AL, 59h IN AL, 59h IN AL, 59h REP MOVSB PUSH EAX PUSH EDX //OV DS, CS: [59F8h] MOV EAX, DS //OV WORD PTR [BP+36],EAX //OV WORD PTR [BP+46],EAX //OV WORD PTR [BP+58],EAX //OV DS, CS: [59F0h] //OV WORD PTR [BP+04],EAX POP DS POP EAX PUSH EDX db 238 //UT EDX,AL POP ES POP EDX db 238 //UT EDX,EAX POP EDX PUSH EDX db 236 //N AL,EDX POP EDX PUSH EDX db 236 //N EAX,EDX POP EDX PUSHF PUSH EDI XOR DH,DH MOV EDI,EDX ADD EDX,EDI POP EDI POPF MOV EDX, 013Eh OR EDX,EDX POPF PUSH EAX PUSH EBX MOV EBX, 013Ah LdPrm20: XOR EDX,EBX CMP EAX, 0188 JNZ LdPrm21 MOV DL,14 MOV DH,AH LdPrm21: ADD EBX,08 CMP BH,09 JB LdPrm20 MOV EDX, 013Eh XOR DL, AL POP EBX POP EAX PUSH EDX PUSH EBX MOV EBX, 013Ah XOR EDX,EBX CMP EAX, 0188 JNZ LdPrm23 MOV DL,04 AND AL,03 XOR AL,03 MOV DL,AL OR DL,DL JNZ LdPrm23 MOV DL,14 MOV DH,AH LdPrm23: ADD EBX,08 CMP BH,09 JB LdPrm20 MOV EDX, 013Eh XOR DL,AL POP EBX POP EAX MOV AL, BH MOV EAX, 10 MOV AH, BL MOV AL, DL PUSHF CLI MOV EDX, 0CF8h db 238 //UT EDX,EAX MOV EDX, 0CFCh db 236 //N EAX,EDX POPF PUSH ECX POP EDX XOR CL, DL PUSH EDX LdPrm10: MOV CL, 01 PUSH ECX MOV CL, 02 POP ECX MOV CL, 03 PUSH EDX PUSH EAX PUSH EDI MOV DL, 00 db 236 //N EAX,EDX MOV EDI,EAX XOR EAX,EDX MOV EBX,EDI MOV ECX,EDX CLD REP CMPSB POP EDX POP EAX POP EDI STI //a÷peøøòü ÿpepòaýøÿ RET //þúøýóòü þñððñþò÷øú //RFPARM ENDP //ntr1DhLen = $ - Intr1Dh //þýõö ÿþôÿðþóððüüû þñððñþò÷øúð INT 1Dh //øñòõüýðÿ ÿðþóððüüð INT 1Eh FLOPPY2: CLI //ðÿðþñû ÿðþöõññþðð ýð IF = 0 MOV EBP,EAX MOV EAX, ES //ÿðõôõûõýøõ ÿðððüõòðþò óøñúþóþ ôøñúð //ð 160 Êñ. Flpp0: MOV AL, 00h //óýúöøÿ ÷ðÿðþñð - 00h MOV ECX, 6 //úð÷ðòõûü ÿðððüõòðð. MOV EBX, Fat0 //ðóðó÷úð þñþ÷ýð÷õýøÿ. MOV DH, 01h //ðüûù ÿõðòûù ñõúòþð ýþñøòõûÿ. MOV CH, 38 //þûø÷õñòòþ ôþðþöõú - 38 MOV ECX, 1280 //þûø÷õñòòþ ñõúòþðþò - 1280 MOV CL, 128 //þûø÷õñòòþ ñðùò ò þôýþü ñõúòþðõ MOV EDX, Sect //ðóðó÷øòü ñõúòþð ôûÿ ø÷üõðõýøÿ //þùòø ò ñõúòþð, úðú ò òõûþ øñÿþûýÿõüþù ÿðþóððüüû // ôðòü ÿðþöõññþðó øñÿþûüýøòü úðöôûù ñðùò ÷øòðõüþóþ //õúòþðð, úðú õþûþñòóþ (ñõ÷ôõùñòòõýýóþ) úþüðýôó. Sect db 128 Dup (?) //ectLen = $ - Sect REP CMPSB //ððòýøòðýøõ ÷ðóðóöõýýûõ ñòõôõýøù JMP Flpp1 Fat0 db "FAT 10" //ÿðõôõûõýøõ ÿðððüõòðþò óøñúþóþ ôøñúð //ð 360 Êñ, ýð ôøñúþòþôõ ñõ÷ ôþüðòøðþòðýøÿ //ð 1,2 Ìñ. Flpp1: MOV AL, 01h //óýúöøÿ ÷ðÿðþñð - 01h MOV ECX, 6 //úð÷ðòõûü ÿðððüõòðð. MOV EBX, OFFSET Fat0 //ðóðó÷úð þñþ÷ýð÷õýøÿ. MOV DH, 01h //ðüûù ÿõðòûù ñõúòþð ýþñøòõûÿ. MOV CH, 76 //þûø÷õñòòþ ôþðþöõú - 76 MOV ECX, 2560 //þûø÷õñòòþ ñõúòþðþò - 2560 MOV CL, 128 //þûø÷õñòòþ ñðùò ò þôýþü ñõúòþðõ MOV EDX, OFFSET Sect1 //ðóðó÷øòü ñõúòþð ôûÿ ø÷üõðõýøÿ //þùòø ò ñõúòþð, úðú ò òõûþ øñÿþûýÿõüþù ÿðþóððüüû // ôðòü ÿðþöõññþðó øñÿþûüýøòü úðöôûù ñðùò ÷øòðõüþóþ //õúòþðð, úðú õþûþñòóþ (ñõ÷ôõùñòòõýýóþ) úþüðýôó. Sect1 db 128 Dup (?) REP CMPSB //ððòýøòðýøõ ÷ðóðóöõýýûõ ñòõôõýøù //ÿðõôõûõýøõ ÿðððüõòðþò óøñúþóþ ôøñúð //ð 360 Êñ, ýð ôøñúþòþôõ ñ ôþüðòøðþòðýøõü //ð 1,2 Ìñ. Flpp2: MOV AL, 02h //óýúöøÿ ÷ðÿðþñð - 02h MOV ECX, 6 //úð÷ðòõûü ÿðððüõòðð. MOV EBX, OFFSET Fat1 //ðóðó÷úð þñþ÷ýð÷õýøÿ. MOV DH, 01h //ðüûù ÿõðòûù ñõúòþð ýþñøòõûÿ. MOV CH, 38 //þûø÷õñòòþ ôþðþöõú - 38 MOV ECX, 1280 //þûø÷õñòòþ ñõúòþðþò - 1280 MOV CL, 00FFh //þûø÷õñòòþ ñðùò ò þôýþü ñõúòþðõ - 256 MOV EDX, Sect2 //ðóðó÷øòü ñõúòþð ôûÿ ø÷üõðõýøÿ //þùòø ò ñõúòþð, úðú ò òõûþ øñÿþûýÿõüþù ÿðþóððüüû // ôðòü ÿðþöõññþðó øñÿþûüýøòü úðöôûù ñðùò ÷øòðõüþóþ //õúòþðð, úðú õþûþñòóþ (ñõ÷ôõùñòòõýýóþ) úþüðýôó. Sect2 db 256 Dup (?) REP CMPSB //ððòýøòðýøõ ÷ðóðóöõýýûõ ñòõôõýøù JMP Flpp3 Fat1 db "FAT 12" //ÿðõôõûõýøõ ÿðððüõòðþò óøñúþóþ ôøñúð //ð 1,2 Ìñ, ýð ôøñúþòþôõ ñ ôþüðòøðþòðýøõü //ð 1,2 Ìñ. Flpp3: MOV AL, 03h //óýúöøÿ ÷ðÿðþñð - 03h MOV ECX, 6 //úð÷ðòõûü ÿðððüõòðð. MOV EBX, OFFSET Fat1 //ðóðó÷úð þñþ÷ýð÷õýøÿ. MOV DH, 01h //ðüûù ÿõðòûù ñõúòþð ýþñøòõûÿ. MOV CH, 76 //þûø÷õñòòþ ôþðþöõú - 76 MOV ECX, 2560 //þûø÷õñòòþ ñõúòþðþò - 2560 MOV CL, 1 // - ÷ýð÷õýøõ ó ýðñ óöõ ÷ðòøúñøðþòðýþ. MOV ECX, 01FFh //þûø÷õñòòþ ñðùò ò þôýþü ñõúòþðõ - 512 MOV EDX, OFFSET Sect3 //ðóðó÷øòü ñõúòþð ôûÿ ø÷üõðõýøÿ //þùòø ò ñõúòþð, úðú ò òõûþ øñÿþûýÿõüþù ÿðþóððüüû // ôðòü ÿðþöõññþðó øñÿþûüýøòü úðöôûù ñðùò ÷øòðõüþóþ //õúòþðð, úðú õþûþñòóþ (ñõ÷ôõùñòòõýýóþ) úþüðýôó. Sect3 db 512 Dup (?) REP CMPSB //ððòýøòðýøõ ÷ðóðóöõýýûõ ñòõôõýøù JMP Flpp4 Fat2 db "FAT 12" //ÿðõôõûõýøõ ÿðððüõòðþò óøñúþóþ ôøñúð //ð 720 Êñ. ýð ôøñúþòþôõ ñõ÷ ôþðüðòøðþòðýøÿ //ð 1,44 Ìñ. Flpp4: MOV AL, 04h //óýúöøÿ ÷ðÿðþñð - 04h MOV ECX, 6 //úð÷ðòõûü ÿðððüõòðð. MOV EBX, OFFSET Fat1 //ðóðó÷úð þñþ÷ýð÷õýøÿ. MOV DH, 01h //ðüûù ÿõðòûù ñõúòþð ýþñøòõûÿ. MOV CH, 40 //þûø÷õñòòþ ôþðþöõú - 40 MOV ECX, 1423 //þûø÷õñòòþ ñõúòþðþò - 1423 MOV CL, 1 // - ÷ýð÷õýøõ ó ýðñ óöõ ÷ðòøúñøðþòðýþ. MOV ECX, 01FFh //þûø÷õñòòþ ñðùò ò þôýþü ñõúòþðõ - 512 MOV EDX, Sect4 //ðóðó÷øòü ñõúòþð ôûÿ ø÷üõðõýøÿ //þùòø ò ñõúòþð, úðú ò òõûþ øñÿþûýÿõüþù ÿðþóððüüû // ôðòü ÿðþöõññþðó øñÿþûüýøòü úðöôûù ñðùò ÷øòðõüþóþ //õúòþðð, úðú õþûþñòóþ (ñõ÷ôõùñòòõýýóþ) úþüðýôó. Sect4 db 512 Dup (?) REP CMPSB //ððòýøòðýøõ ÷ðóðóöõýýûõ ñòõôõýøù //ÿðõôõûõýøõ ÿðððüõòðþò óøñúþóþ ôøñúð //ð 720 Êñ. ýð ôøñúþòþôõ c ôþðüðòøðþòðýøõü //ð 1,44 Ìñ. Flpp5: MOV AL, 05h //óýúöøÿ ÷ðÿðþñð - 05h MOV ECX, 6 //úð÷ðòõûü ÿðððüõòðð. MOV EBX, OFFSET Fat1 //ðóðó÷úð þñþ÷ýð÷õýøÿ. MOV DH, 01h //ðüûù ÿõðòûù ñõúòþð ýþñøòõûÿ. MOV CH, 40 //þûø÷õñòòþ ôþðþöõú - 40 MOV ECX, 1423 //þûø÷õñòòþ ñõúòþðþò - 1423 MOV CL, 1 // - ÷ýð÷õýøõ ó ýðñ óöõ ÷ðòøúñøðþòðýþ. MOV ECX, 01FFh //þûø÷õñòòþ ñðùò ò þôýþü ñõúòþðõ - 512 MOV EDX, OFFSET Sect5 //ðóðó÷øòü ñõúòþð ôûÿ ø÷üõðõýøÿ //þùòø ò ñõúòþð, úðú ò òõûþ øñÿþûýÿõüþù ÿðþóððüüû // ôðòü ÿðþöõññþðó øñÿþûüýøòü úðöôûù ñðùò ÷øòðõüþóþ //õúòþðð, úðú õþûþñòóþ (ñõ÷ôõùñòòõýýóþ) úþüðýôó. Sect5 db 512 Dup (?) REP CMPSB //ððòýøòðýøõ ÷ðóðóöõýýûõ ñòõôõýøù JMP Flpp6 Fat3 db "FAT 12" //ÿðõôõûõýøõ ÿðððüõòðþò óøñúþóþ ôøñúð //ð ñòðýôððòýûù ðð÷üõð 1,44 Mñ. Flpp6: MOV AL, 06h //óýúöøÿ ÷ðÿðþñð - 06h MOV ECX, 6 //úð÷ðòõûü ÿðððüõòðð. MOV EBX, OFFSET Fat3 //ðóðó÷úð þñþ÷ýð÷õýøÿ. MOV DH, 01h //ðüûù ÿõðòûù ñõúòþð ýþñøòõûÿ. MOV CH, 80 //þûø÷õñòòþ ôþðþöõú - 80 MOV ECX, 2847 //þûø÷õñòòþ ñõúòþðþò - 2847 MOV CL, 1 // - ÷ýð÷õýøõ ó ýðñ óöõ ÷ðòøúñøðþòðýþ. MOV ECX, 01FFh //þûø÷õñòòþ ñðùò ò þôýþü ñõúòþðõ - 512 MOV EDX, OFFSET Sect6 //ðóðó÷øòü ñõúòþð ôûÿ ø÷üõðõýøÿ //þùòø ò ñõúòþð, úðú ò òõûþ øñÿþûýÿõüþù ÿðþóððüüû // ôðòü ÿðþöõññþðó øñÿþûüýøòü úðöôûù ñðùò ÷øòðõüþóþ //õúòþðð, úðú õþûþñòóþ (ñõ÷ôõùñòòõýýóþ) úþüðýôó. Sect6 db 512 Dup (?) REP CMPSB //ððòýøòðýøõ ÷ðóðóöõýýûõ ñòõôõýøù //ÿðõôõûõýøõ ÿðððüõòðþò óøñúþóþ ôøñúð //ð üðúñøüðûüýûù ðð÷üõð 2,88 Mñ. Flpp7: MOV AL, 07h //óýúöøÿ ÷ðÿðþñð - 07h MOV ECX, 6 //úð÷ðòõûü ÿðððüõòðð. MOV EBX, OFFSET Fat3 //ðóðó÷úð þñþ÷ýð÷õýøÿ. MOV DH, 01h //ðüûù ÿõðòûù ñõúòþð ýþñøòõûÿ. MOV CH, 00A0h //þûø÷õñòòþ ôþðþöõú - 160 MOV ECX, 5694 //þûø÷õñòòþ ñõúòþðþò - 5694 MOV CL, 1 // - ÷ýð÷õýøõ ó ýðñ óöõ ÷ðòøúñøðþòðýþ. MOV ECX, 01FFh //þûø÷õñòòþ ñðùò ò þôýþü ñõúòþðõ - 512 MOV EDX, OFFSET Sect7 //ðóðó÷øòü ñõúòþð ôûÿ ø÷üõðõýøÿ //þùòø ò ñõúòþð, úðú ò òõûþ øñÿþûýÿõüþù ÿðþóððüüû // ôðòü ÿðþöõññþðó øñÿþûüýøòü úðöôûù ñðùò ÷øòðõüþóþ //õúòþðð, úðú õþûþñòóþ (ñõ÷ôõùñòòõýýóþ) úþüðýôó. Sect7 db 512 Dup (?) REP CMPSB //ððòýøòðýøõ ÷ðóðóöõýýûõ ñòõôõýøù JMP Flpp8 Fat4 db "FAT 12" //ÿðõôõûõýøõ ÿðððüõòðþò ûõýòþ÷ýþóþ ýðúþÿøòõûÿ, //ûÿ ôøñúþòþôþò ûõýòþ÷ýûõ ôøñúõò, ñ ôþðüðòøðþòðýøõü //ð 126 Êñ. Flpp8: MOV AL, 08h //óýúöøÿ ÷ðÿðþñð - 08h MOV ECX, 6 //úð÷ðòõûü ÿðððüõòðð. MOV EBX, Fat5 //ðóðó÷úð þñþ÷ýð÷õýøÿ. MOV DH, 01h //ðüûù ÿõðòûù ñõúòþð ýþñøòõûÿ. MOV CH, 10 //þûø÷õñòòþ ôþðþöõú - 10 MOV ECX, 0999 //þûø÷õñòòþ ñõúòþðþò - 0999 MOV CL, 128 //þûø÷õñòòþ ñðùò ò þôýþü ñõúòþðõ - 128 MOV EDX, Sect8 //ðóðó÷øòü ñõúòþð ôûÿ ø÷üõðõýøÿ //þùòø ò ñõúòþð, úðú ò òõûþ øñÿþûýÿõüþù ÿðþóððüüû // ôðòü ÿðþöõññþðó øñÿþûüýøòü úðöôûù ñðùò ÷øòðõüþóþ //õúòþðð, úðú õþûþñòóþ (ñõ÷ôõùñòòõýýóþ) úþüðýôó. Sect8 db 128 Dup (?) //ect8Len = $ - Sect8 REP CMPSB //ððòýøòðýøõ ÷ðóðóöõýýûõ ñòõôõýøù JMP Flpp9 Fat5 db "FAT 10" //ÿðõôõûõýøõ ÿðððüõòðþò ñòðýôððòýþóþ //ÿòø÷õñúþóþ CD-ôøñúð, ýð ¸üúþñòü ò 650 Ìñ. Flpp9: MOV AL, 09h //óýúöøÿ ÷ðÿðþñð - 09h MOV ECX, 6 //úð÷ðòõûü ÿðððüõòðð. MOV EBX, Fat6 //ðóðó÷úð þñþ÷ýð÷õýøÿ. MOV DH, 01h //ðüûù ÿõðòûù ñõúòþð ýþñøòõûÿ. MOV ECX, 90FFh //þûø÷õñòòþ ôþðþöõú - 400 MOV CL, 3 // úþôõ ÷øñûð ôþûöýþ ñûòü 3 ñðùòð. MOV CH, 1 // - ÷ýð÷õýøõ ó ýðñ óöõ ÷ðòøúñøðþòðýþ. MOV ECX, SectCD //þûø÷õñòòþ ñõúòþðþò - 142350 MOV CH, 2 // - ÷ýð÷õýøÿ ó ýðñ óöõ ÷ðòøúñøðþòðýû. MOV ECX, 00FFh //þûø÷õñòòþ ñðùò ò þôýþü ñõúòþðõ - 512 MOV EDX, Sect9 //ðóðó÷øòü ñõúòþð ôûÿ ø÷üõðõýøÿ //þùòø ò ñõúòþð, úðú ò òõûþ øñÿþûýÿõüþù ÿðþóððüüû // ôðòü ÿðþöõññþðó øñÿþûüýøòü úðöôûù ñðùò ÷øòðõüþóþ //õúòþðð, úðú õþûþñòóþ (ñõ÷ôõùñòòõýýóþ) úþüðýôó. Sect9 db 512 Dup (?) //ect9Len = $ - Sect9 REP CMPSB //ððòýõýøõ ÷ðóðóöõýýûõ ñòõôõýøù //ðþòõðøòü ôûðó, ÷ðýÿòþóþ ÷ðóûðòýþóþ //õóøñòðð AL CMP AL, 0Ah JE FlppExt //ñûø, ÷ðýÿò òõúòþð //óýúöøø 0Ah, òþ òûõþôøü //÷ þñððñþò÷øúð... //.. ð õñûø 09h, òþ ÿðþôþûöøü ððñþòó ñ //ðþóððüüþù JMP Flpp10 //þûÿ ôðýýûõ øûø ñûþöýûõ ÿðððüõòðþò Fat6 db "FAT 15" SectCD db 02, 44, 14 //þô úþûø÷õñòòð ñõúòþðþò // ÿõðõòþôõ ýð ñøñòõüó ASCII: 02, 2C, 0E //ÿðõôõûõýøõ ÿðððüõòðþò Flash - üøúðþñõõüû //ûñþúþù ÿûþòýþñòø, ¸üúþñòüþ ýõ üõýõõ 10 Ìñ. //ûÿ ÿðþóððüðòþðþò òøÿð Cart Riader. Flpp10: MOV AL, 0Ah //óýúöøÿ ÷ðÿðþñð - 0Ah MOV ECX, 6 //úð÷ðòõûü ÿðððüõòðð. MOV EBX, OFFSET Fat6 //ðóðó÷úð þñþ÷ýð÷õýøÿ. MOV DH, 01h //ðüûù ÿõðòûù ñõúòþð ýþñøòõûÿ. MOV ECX, 90FFh //þûø÷õñòòþ ôþðþöõú - 400 MOV CL, 3 // úþôõ ÷øñûð ôþûöýþ ñûòü 3 ñðùòð. MOV CH, 1 // - ÷ýð÷õýøõ ó ýðñ óöõ ÷ðòøúñøðþòðýþ. MOV ECX, OFFSET SectCD //þûø÷õñòòþ ñõúòþðþò - 142350 MOV CH, 2 // - ÷ýð÷õýøÿ ó ýðñ óöõ ÷ðòøúñøðþòðýû. MOV ECX, 00FFh //þûø÷õñòòþ ñðùò ò þôýþü ñõúòþðõ - 512 MOV EDX, OFFSET Sect9 //ðóðó÷øòü ñõúòþð ôûÿ ø÷üõðõýøÿ //þùòø ò ñõúòþð, úðú ò òõûþ øñÿþûýÿõüþù ÿðþóððüüû // ôðòü ÿðþöõññþðó øñÿþûüýøòü úðöôûù ñðùò ÷øòðõüþóþ //õúòþðð, úðú õþûþñòóþ (ñõ÷ôõùñòòõýýóþ) úþüðýôó. REP CMPSB //ððòýõýøõ ÷ðóðóöõýýûõ ñòõôõýøù //ñòþñþôøòü ðõóøñòðû ÿõðõô òûõþôþü FlppExt: POP EAX POP EBX POP ECX POP EDX STI //ðÿðþñû ÿðþöõññþðð ýð IF = 1 RET //þúøýóòü þñððñþò÷øú //LOPPY2 ENDP //ntr1EhLen = $ - Intr1Eh //þýõö ÿþôÿðþóððüüû þñððñþò÷øúð INT 1Eh //øñòõüýðÿ ÿðþóððüüð INT 1Fh SCREEN2: //ðñòðþøòü ñõóüõýòýûù ðõóøñòð ýð þñûðñòü //ôðõñðöøø òðñûø÷ýûõ ôðýýûõ. MOV EBP,EAX MOV EAX, ES CLI //ðÿðõòøòü ÿðõðûòðýøÿ //ûþñ úþ òñõüó, òðúöõ ýðñòðþøü ñõóüõýòýûù //õóøñòð ES ýð òøôõþñóôõð MOV EAX, 0B800h MOV DS,EAX //óýúöøÿ 00h - Òõúñòþòþù ðõöøü 40 x 25 ñøüòþûþò, 2 öòõòð MOV AL, 00h //ðôõùñòòþòðòü ðõóøñòðû PUSH EAX PUSH EBX PUSH ECX PUSH EDX MOV EBX, 02 //þûø÷õñòòþ öòõòþò ò ÿðûøòðõ. //ðõôòððøòõûüýþ, ÷ðôõùñòòþòðòü ôûøýó ððñþ÷õóþ //õûð ÿþôÿðþóððüüû ÷øòðõüûõ ÿðððüõòðþò. MOV ECX, 0040h //ðóðó÷øòü ò ñóôõð ÿðüÿòø ððñþ÷øù úþô //øúñøðóõüûõ ôðýýûõ. MOV EDX, Scrn0 Scrn0: //õÿõðü øñÿþûýøòü õóþ, úðú þñû÷ýûõ üðøøýýûõ //þüðýôû. MOV DH, 1 //ð÷ðûüýûù ýþüõð òõúñòþòþù ñòðþúø. ADD DH, 25 //þñðòøòü úþýõ÷ýþõ ÷ýð÷õýøõ ÿþ÷øöøø ñòðþúø. INC DH //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT DH //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. MOV DL, 1 //ð÷ðûüýûù ýþüõð òõúñòþòþóþ ñòþûñöð. ADD DL, 40 //þñðòøòü ÷ýð÷õýøõ úþýõ÷ýþù ÿþ÷øöøø ñòþûñöð. INC DL //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT DL //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. //õñÿòø÷ýðÿ úþððõúöøÿ ÿðþø÷òþûüýþóþ ÷ýð÷õýøÿ ÷øñûð ñðùòþò, //ðø øõ þñúõôøýõýøø. AAA //õÿõðü òðúöõ, óñòðýþòøòü ÿðððüõòðû øðøôòð ñøòþòþù //ðòðøöû, þòþñððöõýøÿ ñøüòþûð ýð ôøñÿûõõ. MOV BH, 0 //þûõòþõ ÷ýð÷õýøõ øñõþôýþóþ ÿðððüõòðð. ADD BH, 16 //þñðòøòü úþýõ÷ýþõ ÷ýð÷õýøõ ÿþ÷øöøø ñøòð. INC BH //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT BH //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. MOV BL, 0 //þûõòþõ ÷ýð÷õýøõ øñõþôýþóþ ÿðððüõòðð. ADD BL, 16 //þñðòøòü ÷ýð÷õýøõ úþýõ÷ýþù ÿþ÷øöøø ñøòð. INC BL //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT BL //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. //õñÿòø÷ýðÿ úþððõúöøÿ ÿðþø÷òþûüýþóþ ÷ýð÷õýøÿ ÷øñûð ñðùòþò, //ðø øõ þñúõôøýõýøø. DAA //crn0Len = $ - Scrn0 CLD //øúñøðþòðòü òÿõð¸ô. REP STOSB //ðôøúñøðþòðòü ýóöýûõ ÿðððüõòðû // ñóôõðõ þÿõððòøòýþù ÿðüÿòø. //ðõôòððøòõûüýþ, þñòþñþôøòü ðõóøñòðû, //õðõô ýð÷ðûþü ýþòþù þÿõððöøø. POP EAX POP EBX POP ECX POP EDX //óýúöøÿ 01h - Òõúñòþòþù ðõöøü 80 x 50 ñøüòþûþò, 16 öòõòþò MOV AL, 01h //ðôõùñòòþòðòü ðõóøñòðû PUSH EAX PUSH EBX PUSH ECX PUSH EDX MOV EBX, 0Fh //þûø÷õñòòþ öòõòþò ò ÿðûøòðõ - 16. //ðõôòððøòõûüýþ, ÷ðôõùñòòþòðòü ôûøýó ððñþ÷õóþ //õûð ÿþôÿðþóððüüû ÷øòðõüûõ ÿðððüõòðþò. MOV ECX, 0040h //ðóðó÷øòü ò ñóôõð ÿðüÿòø ððñþ÷øù úþô //øúñøðóõüûõ ôðýýûõ. MOV EDX, Scrn1 Scrn1: //õÿõðü øñÿþûýøòü õóþ, úðú þñû÷ýûõ üðøøýýûõ //þüðýôû. MOV DH, 1 //ð÷ðûüýûù ýþüõð òõúñòþòþù ñòðþúø. ADD DH, 50 //þñðòøòü úþýõ÷ýþõ ÷ýð÷õýøõ ÿþ÷øöøø ñòðþúø. INC DH //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT DH //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. MOV DL, 1 //ð÷ðûüýûù ýþüõð òõúñòþòþóþ ñòþûñöð. ADD DL, 80 //þñðòøòü ÷ýð÷õýøõ úþýõ÷ýþù ÿþ÷øöøø ñòþûñöð. INC DL //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT DL //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. //õñÿòø÷ýðÿ úþððõúöøÿ ÿðþø÷òþûüýþóþ ÷ýð÷õýøÿ ÷øñûð ñðùòþò, //ðø øõ þñúõôøýõýøø. AAA //õÿõðü òðúöõ, óñòðýþòøòü ÿðððüõòðû øðøôòð ñøòþòþù //ðòðøöû, þòþñððöõýøÿ ñøüòþûð ýð ôøñÿûõõ. MOV BH, 0 //þûõòþõ ÷ýð÷õýøõ øñõþôýþóþ ÿðððüõòðð. ADD BH, 8 //þñðòøòü úþýõ÷ýþõ ÷ýð÷õýøõ ÿþ÷øöøø ñøòð. INC BH //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT BH //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. MOV BL, 0 //þûõòþõ ÷ýð÷õýøõ øñõþôýþóþ ÿðððüõòðð. ADD BL, 8 //þñðòøòü ÷ýð÷õýøõ úþýõ÷ýþù ÿþ÷øöøø ñøòð. INC BL //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT BL //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. //õñÿòø÷ýðÿ úþððõúöøÿ ÿðþø÷òþûüýþóþ ÷ýð÷õýøÿ ÷øñûð ñðùòþò, //ðø øõ þñúõôøýõýøø. DAA //crn1Len = $ - Scrn1 CLD //øúñøðþòðòü òÿõð¸ô. REP STOSB //ðôøúñøðþòðòü ýóöýûõ ÿðððüõòðû // ñóôõðõ þÿõððòøòýþù ÿðüÿòø. //ðõôòððøòõûüýþ, þñòþñþôøòü ðõóøñòðû, //õðõô ýð÷ðûþü ýþòþù þÿõððöøø. POP EAX POP EBX POP ECX POP EDX //óýúöøÿ 02h - Òõúñòþòþù ðõöøü 80 x 25 ñøüòþûþò, 2 öòõòa MOV AL, 02h //ðôõùñòòþòðòü ðõóøñòðû PUSH EAX PUSH EBX PUSH ECX PUSH EDX MOV EBX, 02 //þûø÷õñòòþ öòõòþò ò ÿðûøòðõ. //ðõôòððøòõûüýþ, ÷ðôõùñòòþòðòü ôûøýó ððñþ÷õóþ //õûð ÿþôÿðþóððüüû ÷øòðõüûõ ÿðððüõòðþò. MOV ECX, 0040h //ðóðó÷øòü ò ñóôõð ÿðüÿòø ððñþ÷øù úþô //øúñøðóõüûõ ôðýýûõ. MOV EDX, Scrn2 Scrn2: //õÿõðü øñÿþûýøòü õóþ, úðú þñû÷ýûõ üðøøýýûõ //þüðýôû. MOV DH, 1 //ð÷ðûüýûù ýþüõð òõúñòþòþù ñòðþúø. ADD DH, 25 //þñðòøòü úþýõ÷ýþõ ÷ýð÷õýøõ ÿþ÷øöøø ñòðþúø. INC DH //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT DH //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. MOV DL, 1 //ð÷ðûüýûù ýþüõð òõúñòþòþóþ ñòþûñöð. ADD DL, 80 //þñðòøòü ÷ýð÷õýøõ úþýõ÷ýþù ÿþ÷øöøø ñòþûñöð. INC DL //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT DL //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. //õñÿòø÷ýðÿ úþððõúöøÿ ÿðþø÷òþûüýþóþ ÷ýð÷õýøÿ ÷øñûð ñðùòþò, //ðø øõ þñúõôøýõýøø. AAA //õÿõðü òðúöõ, óñòðýþòøòü ÿðððüõòðû øðøôòð ñøòþòþù //ðòðøöû, þòþñððöõýøÿ ñøüòþûð ýð ôøñÿûõõ. MOV BH, 0 //þûõòþõ ÷ýð÷õýøõ øñõþôýþóþ ÿðððüõòðð. ADD BH, 8 //þñðòøòü úþýõ÷ýþõ ÷ýð÷õýøõ ÿþ÷øöøø ñøòð. INC BH //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT BH //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. MOV BL, 0 //þûõòþõ ÷ýð÷õýøõ øñõþôýþóþ ÿðððüõòðð. ADD BL, 16 //þñðòøòü ÷ýð÷õýøõ úþýõ÷ýþù ÿþ÷øöøø ñøòð INC BL //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT BL //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. //õñÿòø÷ýðÿ úþððõúöøÿ ÿðþø÷òþûüýþóþ ÷ýð÷õýøÿ ÷øñûð ñðùòþò, //ðø øõ þñúõôøýõýøø. DAA //crn2Len = $ - Scrn2 CLD //øúñøðþòðòü òÿõð¸ô. REP STOSB //ðôøúñøðþòðòü ýóöýûõ ÿðððüõòðû // ñóôõðõ þÿõððòøòýþù ÿðüÿòø. //ðõôòððøòõûüýþ, þñòþñþôøòü ðõóøñòðû, //õðõô ýð÷ðûþü ýþòþù þÿõððöøø. POP EAX POP EBX POP ECX POP EDX //óýúöøÿ 03h - Òõúñòþòþù ðõöøü 80 x 25 ñøüòþûþò, 16 öòõòþò MOV AL, 03h //ðôõùñòòþòðòü ðõóøñòðû PUSH EAX PUSH EBX PUSH ECX PUSH EDX MOV EBX, 0Fh //þûø÷õñòòþ öòõòþò ò ÿðûøòðõ - 16 //ðõôòððøòõûüýþ, ÷ðôõùñòòþòðòü ôûøýó ððñþ÷õóþ //õûð ÿþôÿðþóððüüû ÷øòðõüûõ ÿðððüõòðþò. MOV ECX, 0040h //ðóðó÷øòü ò ñóôõð ÿðüÿòø ððñþ÷øù úþô //øúñøðóõüûõ ôðýýûõ. MOV EDX, Scrn3 Scrn3: //õÿõðü øñÿþûýøòü õóþ, úðú þñû÷ýûõ üðøøýýûõ //þüðýôû. MOV DH, 1 //ð÷ðûüýûù ýþüõð òõúñòþòþù ñòðþúø. ADD DH, 25 //þñðòøòü úþýõ÷ýþõ ÷ýð÷õýøõ ÿþ÷øöøø ñòðþúø. INC DH //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT DH //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. MOV DL, 1 //ð÷ðûüýûù ýþüõð òõúñòþòþóþ ñòþûñöð. ADD DL, 80 //þñðòøòü ÷ýð÷õýøõ úþýõ÷ýþù ÿþ÷øöøø ñòþûñöð. INC DL //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT DL //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. //õñÿòø÷ýðÿ úþððõúöøÿ ÿðþø÷òþûüýþóþ ÷ýð÷õýøÿ ÷øñûð ñðùòþò, //ðø øõ þñúõôøýõýøø. AAA //õÿõðü òðúöõ, óñòðýþòøòü ÿðððüõòðû øðøôòð ñøòþòþù //ðòðøöû, þòþñððöõýøÿ ñøüòþûð ýð ôøñÿûõõ. MOV BH, 0 //þûõòþõ ÷ýð÷õýøõ øñõþôýþóþ ÿðððüõòðð. ADD BH, 8 //þñðòøòü úþýõ÷ýþõ ÷ýð÷õýøõ ÿþ÷øöøø ñøòð. INC BH //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT BH //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. MOV BL, 0 //þûõòþõ ÷ýð÷õýøõ øñõþôýþóþ ÿðððüõòðð. ADD BL, 16 //þñðòøòü ÷ýð÷õýøõ úþýõ÷ýþù ÿþ÷øöøø ñøòð INC BL //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT BL //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. //õñÿòø÷ýðÿ úþððõúöøÿ ÿðþø÷òþûüýþóþ ÷ýð÷õýøÿ ÷øñûð ñðùòþò, //ðø øõ þñúõôøýõýøø. DAA //crn3Len = $ - Scrn3 CLD //øúñøðþòðòü òÿõð¸ô. REP STOSB //ðôøúñøðþòðòü ýóöýûõ ÿðððüõòðû // ñóôõðõ þÿõððòøòýþù ÿðüÿòø. //ðõôòððøòõûüýþ, þñòþñþôøòü ðõóøñòðû, //õðõô ýð÷ðûþü ýþòþù þÿõððöøø. POP EAX POP EBX POP ECX POP EDX //óýúöøÿ 04h - Ãððôø÷õñúøù ðõöøü 320 x 200 òþ÷õú, 4 öòõòð MOV AL, 04h //ðôõùñòòþòðòü ðõóøñòðû PUSH EAX PUSH EBX PUSH ECX PUSH EDX MOV EBX, 04 //þûø÷õñòòþ öòõòþò ò ÿðûøòðõ - 04 //ðõôòððøòõûüýþ, ÷ðôõùñòòþòðòü ôûøýó ððñþ÷õóþ //õûð ÿþôÿðþóððüüû ÷øòðõüûõ ÿðððüõòðþò. MOV ECX, 0040h //ðóðó÷øòü ò ñóôõð ÿðüÿòø ððñþ÷øù úþô //øúñøðóõüûõ ôðýýûõ. MOV EDX, Scrn4 Scrn4: //õÿõðü øñÿþûýøòü õóþ, úðú þñû÷ýûõ üðøøýýûõ //þüðýôû. MOV DH, 1 //ð÷ðûüýûù ýþüõð òõúñòþòþù ñòðþúø. ADD EDX, 200 //þñðòøòü úþýõ÷ýþõ ÷ýð÷õýøõ ÿþ÷øöøø ñòðþúø. INC EDX //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT DH //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. MOV DL, 1 //ð÷ðûüýûù ýþüõð òõúñòþòþóþ ñòþûñöð. ADD EDX, 320 //þñðòøòü ÷ýð÷õýøõ úþýõ÷ýþù ÿþ÷øöøø ñòþûñöð. INC EDX //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT DL //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. //õñÿòø÷ýðÿ úþððõúöøÿ ÿðþø÷òþûüýþóþ ÷ýð÷õýøÿ ÷øñûð ñðùòþò, //ðø øõ þñúõôøýõýøø. AAA //õÿõðü òðúöõ, óñòðýþòøòü ÿðððüõòðû øðøôòð ñøòþòþù //ðòðøöû, þòþñððöõýøÿ ýûõüõýòð ø÷þñððöõýøÿ - ÿøúñõûð // óððôø÷õñúþü ðõöøüõ. MOV BH, 0 //þûõòþõ ÷ýð÷õýøõ øñõþôýþóþ ÿðððüõòðð. ADD BH, 2 //þñðòøòü úþýõ÷ýþõ ÷ýð÷õýøõ ÿþ÷øöøø ñøòð. INC BH //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT BH //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. MOV BL, 0 //þûõòþõ ÷ýð÷õýøõ øñõþôýþóþ ÿðððüõòðð. ADD BL, 2 //þñðòøòü ÷ýð÷õýøõ úþýõ÷ýþù ÿþ÷øöøø ñøòð INC BL //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT BL //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. //õñÿòø÷ýðÿ úþððõúöøÿ ÿðþø÷òþûüýþóþ ÷ýð÷õýøÿ ÷øñûð ñðùòþò, //ðø øõ þñúõôøýõýøø. DAA //crn4Len = $ - Scrn4 CLD //øúñøðþòðòü òÿõð¸ô. REP STOSB //ðôøúñøðþòðòü ýóöýûõ ÿðððüõòðû // ñóôõðõ þÿõððòøòýþù ÿðüÿòø. //ðõôòððøòõûüýþ, þñòþñþôøòü ðõóøñòðû, //õðõô ýð÷ðûþü ýþòþù þÿõððöøø. POP EAX POP EBX POP ECX POP EDX //óýúöøÿ 05h - Ãððôø÷õñúøù ðõöøü 320 x 200 òþ÷õú, 2 öòõòð MOV AL, 05h //ðôõùñòòþòðòü ðõóøñòðû PUSH EAX PUSH EBX PUSH ECX PUSH EDX MOV EBX, 02 //þûø÷õñòòþ öòõòþò ò ÿðûøòðõ - 02 //ðõôòððøòõûüýþ, ÷ðôõùñòòþòðòü ôûøýó ððñþ÷õóþ //õûð ÿþôÿðþóððüüû ÷øòðõüûõ ÿðððüõòðþò. MOV ECX, 0040h //ðóðó÷øòü ò ñóôõð ÿðüÿòø ððñþ÷øù úþô //øúñøðóõüûõ ôðýýûõ. MOV EDX, Scrn5 Scrn5: //õÿõðü øñÿþûýøòü õóþ, úðú þñû÷ýûõ üðøøýýûõ //þüðýôû. MOV DH, 1 //ð÷ðûüýûù ýþüõð òõúñòþòþù ñòðþúø. ADD EDX, 200 //þñðòøòü úþýõ÷ýþõ ÷ýð÷õýøõ ÿþ÷øöøø ñòðþúø. INC EDX //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT DH //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. MOV DL, 1 //ð÷ðûüýûù ýþüõð òõúñòþòþóþ ñòþûñöð. ADD EDX, 320 //þñðòøòü ÷ýð÷õýøõ úþýõ÷ýþù ÿþ÷øöøø ñòþûñöð. INC EDX //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT DL //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. //õñÿòø÷ýðÿ úþððõúöøÿ ÿðþø÷òþûüýþóþ ÷ýð÷õýøÿ ÷øñûð ñðùòþò, //ðø øõ þñúõôøýõýøø. AAA //õÿõðü òðúöõ, óñòðýþòøòü ÿðððüõòðû øðøôòð ñøòþòþù //ðòðøöû, þòþñððöõýøÿ ýûõüõýòð ø÷þñððöõýøÿ - ÿøúñõûð // óððôø÷õñúþü ðõöøüõ. MOV BH, 0 //þûõòþõ ÷ýð÷õýøõ øñõþôýþóþ ÿðððüõòðð. ADD BH, 2 //þñðòøòü úþýõ÷ýþõ ÷ýð÷õýøõ ÿþ÷øöøø ñøòð. INC BH //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT BH //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. MOV BL, 0 //þûõòþõ ÷ýð÷õýøõ øñõþôýþóþ ÿðððüõòðð. ADD BL, 2 //þñðòøòü ÷ýð÷õýøõ úþýõ÷ýþù ÿþ÷øöøø ñøòð INC BL //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT BL //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. //õñÿòø÷ýðÿ úþððõúöøÿ ÿðþø÷òþûüýþóþ ÷ýð÷õýøÿ ÷øñûð ñðùòþò, //ðø øõ þñúõôøýõýøø. DAA //crn5Len = $ - Scrn5 CLD //øúñøðþòðòü òÿõð¸ô. REP STOSB //ðôøúñøðþòðòü ýóöýûõ ÿðððüõòðû // ñóôõðõ þÿõððòøòýþù ÿðüÿòø. //ðõôòððøòõûüýþ, þñòþñþôøòü ðõóøñòðû, //õðõô ýð÷ðûþü ýþòþù þÿõððöøø. POP EAX POP EBX POP ECX POP EDX //óýúöøÿ 06h - Ãððôø÷õñúøù ðõöøü 640 x 200 òþ÷õú, 2 öòõòð MOV AL, 06h //ðôõùñòòþòðòü ðõóøñòðû PUSH EAX PUSH EBX PUSH ECX PUSH EDX MOV EBX, 02 //þûø÷õñòòþ öòõòþò ò ÿðûøòðõ - 02 //ðõôòððøòõûüýþ, ÷ðôõùñòòþòðòü ôûøýó ððñþ÷õóþ //õûð ÿþôÿðþóððüüû ÷øòðõüûõ ÿðððüõòðþò. MOV ECX, 0040h //ðóðó÷øòü ò ñóôõð ÿðüÿòø ððñþ÷øù úþô //øúñøðóõüûõ ôðýýûõ. MOV EDX, Scrn6 Scrn6: //õÿõðü øñÿþûýøòü õóþ, úðú þñû÷ýûõ üðøøýýûõ //þüðýôû. MOV DH, 1 //ð÷ðûüýûù ýþüõð òõúñòþòþù ñòðþúø. ADD EDX, 200 //þñðòøòü úþýõ÷ýþõ ÷ýð÷õýøõ ÿþ÷øöøø ñòðþúø. INC EDX //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT DH //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. MOV DL, 1 //ð÷ðûüýûù ýþüõð òõúñòþòþóþ ñòþûñöð. ADD EDX, 640 //þñðòøòü ÷ýð÷õýøõ úþýõ÷ýþù ÿþ÷øöøø ñòþûñöð. INC EDX //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT DL //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. //õñÿòø÷ýðÿ úþððõúöøÿ ÿðþø÷òþûüýþóþ ÷ýð÷õýøÿ ÷øñûð ñðùòþò, //ðø øõ þñúõôøýõýøø. AAA //õÿõðü òðúöõ, óñòðýþòøòü ÿðððüõòðû øðøôòð ñøòþòþù //ðòðøöû, þòþñððöõýøÿ ýûõüõýòð ø÷þñððöõýøÿ - ÿøúñõûð // óððôø÷õñúþü ðõöøüõ. MOV BH, 0 //þûõòþõ ÷ýð÷õýøõ øñõþôýþóþ ÿðððüõòðð. ADD BH, 1 //þñðòøòü úþýõ÷ýþõ ÷ýð÷õýøõ ÿþ÷øöøø ñøòð. INC BH //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT BH //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. MOV BL, 0 //þûõòþõ ÷ýð÷õýøõ øñõþôýþóþ ÿðððüõòðð. ADD BL, 2 //þñðòøòü ÷ýð÷õýøõ úþýõ÷ýþù ÿþ÷øöøø ñøòð INC BL //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT BL //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. //õñÿòø÷ýðÿ úþððõúöøÿ ÿðþø÷òþûüýþóþ ÷ýð÷õýøÿ ÷øñûð ñðùòþò, //ðø øõ þñúõôøýõýøø. DAA //crn6Len = $ - Scrn6 CLD //øúñøðþòðòü òÿõð¸ô. REP STOSB //ðôøúñøðþòðòü ýóöýûõ ÿðððüõòðû // ñóôõðõ þÿõððòøòýþù ÿðüÿòø. //ðõôòððøòõûüýþ, þñòþñþôøòü ðõóøñòðû, //õðõô ýð÷ðûþü ýþòþù þÿõððöøø. POP EAX POP EBX POP ECX POP EDX //óýúöøÿ 07h - Òõúñòþòþù ðõöøü 80 x 25 ñøüòþûþò, 2 öòõòa MOV AL, 07h //ðôõùñòòþòðòü ðõóøñòðû PUSH EAX PUSH EBX PUSH ECX PUSH EDX MOV EBX, 02h //þûø÷õñòòþ öòõòþò ò ÿðûøòðõ - 2. //ðõôòððøòõûüýþ, ÷ðôõùñòòþòðòü ôûøýó ððñþ÷õóþ //õûð ÿþôÿðþóððüüû ÷øòðõüûõ ÿðððüõòðþò. MOV ECX, 0040h //ðóðó÷øòü ò ñóôõð ÿðüÿòø ððñþ÷øù úþô //øúñøðóõüûõ ôðýýûõ. MOV EDX, Scrn7 Scrn7: //õÿõðü øñÿþûýøòü õóþ, úðú þñû÷ýûõ üðøøýýûõ //þüðýôû. MOV DH, 1 //ð÷ðûüýûù ýþüõð òõúñòþòþù ñòðþúø. ADD DH, 25 //þñðòøòü úþýõ÷ýþõ ÷ýð÷õýøõ ÿþ÷øöøø ñòðþúø. INC DH //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT DH //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. MOV DL, 1 //ð÷ðûüýûù ýþüõð òõúñòþòþóþ ñòþûñöð. ADD DL, 80 //þñðòøòü ÷ýð÷õýøõ úþýõ÷ýþù ÿþ÷øöøø ñòþûñöð. INC DL //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT DL //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. //õñÿòø÷ýðÿ úþððõúöøÿ ÿðþø÷òþûüýþóþ ÷ýð÷õýøÿ ÷øñûð ñðùòþò, //ðø øõ þñúõôøýõýøø. AAA //õÿõðü òðúöõ, óñòðýþòøòü ÿðððüõòðû øðøôòð ñøòþòþù //ðòðøöû, þòþñððöõýøÿ ñøüòþûð ýð ôøñÿûõõ. MOV BH, 0 //þûõòþõ ÷ýð÷õýøõ øñõþôýþóþ ÿðððüõòðð. ADD BH, 8 //þñðòøòü úþýõ÷ýþõ ÷ýð÷õýøõ ÿþ÷øöøø ñøòð. INC BH //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT BH //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. MOV BL, 0 //þûõòþõ ÷ýð÷õýøõ øñõþôýþóþ ÿðððüõòðð. ADD BL, 16 //þñðòøòü ÷ýð÷õýøõ úþýõ÷ýþù ÿþ÷øöøø ñøòð INC BL //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT BL //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. //õñÿòø÷ýðÿ úþððõúöøÿ ÿðþø÷òþûüýþóþ ÷ýð÷õýøÿ ÷øñûð ñðùòþò, //ðø øõ þñúõôøýõýøø. DAA //crn7Len = $ - Scrn7 CLD //øúñøðþòðòü òÿõð¸ô. REP STOSB //ðôøúñøðþòðòü ýóöýûõ ÿðððüõòðû // ñóôõðõ þÿõððòøòýþù ÿðüÿòø. //ðõôòððøòõûüýþ, þñòþñþôøòü ðõóøñòðû, //õðõô ýð÷ðûþü ýþòþù þÿõððöøø. POP EAX POP EBX POP ECX POP EDX //óýúöøÿ 09h - Ãððôø÷õñúøù ðõöøü 320 x 200 òþ÷õú, 16 öòõòþò. MOV AL, 09h //ðôõùñòòþòðòü ðõóøñòðû PUSH EAX PUSH EBX PUSH ECX PUSH EDX MOV EBX, 0Fh //þûø÷õñòòþ öòõòþò ò ÿðûøòðõ - 16. //ðõôòððøòõûüýþ, ÷ðôõùñòòþòðòü ôûøýó ððñþ÷õóþ //õûð ÿþôÿðþóððüüû ÷øòðõüûõ ÿðððüõòðþò. MOV ECX, 0040h //ðóðó÷øòü ò ñóôõð ÿðüÿòø ððñþ÷øù úþô //øúñøðóõüûõ ôðýýûõ. MOV EDX, Scrn9 Scrn9: //õÿõðü øñÿþûýøòü õóþ, úðú þñû÷ýûõ üðøøýýûõ //þüðýôû. MOV DH, 1 //ð÷ðûüýûù ýþüõð òõúñòþòþù ñòðþúø. ADD EDX, 200 //þñðòøòü úþýõ÷ýþõ ÷ýð÷õýøõ ÿþ÷øöøø ñòðþúø. INC EDX //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT DH //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. MOV DL, 1 //ð÷ðûüýûù ýþüõð òõúñòþòþóþ ñòþûñöð. ADD EDX, 320 //þñðòøòü ÷ýð÷õýøõ úþýõ÷ýþù ÿþ÷øöøø ñòþûñöð. INC EDX //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT DL //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. //õñÿòø÷ýðÿ úþððõúöøÿ ÿðþø÷òþûüýþóþ ÷ýð÷õýøÿ ÷øñûð ñðùòþò, //ðø øõ þñúõôøýõýøø. AAA //õÿõðü òðúöõ, óñòðýþòøòü ÿðððüõòðû øðøôòð ñøòþòþù //ðòðøöû, þòþñððöõýøÿ ýûõüõýòð ø÷þñððöõýøÿ - ÿøúñõûð // óððôø÷õñúþü ðõöøüõ. MOV BH, 0 //þûõòþõ ÷ýð÷õýøõ øñõþôýþóþ ÿðððüõòðð. ADD BH, 2 //þñðòøòü úþýõ÷ýþõ ÷ýð÷õýøõ ÿþ÷øöøø ñøòð. INC BH //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT BH //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. MOV BL, 0 //þûõòþõ ÷ýð÷õýøõ øñõþôýþóþ ÿðððüõòðð. ADD BL, 2 //þñðòøòü ÷ýð÷õýøõ úþýõ÷ýþù ÿþ÷øöøø ñøòð INC BL //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT BL //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. //õñÿòø÷ýðÿ úþððõúöøÿ ÿðþø÷òþûüýþóþ ÷ýð÷õýøÿ ÷øñûð ñðùòþò, //ðø øõ þñúõôøýõýøø. DAA //crn9Len = $ - Scrn9 CLD //øúñøðþòðòü òÿõð¸ô. REP STOSB //ðôøúñøðþòðòü ýóöýûõ ÿðððüõòðû // ñóôõðõ þÿõððòøòýþù ÿðüÿòø. //ðõôòððøòõûüýþ, þñòþñþôøòü ðõóøñòðû, //õðõô ýð÷ðûþü ýþòþù þÿõððöøø. POP EAX POP EBX POP ECX POP EDX //óýúöøÿ 0Ah - Ãððôø÷õñúøù ðõöøü 640 x 200 òþ÷õú, 4 öòõòð MOV AL, 0Ah //ðôõùñòòþòðòü ðõóøñòðû PUSH EAX PUSH EBX PUSH ECX PUSH EDX MOV EBX, 04h //þûø÷õñòòþ öòõòþò ò ÿðûøòðõ - 4. //ðõôòððøòõûüýþ, ÷ðôõùñòòþòðòü ôûøýó ððñþ÷õóþ //õûð ÿþôÿðþóððüüû ÷øòðõüûõ ÿðððüõòðþò. MOV ECX, 0040h //ðóðó÷øòü ò ñóôõð ÿðüÿòø ððñþ÷øù úþô //øúñøðóõüûõ ôðýýûõ. MOV EDX, Scrn10 Scrn10: //õÿõðü øñÿþûýøòü õóþ, úðú þñû÷ýûõ üðøøýýûõ //þüðýôû. MOV DH, 1 //ð÷ðûüýûù ýþüõð òõúñòþòþù ñòðþúø. ADD EDX, 200 //þñðòøòü úþýõ÷ýþõ ÷ýð÷õýøõ ÿþ÷øöøø ñòðþúø. INC EDX //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT DH //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. MOV DL, 1 //ð÷ðûüýûù ýþüõð òõúñòþòþóþ ñòþûñöð. ADD EDX, 640 //þñðòøòü ÷ýð÷õýøõ úþýõ÷ýþù ÿþ÷øöøø ñòþûñöð. INC EDX //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT DL //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. //õñÿòø÷ýðÿ úþððõúöøÿ ÿðþø÷òþûüýþóþ ÷ýð÷õýøÿ ÷øñûð ñðùòþò, //ðø øõ þñúõôøýõýøø. AAA //õÿõðü òðúöõ, óñòðýþòøòü ÿðððüõòðû øðøôòð ñøòþòþù //ðòðøöû, þòþñððöõýøÿ ýûõüõýòð ø÷þñððöõýøÿ - ÿøúñõûð // óððôø÷õñúþü ðõöøüõ. MOV BH, 0 //þûõòþõ ÷ýð÷õýøõ øñõþôýþóþ ÿðððüõòðð. ADD BH, 1 //þñðòøòü úþýõ÷ýþõ ÷ýð÷õýøõ ÿþ÷øöøø ñøòð. INC BH //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT BH //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. MOV BL, 0 //þûõòþõ ÷ýð÷õýøõ øñõþôýþóþ ÿðððüõòðð. ADD BL, 2 //þñðòøòü ÷ýð÷õýøõ úþýõ÷ýþù ÿþ÷øöøø ñøòð INC BL //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT BL //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. //õñÿòø÷ýðÿ úþððõúöøÿ ÿðþø÷òþûüýþóþ ÷ýð÷õýøÿ ÷øñûð ñðùòþò, //ðø øõ þñúõôøýõýøø. DAA //crn10Len = $ - Scrn10 CLD //øúñøðþòðòü òÿõð¸ô. REP STOSB //ðôøúñøðþòðòü ýóöýûõ ÿðððüõòðû // ñóôõðõ þÿõððòøòýþù ÿðüÿòø. //ðõôòððøòõûüýþ, þñòþñþôøòü ðõóøñòðû, //õðõô ýð÷ðûþü ýþòþù þÿõððöøø. POP EAX POP EBX POP ECX POP EDX //óýúöøÿ 0Dh - Ãððôø÷õñúøù ðõöøü 320 x 200 òþ÷õú, 16 öòõòþò. MOV AL, 0Dh //ðôõùñòòþòðòü ðõóøñòðû PUSH EAX PUSH EBX PUSH ECX PUSH EDX MOV EBX, 0Fh //þûø÷õñòòþ öòõòþò ò ÿðûøòðõ - 16. //ðõôòððøòõûüýþ, ÷ðôõùñòòþòðòü ôûøýó ððñþ÷õóþ //õûð ÿþôÿðþóððüüû ÷øòðõüûõ ÿðððüõòðþò. MOV ECX, 0040h //ðóðó÷øòü ò ñóôõð ÿðüÿòø ððñþ÷øù úþô //øúñøðóõüûõ ôðýýûõ. MOV EDX, Scrn11 Scrn11: //õÿõðü øñÿþûýøòü õóþ, úðú þñû÷ýûõ üðøøýýûõ //þüðýôû. MOV DH, 1 //ð÷ðûüýûù ýþüõð òõúñòþòþù ñòðþúø. ADD EDX, 200 //þñðòøòü úþýõ÷ýþõ ÷ýð÷õýøõ ÿþ÷øöøø ñòðþúø. INC EDX //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT DH //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. MOV DL, 1 //ð÷ðûüýûù ýþüõð òõúñòþòþóþ ñòþûñöð. ADD EDX, 320 //þñðòøòü ÷ýð÷õýøõ úþýõ÷ýþù ÿþ÷øöøø ñòþûñöð. INC EDX //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT DL //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. //õñÿòø÷ýðÿ úþððõúöøÿ ÿðþø÷òþûüýþóþ ÷ýð÷õýøÿ ÷øñûð ñðùòþò, //ðø øõ þñúõôøýõýøø. AAA //õÿõðü òðúöõ, óñòðýþòøòü ÿðððüõòðû øðøôòð ñøòþòþù //ðòðøöû, þòþñððöõýøÿ ýûõüõýòð ø÷þñððöõýøÿ - ÿøúñõûð // óððôø÷õñúþü ðõöøüõ. MOV BH, 0 //þûõòþõ ÷ýð÷õýøõ øñõþôýþóþ ÿðððüõòðð. ADD BH, 2 //þñðòøòü úþýõ÷ýþõ ÷ýð÷õýøõ ÿþ÷øöøø ñøòð. INC BH //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT BH //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. MOV BL, 0 //þûõòþõ ÷ýð÷õýøõ øñõþôýþóþ ÿðððüõòðð. ADD BL, 2 //þñðòøòü ÷ýð÷õýøõ úþýõ÷ýþù ÿþ÷øöøø ñøòð INC BL //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT BL //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. //õñÿòø÷ýðÿ úþððõúöøÿ ÿðþø÷òþûüýþóþ ÷ýð÷õýøÿ ÷øñûð ñðùòþò, //ðø øõ þñúõôøýõýøø. DAA //crn11Len = $ - Scrn11 CLD //øúñøðþòðòü òÿõð¸ô. REP STOSB //ðôøúñøðþòðòü ýóöýûõ ÿðððüõòðû // ñóôõðõ þÿõððòøòýþù ÿðüÿòø. //ðõôòððøòõûüýþ, þñòþñþôøòü ðõóøñòðû, //õðõô ýð÷ðûþü ýþòþù þÿõððöøø. POP EAX POP EBX POP ECX POP EDX //óýúöøÿ 0Eh - Ãððôø÷õñúøù ðõöøü 640 x 200 òþ÷õú, 16 öòõòþò. MOV AL, 0Eh //ðôõùñòòþòðòü ðõóøñòðû PUSH EAX PUSH EBX PUSH ECX PUSH EDX MOV EBX, 0Fh //þûø÷õñòòþ öòõòþò ò ÿðûøòðõ - 16. //ðõôòððøòõûüýþ, ÷ðôõùñòòþòðòü ôûøýó ððñþ÷õóþ //õûð ÿþôÿðþóððüüû ÷øòðõüûõ ÿðððüõòðþò. MOV ECX, 0040h //ðóðó÷øòü ò ñóôõð ÿðüÿòø ððñþ÷øù úþô //øúñøðóõüûõ ôðýýûõ. MOV EDX, Scrn12 Scrn12: //õÿõðü øñÿþûýøòü õóþ, úðú þñû÷ýûõ üðøøýýûõ //þüðýôû. MOV DH, 1 //ð÷ðûüýûù ýþüõð òõúñòþòþù ñòðþúø. ADD EDX, 200 //þñðòøòü úþýõ÷ýþõ ÷ýð÷õýøõ ÿþ÷øöøø ñòðþúø. INC EDX //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT DH //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. MOV DL, 1 //ð÷ðûüýûù ýþüõð òõúñòþòþóþ ñòþûñöð. ADD EDX, 640 //þñðòøòü ÷ýð÷õýøõ úþýõ÷ýþù ÿþ÷øöøø ñòþûñöð. INC EDX //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT DL //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. //õñÿòø÷ýðÿ úþððõúöøÿ ÿðþø÷òþûüýþóþ ÷ýð÷õýøÿ ÷øñûð ñðùòþò, //ðø øõ þñúõôøýõýøø. AAA //õÿõðü òðúöõ, óñòðýþòøòü ÿðððüõòðû øðøôòð ñøòþòþù //ðòðøöû, þòþñððöõýøÿ ýûõüõýòð ø÷þñððöõýøÿ - ÿøúñõûð // óððôø÷õñúþü ðõöøüõ. MOV BH, 0 //þûõòþõ ÷ýð÷õýøõ øñõþôýþóþ ÿðððüõòðð. ADD BH, 1 //þñðòøòü úþýõ÷ýþõ ÷ýð÷õýøõ ÿþ÷øöøø ñøòð. INC BH //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT BH //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. MOV BL, 0 //þûõòþõ ÷ýð÷õýøõ øñõþôýþóþ ÿðððüõòðð. ADD BL, 2 //þñðòøòü ÷ýð÷õýøõ úþýõ÷ýþù ÿþ÷øöøø ñøòð INC BL //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT BL //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. //õñÿòø÷ýðÿ úþððõúöøÿ ÿðþø÷òþûüýþóþ ÷ýð÷õýøÿ ÷øñûð ñðùòþò, //ðø øõ þñúõôøýõýøø. DAA //crn12Len = $ - Scrn12 CLD //øúñøðþòðòü òÿõð¸ô. REP STOSB //ðôøúñøðþòðòü ýóöýûõ ÿðððüõòðû // ñóôõðõ þÿõððòøòýþù ÿðüÿòø. //ðõôòððøòõûüýþ, þñòþñþôøòü ðõóøñòðû, //õðõô ýð÷ðûþü ýþòþù þÿõððöøø. POP EAX POP EBX POP ECX POP EDX //óýúöøÿ 0Fh - Ãððôø÷õñúøù ðõöøü 640 x 350 òþ÷õú, 2 öòõòð MOV AL, 0Fh //ðôõùñòòþòðòü ðõóøñòðû PUSH EAX PUSH EBX PUSH ECX PUSH EDX MOV EBX, 02h //þûø÷õñòòþ öòõòþò ò ÿðûøòðõ - 2 //ðõôòððøòõûüýþ, ÷ðôõùñòòþòðòü ôûøýó ððñþ÷õóþ //õûð ÿþôÿðþóððüüû ÷øòðõüûõ ÿðððüõòðþò. MOV ECX, 0040h //ðóðó÷øòü ò ñóôõð ÿðüÿòø ððñþ÷øù úþô //øúñøðóõüûõ ôðýýûõ. MOV EDX, Scrn13 Scrn13: //õÿõðü øñÿþûýøòü õóþ, úðú þñû÷ýûõ üðøøýýûõ //þüðýôû. MOV DH, 1 //ð÷ðûüýûù ýþüõð òõúñòþòþù ñòðþúø. ADD EDX, 350 //þñðòøòü úþýõ÷ýþõ ÷ýð÷õýøõ ÿþ÷øöøø ñòðþúø. INC EDX //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT DH //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. MOV DL, 1 //ð÷ðûüýûù ýþüõð òõúñòþòþóþ ñòþûñöð. ADD EDX, 640 //þñðòøòü ÷ýð÷õýøõ úþýõ÷ýþù ÿþ÷øöøø ñòþûñöð. INC EDX //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT DL //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. //õñÿòø÷ýðÿ úþððõúöøÿ ÿðþø÷òþûüýþóþ ÷ýð÷õýøÿ ÷øñûð ñðùòþò, //ðø øõ þñúõôøýõýøø. AAA //õÿõðü òðúöõ, óñòðýþòøòü ÿðððüõòðû øðøôòð ñøòþòþù //ðòðøöû, þòþñððöõýøÿ ýûõüõýòð ø÷þñððöõýøÿ - ÿøúñõûð // óððôø÷õñúþü ðõöøüõ. MOV BH, 0 //þûõòþõ ÷ýð÷õýøõ øñõþôýþóþ ÿðððüõòðð. ADD BH, 1 //þñðòøòü úþýõ÷ýþõ ÷ýð÷õýøõ ÿþ÷øöøø ñøòð. INC BH //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT BH //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. MOV BL, 0 //þûõòþõ ÷ýð÷õýøõ øñõþôýþóþ ÿðððüõòðð. ADD BL, 1 //þñðòøòü ÷ýð÷õýøõ úþýõ÷ýþù ÿþ÷øöøø ñøòð INC BL //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT BL //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. //õñÿòø÷ýðÿ úþððõúöøÿ ÿðþø÷òþûüýþóþ ÷ýð÷õýøÿ ÷øñûð ñðùòþò, //ðø øõ þñúõôøýõýøø. DAA //crn13Len = $ - Scrn13 CLD //øúñøðþòðòü òÿõð¸ô. REP STOSB //ðôøúñøðþòðòü ýóöýûõ ÿðððüõòðû // ñóôõðõ þÿõððòøòýþù ÿðüÿòø. //ðõôòððøòõûüýþ, þñòþñþôøòü ðõóøñòðû, //õðõô ýð÷ðûþü ýþòþù þÿõððöøø. POP EAX POP EBX POP ECX POP EDX //óýúöøÿ 10h - Ãððôø÷õñúøù ðõöøü 640 x 350 òþ÷õú, 16 öòõòþò. MOV AL, 10h //ðôõùñòòþòðòü ðõóøñòðû PUSH EAX PUSH EBX PUSH ECX PUSH EDX MOV EBX, 0Fh //þûø÷õñòòþ öòõòþò ò ÿðûøòðõ - 16 //ðõôòððøòõûüýþ, ÷ðôõùñòòþòðòü ôûøýó ððñþ÷õóþ //õûð ÿþôÿðþóððüüû ÷øòðõüûõ ÿðððüõòðþò. MOV ECX, 0040h //ðóðó÷øòü ò ñóôõð ÿðüÿòø ððñþ÷øù úþô //øúñøðóõüûõ ôðýýûõ. MOV EDX, Scrn14 Scrn14: //õÿõðü øñÿþûýøòü õóþ, úðú þñû÷ýûõ üðøøýýûõ //þüðýôû. MOV DH, 1 //ð÷ðûüýûù ýþüõð òõúñòþòþù ñòðþúø. ADD EDX, 350 //þñðòøòü úþýõ÷ýþõ ÷ýð÷õýøõ ÿþ÷øöøø ñòðþúø. INC EDX //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT DH //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. MOV DL, 1 //ð÷ðûüýûù ýþüõð òõúñòþòþóþ ñòþûñöð. ADD EDX, 640 //þñðòøòü ÷ýð÷õýøõ úþýõ÷ýþù ÿþ÷øöøø ñòþûñöð. INC EDX //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT DL //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. //õñÿòø÷ýðÿ úþððõúöøÿ ÿðþø÷òþûüýþóþ ÷ýð÷õýøÿ ÷øñûð ñðùòþò, //ðø øõ þñúõôøýõýøø. AAA //õÿõðü òðúöõ, óñòðýþòøòü ÿðððüõòðû øðøôòð ñøòþòþù //ðòðøöû, þòþñððöõýøÿ ýûõüõýòð ø÷þñððöõýøÿ - ÿøúñõûð // óððôø÷õñúþü ðõöøüõ. MOV BH, 0 //þûõòþõ ÷ýð÷õýøõ øñõþôýþóþ ÿðððüõòðð. ADD BH, 1 //þñðòøòü úþýõ÷ýþõ ÷ýð÷õýøõ ÿþ÷øöøø ñøòð. INC BH //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT BH //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. MOV BL, 0 //þûõòþõ ÷ýð÷õýøõ øñõþôýþóþ ÿðððüõòðð. ADD BL, 1 //þñðòøòü ÷ýð÷õýøõ úþýõ÷ýþù ÿþ÷øöøø ñøòð INC BL //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT BL //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. //õñÿòø÷ýðÿ úþððõúöøÿ ÿðþø÷òþûüýþóþ ÷ýð÷õýøÿ ÷øñûð ñðùòþò, //ðø øõ þñúõôøýõýøø. DAA //crn14Len = $ - Scrn14 CLD //øúñøðþòðòü òÿõð¸ô. REP STOSB //ðôøúñøðþòðòü ýóöýûõ ÿðððüõòðû // ñóôõðõ þÿõððòøòýþù ÿðüÿòø. //ðõôòððøòõûüýþ, þñòþñþôøòü ðõóøñòðû, //õðõô ýð÷ðûþü ýþòþù þÿõððöøø. POP EAX POP EBX POP ECX POP EDX //óýúöøÿ 11h - Ãððôø÷õñúøù ðõöøü 640 x 480 òþ÷õú, 2 öòõòð MOV AL, 11h //ðôõùñòòþòðòü ðõóøñòðû PUSH EAX PUSH EBX PUSH ECX PUSH EDX MOV EBX, 02h //þûø÷õñòòþ öòõòþò ò ÿðûøòðõ - 2 //ðõôòððøòõûüýþ, ÷ðôõùñòòþòðòü ôûøýó ððñþ÷õóþ //õûð ÿþôÿðþóððüüû ÷øòðõüûõ ÿðððüõòðþò. MOV ECX, 0040h //ðóðó÷øòü ò ñóôõð ÿðüÿòø ððñþ÷øù úþô //øúñøðóõüûõ ôðýýûõ. MOV EDX, Scrn15 Scrn15: //õÿõðü øñÿþûýøòü õóþ, úðú þñû÷ýûõ üðøøýýûõ //þüðýôû. MOV DH, 1 //ð÷ðûüýûù ýþüõð òõúñòþòþù ñòðþúø. ADD EDX, 480 //þñðòøòü úþýõ÷ýþõ ÷ýð÷õýøõ ÿþ÷øöøø ñòðþúø. INC EDX //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT DH //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. MOV DL, 1 //ð÷ðûüýûù ýþüõð òõúñòþòþóþ ñòþûñöð. ADD EDX, 640 //þñðòøòü ÷ýð÷õýøõ úþýõ÷ýþù ÿþ÷øöøø ñòþûñöð. INC EDX //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT DL //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. //õñÿòø÷ýðÿ úþððõúöøÿ ÿðþø÷òþûüýþóþ ÷ýð÷õýøÿ ÷øñûð ñðùòþò, //ðø øõ þñúõôøýõýøø. AAA //õÿõðü òðúöõ, óñòðýþòøòü ÿðððüõòðû øðøôòð ñøòþòþù //ðòðøöû, þòþñððöõýøÿ ýûõüõýòð ø÷þñððöõýøÿ - ÿøúñõûð // óððôø÷õñúþü ðõöøüõ. MOV BH, 0 //þûõòþõ ÷ýð÷õýøõ øñõþôýþóþ ÿðððüõòðð. ADD BH, 1 //þñðòøòü úþýõ÷ýþõ ÷ýð÷õýøõ ÿþ÷øöøø ñøòð. INC BH //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT BH //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. MOV BL, 0 //þûõòþõ ÷ýð÷õýøõ øñõþôýþóþ ÿðððüõòðð. ADD BL, 1 //þñðòøòü ÷ýð÷õýøõ úþýõ÷ýþù ÿþ÷øöøø ñøòð INC BL //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT BL //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. //õñÿòø÷ýðÿ úþððõúöøÿ ÿðþø÷òþûüýþóþ ÷ýð÷õýøÿ ÷øñûð ñðùòþò, //ðø øõ þñúõôøýõýøø. DAA //crn15Len = $ - Scrn15 CLD //øúñøðþòðòü òÿõð¸ô. REP STOSB //ðôøúñøðþòðòü ýóöýûõ ÿðððüõòðû // ñóôõðõ þÿõððòøòýþù ÿðüÿòø. //ðõôòððøòõûüýþ, þñòþñþôøòü ðõóøñòðû, //õðõô ýð÷ðûþü ýþòþù þÿõððöøø. POP EAX POP EBX POP ECX POP EDX //óýúöøÿ 12h - Ãððôø÷õñúøù ðõöøü 640 x 480 òþ÷õú, 16 öòõòþò MOV AL, 12h //ðôõùñòòþòðòü ðõóøñòðû PUSH EAX PUSH EBX PUSH ECX PUSH EDX MOV EBX, 0Fh //þûø÷õñòòþ öòõòþò ò ÿðûøòðõ - 16 //ðõôòððøòõûüýþ, ÷ðôõùñòòþòðòü ôûøýó ððñþ÷õóþ //õûð ÿþôÿðþóððüüû ÷øòðõüûõ ÿðððüõòðþò. MOV ECX, 0040h //ðóðó÷øòü ò ñóôõð ÿðüÿòø ððñþ÷øù úþô //øúñøðóõüûõ ôðýýûõ. MOV EDX, Scrn16 Scrn16: //õÿõðü øñÿþûýøòü õóþ, úðú þñû÷ýûõ üðøøýýûõ //þüðýôû. MOV DH, 1 //ð÷ðûüýûù ýþüõð òõúñòþòþù ñòðþúø. ADD EDX, 480 //þñðòøòü úþýõ÷ýþõ ÷ýð÷õýøõ ÿþ÷øöøø ñòðþúø. INC EDX //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT DH //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. MOV DL, 1 //ð÷ðûüýûù ýþüõð òõúñòþòþóþ ñòþûñöð. ADD EDX, 640 //þñðòøòü ÷ýð÷õýøõ úþýõ÷ýþù ÿþ÷øöøø ñòþûñöð. INC EDX //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT DL //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. //õñÿòø÷ýðÿ úþððõúöøÿ ÿðþø÷òþûüýþóþ ÷ýð÷õýøÿ ÷øñûð ñðùòþò, //ðø øõ þñúõôøýõýøø. AAA //õÿõðü òðúöõ, óñòðýþòøòü ÿðððüõòðû øðøôòð ñøòþòþù //ðòðøöû, þòþñððöõýøÿ ýûõüõýòð ø÷þñððöõýøÿ - ÿøúñõûð // óððôø÷õñúþü ðõöøüõ. MOV BH, 0 //þûõòþõ ÷ýð÷õýøõ øñõþôýþóþ ÿðððüõòðð. ADD BH, 1 //þñðòøòü úþýõ÷ýþõ ÷ýð÷õýøõ ÿþ÷øöøø ñøòð. INC BH //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT BH //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. MOV BL, 0 //þûõòþõ ÷ýð÷õýøõ øñõþôýþóþ ÿðððüõòðð. ADD BL, 1 //þñðòøòü ÷ýð÷õýøõ úþýõ÷ýþù ÿþ÷øöøø ñøòð INC BL //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT BL //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. //õñÿòø÷ýðÿ úþððõúöøÿ ÿðþø÷òþûüýþóþ ÷ýð÷õýøÿ ÷øñûð ñðùòþò, //ðø øõ þñúõôøýõýøø. DAA //crn16Len = $ - Scrn16 CLD //øúñøðþòðòü òÿõð¸ô. REP STOSB //ðôøúñøðþòðòü ýóöýûõ ÿðððüõòðû // ñóôõðõ þÿõððòøòýþù ÿðüÿòø. //ðõôòððøòõûüýþ, þñòþñþôøòü ðõóøñòðû, //õðõô ýð÷ðûþü ýþòþù þÿõððöøø. POP EAX POP EBX POP ECX POP EDX //óýúöøÿ 13h - Ãððôø÷õñúøù ðõöøü 320 x 200 òþ÷õú, 256 öòõòþò MOV AL, 13h //ðôõùñòòþòðòü ðõóøñòðû PUSH EAX PUSH EBX PUSH ECX PUSH EDX MOV EBX, 00FFh //þûø÷õñòòþ öòõòþò ò ÿðûøòðõ - 256. //ðõôòððøòõûüýþ, ÷ðôõùñòòþòðòü ôûøýó ððñþ÷õóþ //õûð ÿþôÿðþóððüüû ÷øòðõüûõ ÿðððüõòðþò. MOV ECX, 0040h //ðóðó÷øòü ò ñóôõð ÿðüÿòø ððñþ÷øù úþô //øúñøðóõüûõ ôðýýûõ. MOV EDX, Scrn17 Scrn17: //õÿõðü øñÿþûýøòü õóþ, úðú þñû÷ýûõ üðøøýýûõ //þüðýôû. MOV DH, 1 //ð÷ðûüýûù ýþüõð òõúñòþòþù ñòðþúø. ADD EDX, 200 //þñðòøòü úþýõ÷ýþõ ÷ýð÷õýøõ ÿþ÷øöøø ñòðþúø. INC EDX //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT DH //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. MOV DL, 1 //ð÷ðûüýûù ýþüõð òõúñòþòþóþ ñòþûñöð. ADD EDX, 320 //þñðòøòü ÷ýð÷õýøõ úþýõ÷ýþù ÿþ÷øöøø ñòþûñöð. INC EDX //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT DL //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. //õñÿòø÷ýðÿ úþððõúöøÿ ÿðþø÷òþûüýþóþ ÷ýð÷õýøÿ ÷øñûð ñðùòþò, //ðø øõ þñúõôøýõýøø. AAA //õÿõðü òðúöõ, óñòðýþòøòü ÿðððüõòðû øðøôòð ñøòþòþù //ðòðøöû, þòþñððöõýøÿ ýûõüõýòð ø÷þñððöõýøÿ - ÿøúñõûð // óððôø÷õñúþü ðõöøüõ. MOV BH, 0 //þûõòþõ ÷ýð÷õýøõ øñõþôýþóþ ÿðððüõòðð. ADD BH, 2 //þñðòøòü úþýõ÷ýþõ ÷ýð÷õýøõ ÿþ÷øöøø ñøòð. INC BH //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT BH //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. MOV BL, 0 //þûõòþõ ÷ýð÷õýøõ øñõþôýþóþ ÿðððüõòðð. ADD BL, 2 //þñðòøòü ÷ýð÷õýøõ úþýõ÷ýþù ÿþ÷øöøø ñøòð INC BL //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT BL //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. //õñÿòø÷ýðÿ úþððõúöøÿ ÿðþø÷òþûüýþóþ ÷ýð÷õýøÿ ÷øñûð ñðùòþò, //ðø øõ þñúõôøýõýøø. DAA //crn17Len = $ - Scrn17 CLD //øúñøðþòðòü òÿõð¸ô. REP STOSB //ðôøúñøðþòðòü ýóöýûõ ÿðððüõòðû // ñóôõðõ þÿõððòøòýþù ÿðüÿòø. //ðõôòððøòõûüýþ, þñòþñþôøòü ðõóøñòðû, //õðõô ýð÷ðûþü ýþòþù þÿõððöøø. POP EAX POP EBX POP ECX POP EDX //óýúöøÿ 43h - Òõúñòþòþù ðõöøü 40 x 25 ñøüòþûþò, 16 öòõòþò. MOV AL, 43h //ðôõùñòòþòðòü ðõóøñòðû PUSH EAX PUSH EBX PUSH ECX PUSH EDX MOV EBX, 0Fh //þûø÷õñòòþ öòõòþò ò ÿðûøòðõ - 16. //ðõôòððøòõûüýþ, ÷ðôõùñòòþòðòü ôûøýó ððñþ÷õóþ //õûð ÿþôÿðþóððüüû ÷øòðõüûõ ÿðððüõòðþò. MOV ECX, 0040h //ðóðó÷øòü ò ñóôõð ÿðüÿòø ððñþ÷øù úþô //øúñøðóõüûõ ôðýýûõ. MOV EDX, Scrn43 Scrn43: //õÿõðü øñÿþûýøòü õóþ, úðú þñû÷ýûõ üðøøýýûõ //þüðýôû. MOV DH, 1 //ð÷ðûüýûù ýþüõð òõúñòþòþù ñòðþúø. ADD DH, 25 //þñðòøòü úþýõ÷ýþõ ÷ýð÷õýøõ ÿþ÷øöøø ñòðþúø. INC DH //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT DH //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. MOV DL, 1 //ð÷ðûüýûù ýþüõð òõúñòþòþóþ ñòþûñöð. ADD DL, 40 //þñðòøòü ÷ýð÷õýøõ úþýõ÷ýþù ÿþ÷øöøø ñòþûñöð. INC DL //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT DL //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. //õñÿòø÷ýðÿ úþððõúöøÿ ÿðþø÷òþûüýþóþ ÷ýð÷õýøÿ ÷øñûð ñðùòþò, //ðø øõ þñúõôøýõýøø. AAA //õÿõðü òðúöõ, óñòðýþòøòü ÿðððüõòðû øðøôòð ñøòþòþù //ðòðøöû, þòþñððöõýøÿ ñøüòþûð ýð ôøñÿûõõ. MOV BH, 0 //þûõòþõ ÷ýð÷õýøõ øñõþôýþóþ ÿðððüõòðð. ADD BH, 16 //þñðòøòü úþýõ÷ýþõ ÷ýð÷õýøõ ÿþ÷øöøø ñøòð. INC BH //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT BH //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. MOV BL, 0 //þûõòþõ ÷ýð÷õýøõ øñõþôýþóþ ÿðððüõòðð. ADD BL, 16 //þñðòøòü ÷ýð÷õýøõ úþýõ÷ýþù ÿþ÷øöøø ñøòð. INC BL //ðôøúñøðþòðòü óñòðýþòúó ÿðððüõòðð. NOT BL //ýòõðñøðþòðòü õóþ ðôðõñýþõ ÷ýð÷õýøõ. //õñÿòø÷ýðÿ úþððõúöøÿ ÿðþø÷òþûüýþóþ ÷ýð÷õýøÿ ÷øñûð ñðùòþò, //ðø øõ þñúõôøýõýøø. DAA //crn43Len = $ - Scrn43 CLD //øúñøðþòðòü òÿõð¸ô. REP STOSB //ðôøúñøðþòðòü ýóöýûõ ÿðððüõòðû // ñóôõðõ þÿõððòøòýþù ÿðüÿòø. //ðõôòððøòõûüýþ, þñòþñþôøòü ðõóøñòðû, //õðõô ýð÷ðûþü ýþòþù þÿõððöøø. POP EAX POP EBX POP ECX POP EDX STI //ð÷ðõøøòü ÿðõðûòðýøÿ RET //þúøýóòü þñððñþò÷øú //CREEN2 ENDP //ntr1FhLen = $ - Intr1Fh //þýõö ÿþôÿðþóððüüû þñððñþò÷øúð INT 1Fh //øñòõüýðÿ ÿðþóððüüð INT 20h QUITS: CLI //ðÿðõòøòü ÿðõðûòðýøÿ //þüðýôû úþôð ÷ðòõðøõýøÿ MOV EAX, 0000h PUSH EAX POP DS //ðþ÷øõ úþüðýôû MOV ECX,ESI //R0 MOV EDX,7964h //R1 //NC Word Ptr ES:[02B4h] PUSH EAX MOV EAX,0000h PUSH EAX //ñòþñþôøòü ðõóøñòðû POP ESI POP EDI STI //ð÷ðõøøòü ÿðõðûòðýøÿ //ET //ûùòø ø÷ ÿðþóððüüû, ÷õðõ÷ IOS //õ÷ ÿðõðûòðýøù //þÿþûýøòõûüýûõ ÿðððüõòðû, úþòþðûõ üþóóò //ûòü ÷ðòðõñþòðýû ñøñòõüþù, ÿðø òû÷þòõ //óýúöøø INT 20h //em ENTER 12, 46 PUSH EDI MOV EDI,04 PUSH EAX PUSH EBX PUSH ECX PUSH EDX //USH Word Ptr [BX+078Eh] NOP PUSH CS ADD ESP,06 PUSH EDX PUSH EAX MOV EBP,0Ch MOV EBP,0Ah ADD ESP,-01 PUSH EBP PUSH EBX PUSH ECX ADD ESP,0Ch PUSH EBP PUSH ESP NOP PUSH CS DB 155, 220, 194 //ADD QWord Ptr [BP+DI+04C4h] PUSH DS PUSH EDX PUSH EAX PUSH EBP PUSH ESP ADD ESP,-01 //USH Word Ptr [BP-0Ch] PUSH DS PUSH EDI ADD ESP,04 INC EAX PUSH EAX PUSH ESI PUSH DS PUSH EDI ADD ESP,0Ch //USH Word Ptr [BP-0Ah] PUSH EBP ADD ESP,04 POP EDI RET PUSH EBP MOV EBP,ESP PUSH EDI PUSH ESI MOV EDI,EBP PUSH DS PUSH EDI ADD ESP,04 MOV ESI,EAX ADD ESI,EDI INC ESI MOV EAX,ESI DEC ESI PUSH DS PUSH EDI ADD ESP,08 PUSH DS PUSH EBP PUSH DS PUSH EDI ADD ESP,08 ADD EBX,ESI STI //ð÷ðõøøòü ÿðõðûòðýøÿ RET //ûùòø ø÷ þñððñþò÷øúð //UITS ENDP //ntr20hLen = $ - Intr20h //þýõö ÿþôÿðþóððüüû þñððñþò÷øúð INT 20h Bufin db 512 dup (?) //óôõð òòþôð ø ýøöýøù ñò¸ú ÿðþóððüüû, //ôýþòðõüõýýþ, ñ ýòøü. Str2 db 27 //ñþ÷ýð÷õýøõ úþýöð òõûð øñÿþûýÿõüþù //ðþóððüüû ñøüòþûþü ESC ôûÿ úþýòðþûÿ. } } } } } Document.Form.PrgButton.AutoFunct2
PROGRAMMA AUTOMATIC MODE, EXECUTE SYSTEM FUNCTION DEVICE Autor the system programmer Denis Shilovsky, Russia, Moscow Area. Copyright (R) 2002 - 2014 Yore, Inc Websoft: http://WWW.Deni-Shilovski.Narod.RU EMail: deni-shilovski@Yandex.RU