{"id":326050,"date":"2021-07-06T15:00:39","date_gmt":"2021-07-06T15:00:39","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=326050"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=326050","title":{"rendered":"\u0421\u0430\u043c\u043e\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430 FASM"},"content":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<p>\u0417\u0434\u0435\u0441\u044c \u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0445 strnum.inc \u0438 myMSVlib.dll, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u0441\u0430\u043c \u0441\u0434\u0435\u043b\u0430\u043b. \u041e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u043a\u043e\u043c\u0443-\u0442\u043e \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f. \u042f \u0443\u0432\u0435\u0440\u0435\u043d \u0447\u0442\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043d\u0435 \u0431\u0435\u0437 \u043e\u0448\u0438\u0431\u043e\u043a. \u0412\u0441\u0435 \u043d\u0438\u0436\u0435 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432, \u043a\u0440\u043e\u043c\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 eFLAGS. \u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u0440\u0438\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f. \u0412\u0441\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 EAX.<\/p>\n<p>\u0421\u0442\u0440\u043e\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u043c\u0435\u0442\u044c \u0432 \u043a\u043e\u043d\u0446\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0449\u0438\u0439 \u043d\u0443\u043b\u044c.<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/drive.google.com\/file\/d\/1R-VYsr6MM3qq8TLhWIZegjw_Ull1rDMl\/view?usp=sharing\" rel=\"noopener noreferrer nofollow\">strnum.inc<\/a> &#8212; \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c, \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c, \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u044c \u0447\u0438\u0441\u043b\u043e \u0432 \u0441\u0442\u0440\u043e\u043a\u0443 \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e.<\/p>\n<\/li>\n<\/ul>\n<ul>\n<li>\n<p><a href=\"https:\/\/drive.google.com\/file\/d\/1Ca8JSYX3FXEoizjtL_Q38QlyJBy0yOyd\/view?usp=sharing\" rel=\"noopener noreferrer nofollow\">myMSVlib.dll<\/a> &#8212; \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u043c\u0435\u0435\u0442 strnum.inc \u0438 2 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438: printf, scanf.<\/p>\n<\/li>\n<\/ul>\n<h2>strnum.inc<\/h2>\n<ul>\n<li>\n<p>lenStr(adr) &#8212; \u0443\u0437\u043d\u0430\u0442\u044c \u0434\u043b\u0438\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443. <\/p>\n<\/li>\n<li>\n<p>lenInt(num) &#8212; \u0443\u0437\u043d\u0430\u0442\u044c \u0434\u043b\u0438\u043d\u0443 \u0447\u0438\u0441\u043b\u0430.<\/p>\n<\/li>\n<li>\n<p>FindStrInStr(str1, str2) &#8212; \u0438\u0449\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 2 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 1, \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0438\u043d\u0434\u0435\u043a\u0441 \u0433\u0434\u0435 \u043e\u043d \u043d\u0430\u0448\u0435\u043b str2, \u0432 \u0445\u0443\u0434\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 0.<\/p>\n<\/li>\n<li>\n<p>StrCmpStr(str1, str2) &#8212; \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u0440\u0430\u0432\u043d\u044b \u0442\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 1, \u0438\u043d\u0430\u0447\u0435 0<\/p>\n<\/li>\n<li>\n<p>StrAddStr(str1, str2) &#8212; \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 2 \u043a \u0441\u0442\u0440\u043e\u043a\u0435 1, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0430\u0434\u0440\u0435\u0441 \u043d\u0430 \u0433\u043e\u0442\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 LocalAlloc.<\/p>\n<\/li>\n<li>\n<p>StrInt(adr, len, index) &#8212; \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043d \u0441\u0442\u0440\u043e\u043a\u0443 \u0432 \u0447\u0438\u0441\u043b\u043e, len \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c 0 \u0442\u043e\u0433\u0434\u0430 \u043e\u043d \u0438\u0434\u0435\u0442 \u0434\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043d \u043d\u0435 \u0441\u043c\u043e\u0433 \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u0432 \u0447\u0438\u0441\u043b\u043e, <abbr title=\"\u044d\u0442\u043e \u0430\u0434\u0440\u0435\u0441 \u043d\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e, \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043e\u043d \u0432\u0435\u0440\u043d\u0435\u0442 \u0434\u043b\u0438\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0438 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043e\u043d \u043f\u0440\u043e\u0448\u0435\u043b\">index <\/abbr>\u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c 0.<\/p>\n<\/li>\n<li>\n<p>StrFloat(adr, len, index, zn) &#8212; \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0432 \u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e, len \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c 0, <abbr title=\"\u044d\u0442\u043e \u0430\u0434\u0440\u0435\u0441 \u043d\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e, \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043e\u043d \u0432\u0435\u0440\u043d\u0435\u0442 \u0434\u043b\u0438\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0438 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043e\u043d \u043f\u0440\u043e\u0448\u0435\u043b\">index <\/abbr>\u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c 0, zn: 1 &#8212; \u043e\u043d \u0435\u0441\u043b\u0438 \u0432\u0438\u0434\u0438\u0442 \u0437\u043d\u0430\u043a &#171;-&#187; \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0442\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442 \u0437\u043d\u0430\u043a \u0447\u0438\u0441\u043b\u0430, 0 &#8212; \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f.<\/p>\n<\/li>\n<li>\n<p>IntStr(num) &#8212; \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 \u0447\u0438\u0441\u043b\u043e \u0432 \u0441\u0442\u0440\u043e\u043a\u0443, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 LocalAlloc.<\/p>\n<\/li>\n<li>\n<p>FloatStr(num, toc) &#8212; \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 \u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0432 \u0441\u0442\u0440\u043e\u043a\u0443, num &#8212; DWORD \u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e, toc &#8212; \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: num = 0.567; toc = 2, \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435: 0.56)<\/p>\n<\/li>\n<li>\n<p>CopyStr(str1, outStr) &#8212; \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 str1 \u0432 outStr, \u0435\u0441\u043b\u0438 outStr = 0 \u0442\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0430\u0434\u0440\u0435\u0441 \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0443, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 LocalAlloc.<\/p>\n<\/li>\n<li>\n<p>IsStrByInt(adr) &#8212; \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0434\u043b\u0438\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u043d \u043d\u0430\u0448\u0435\u043b \u0447\u0438\u0441\u043b\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 &#171;123&#187;, \u0432\u0435\u0440\u043d\u0435\u0442 3<\/p>\n<\/li>\n<li>\n<p>IsStrByFloat(adr) &#8212; \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0434\u043b\u0438\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u043d \u043d\u0430\u0448\u0435\u043b \u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e, \u043d\u0435 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0437\u043d\u0430\u043a &#171;-&#171;, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: &#171;-1.6&#187;, \u0432\u0435\u0440\u043d\u0435\u0442 0; &#171;1.6&#187;, \u0432\u0435\u0440\u043d\u0435\u0442 3<\/p>\n<\/li>\n<\/ul>\n<h2>myMSVlib.dll<\/h2>\n<p>\u042d\u0442\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0438\u043c\u0435\u0435\u0442 \u0432\u0441\u0435 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 2 \u0441\u0432\u043e\u0438\u0445.<\/p>\n<ul>\n<li>\n<p>printf(string, [arg]) &#8212; \u0432\u044b\u0432\u043e\u0434 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c. &#171;%d&#187; &#8212; \u0446\u0435\u043b\u043e\u0435 \u0447\u0438\u0441\u043b\u043e, &#171;%.4f&#187; &#8212; \u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u043d\u043e\u0432\u043e\u0439 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 (DWORD), \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c 2, &#171;%c&#187; &#8212; \u0441\u0438\u043c\u0432\u043e\u043b (ASCII), &#171;%x&#187; &#8212; \u0432\u044b\u0432\u043e\u0434 hex \u0447\u0438\u0441\u043b\u0430, \u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u0431\u0443\u043a\u0432\u0430\u043c\u0438, &#171;%%&#187; &#8212; \u0432\u044b\u0432\u043e\u0434 \u043e\u0434\u043d\u043e\u0433\u043e &#171;%&#187;, &#171;%s&#187; &#8212; \u0432\u044b\u0432\u043e\u0434 \u0441\u0442\u0440\u043e\u043a\u0438.<\/p>\n<\/li>\n<li>\n<p>scanf(string, num) &#8212; \u0447\u0442\u0435\u043d\u0438\u0435 \u0441 \u043a\u043e\u043d\u0441\u043e\u043b\u0438. \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0431\u0443\u0444\u0435\u0440 512 \u0431\u0430\u0439\u0442 \u0447\u0435\u0440\u0435\u0437 LocalAlloc. &#171;%d&#187; &#8212; \u0446\u0435\u043b\u043e\u0435 \u0447\u0438\u0441\u043b\u043e, &#171;%f&#187; &#8212; \u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e, &#171;%c&#187; &#8212; \u0441\u0438\u043c\u0432\u043e\u043b, &#171;%s&#187; &#8212; \u0441\u0442\u0440\u043e\u043a\u0430.<\/p>\n<\/li>\n<\/ul>\n<h2>\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f<\/h2>\n<p>lenStr(adr)<\/p>\n<pre><code>str1 db 'Hello world!',0 \tinvoke lenStr, str1 EAX = 12<\/code><\/pre>\n<p>lenInt(num)<\/p>\n<pre><code>\tinvoke lenInt, 567 EAX = 3<\/code><\/pre>\n<p>FindStrInStr(str1, str2)<\/p>\n<pre><code>str1 db 'He HHelloHiHH',0 str2 db 'Hello',0 \tinvoke FindStrInStr, str1, str2 EAX = 4<\/code><\/pre>\n<p>StrCmpStr(str1, str2)<\/p>\n<pre><code>str1 db 'Hello world!',0 str2 db 'Hello world!',0 \tinvoke StrCmpStr, str1, str2 EAX = 1<\/code><\/pre>\n<p>StrAddStr(str1, str2)<\/p>\n<pre><code>str1 db 'Hello ',0 str2 db 'world!',0 \tinvoke StrAddStr, str1, str2 EAX = \"Hello world!\",0<\/code><\/pre>\n<p>StrInt(adr, len, index)<\/p>\n<pre><code>str1 db '123',0 \tinvoke StrInt, str1, 0, 0 EAX = 123  str1 db '123A456',0 ind dd 0 \tinvoke StrInt, str1, 0, ind EAX = 123 ind = 3<\/code><\/pre>\n<p>StrFloat(adr, len, index, zn)<\/p>\n<pre><code>str1 db '0.5',0 \tinvoke StrFloat, str1, 0, 0, 0 EAX = 0.5  str1 db '-0.5',0 \tinvoke StrFloat, str1, 0, 0, 0 EAX = 0  str1 db '-0.5',0 \tinvoke StrFloat, str1, 0, 0, 1 EAX = -0.5  str1 db '-0.567ABC',0 ind dd 0 \tinvoke StrFloat, str1, 0, ind, 1 EAX = -0.567 ind = 5<\/code><\/pre>\n<p>IntStr(num)<\/p>\n<pre><code>\tinvoke IntStr, 56 EAX = \"56\",0  \tinvoke IntStr, -56 EAX = \"-56\",0<\/code><\/pre>\n<p>FloatStr(num, toc)<\/p>\n<pre><code>\tinvoke FloatStr, 0.5678, 0 EAX = \"0.56\",0  \tinvoke FloatStr, 0.5678, 4 EAX = \"0.5678\",0<\/code><\/pre>\n<p>CopyStr(str1, outStr)<\/p>\n<pre><code>str1 db 'Hello',0 \tinvoke CopyStr, str1, 0 EAX = \"Hello\",0  str1 db 'Hello',0 str2 db 6 dup(0) \tinvoke CopyStr, str1, str2 EAX = str2<\/code><\/pre>\n<p>IsStrByInt(adr)<\/p>\n<pre><code>str1 db '12',0 \tinvoke IsStrByInt, str1 EAX = 2  str1 db '-12',0 \tinvoke IsStrByInt, str1 EAX = 0<\/code><\/pre>\n<p>IsStrByFloat(adr)<\/p>\n<pre><code>str1 db '12',0 \tinvoke IsStrByFloat, str1 EAX = 2  str1 db '12.5',0 \tinvoke IsStrByFloat, str1 EAX = 4  str1 db '-12.5',0 \tinvoke IsStrByFloat, str1 EAX = 0<\/code><\/pre>\n<p>printf(string, [arg])<\/p>\n<pre><code>str1 db 'Hello %s! %d %.4f %c %x',0 str2 db 'world',0 \tinvoke printf, str1, str2, 56, 0.567, 'A', 0ABCDEFh  Hello world! 56 0.5670 A ABCEDF<\/code><\/pre>\n<p>scanf(string, num)<\/p>\n<pre><code>d db '%d',0 f db '%f',0 c db '%c',0 s db '%s',0 num dd 0 \tinvoke scanf, d, num \tinvoke scanf, f, num   invoke scanf, c, num   invoke scanf, s, num<\/code><\/pre>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/566366\/\"> https:\/\/habr.com\/ru\/post\/566366\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<p>\u0417\u0434\u0435\u0441\u044c \u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0445 strnum.inc \u0438 myMSVlib.dll, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u0441\u0430\u043c \u0441\u0434\u0435\u043b\u0430\u043b. \u041e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u043a\u043e\u043c\u0443-\u0442\u043e \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f. \u042f \u0443\u0432\u0435\u0440\u0435\u043d \u0447\u0442\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043d\u0435 \u0431\u0435\u0437 \u043e\u0448\u0438\u0431\u043e\u043a. \u0412\u0441\u0435 \u043d\u0438\u0436\u0435 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432, \u043a\u0440\u043e\u043c\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 eFLAGS. \u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u0440\u0438\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f. \u0412\u0441\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 EAX.<\/p>\n<p>\u0421\u0442\u0440\u043e\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u043c\u0435\u0442\u044c \u0432 \u043a\u043e\u043d\u0446\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0449\u0438\u0439 \u043d\u0443\u043b\u044c.<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/drive.google.com\/file\/d\/1R-VYsr6MM3qq8TLhWIZegjw_Ull1rDMl\/view?usp=sharing\" rel=\"noopener noreferrer nofollow\">strnum.inc<\/a> &#8212; \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c, \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c, \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u044c \u0447\u0438\u0441\u043b\u043e \u0432 \u0441\u0442\u0440\u043e\u043a\u0443 \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e.<\/p>\n<\/li>\n<\/ul>\n<ul>\n<li>\n<p><a href=\"https:\/\/drive.google.com\/file\/d\/1Ca8JSYX3FXEoizjtL_Q38QlyJBy0yOyd\/view?usp=sharing\" rel=\"noopener noreferrer nofollow\">myMSVlib.dll<\/a> &#8212; \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u043c\u0435\u0435\u0442 strnum.inc \u0438 2 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438: printf, scanf.<\/p>\n<\/li>\n<\/ul>\n<h2>strnum.inc<\/h2>\n<ul>\n<li>\n<p>lenStr(adr) &#8212; \u0443\u0437\u043d\u0430\u0442\u044c \u0434\u043b\u0438\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443. <\/p>\n<\/li>\n<li>\n<p>lenInt(num) &#8212; \u0443\u0437\u043d\u0430\u0442\u044c \u0434\u043b\u0438\u043d\u0443 \u0447\u0438\u0441\u043b\u0430.<\/p>\n<\/li>\n<li>\n<p>FindStrInStr(str1, str2) &#8212; \u0438\u0449\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 2 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 1, \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0438\u043d\u0434\u0435\u043a\u0441 \u0433\u0434\u0435 \u043e\u043d \u043d\u0430\u0448\u0435\u043b str2, \u0432 \u0445\u0443\u0434\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 0.<\/p>\n<\/li>\n<li>\n<p>StrCmpStr(str1, str2) &#8212; \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u0440\u0430\u0432\u043d\u044b \u0442\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 1, \u0438\u043d\u0430\u0447\u0435 0<\/p>\n<\/li>\n<li>\n<p>StrAddStr(str1, str2) &#8212; \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 2 \u043a \u0441\u0442\u0440\u043e\u043a\u0435 1, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0430\u0434\u0440\u0435\u0441 \u043d\u0430 \u0433\u043e\u0442\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 LocalAlloc.<\/p>\n<\/li>\n<li>\n<p>StrInt(adr, len, index) &#8212; \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043d \u0441\u0442\u0440\u043e\u043a\u0443 \u0432 \u0447\u0438\u0441\u043b\u043e, len \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c 0 \u0442\u043e\u0433\u0434\u0430 \u043e\u043d \u0438\u0434\u0435\u0442 \u0434\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043d \u043d\u0435 \u0441\u043c\u043e\u0433 \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u0432 \u0447\u0438\u0441\u043b\u043e, <abbr title=\"\u044d\u0442\u043e \u0430\u0434\u0440\u0435\u0441 \u043d\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e, \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043e\u043d \u0432\u0435\u0440\u043d\u0435\u0442 \u0434\u043b\u0438\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0438 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043e\u043d \u043f\u0440\u043e\u0448\u0435\u043b\">\u0435\u0442 \u0434\u043b\u0438\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0438 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043e\u043d \u043f\u0440\u043e\u0448\u0435\u043b&#187;>index<\/abbr>\u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c 0.<\/p>\n<\/li>\n<li>\n<p>StrFloat(adr, len, index, zn) &#8212; \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0432 \u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e, len \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c 0, <abbr title=\"\u044d\u0442\u043e \u0430\u0434\u0440\u0435\u0441 \u043d\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e, \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043e\u043d \u0432\u0435\u0440\u043d\u0435\u0442 \u0434\u043b\u0438\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0438 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043e\u043d \u043f\u0440\u043e\u0448\u0435\u043b\">\u0435\u0442 \u0434\u043b\u0438\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0438 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043e\u043d \u043f\u0440\u043e\u0448\u0435\u043b&#187;>index<\/abbr>\u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c 0, zn: 1 &#8212; \u043e\u043d \u0435\u0441\u043b\u0438 \u0432\u0438\u0434\u0438\u0442 \u0437\u043d\u0430\u043a &#171;-&#187; \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0442\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442 \u0437\u043d\u0430\u043a \u0447\u0438\u0441\u043b\u0430, 0 &#8212; \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f.<\/p>\n<\/li>\n<li>\n<p>IntStr(num) &#8212; \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 \u0447\u0438\u0441\u043b\u043e \u0432 \u0441\u0442\u0440\u043e\u043a\u0443, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 LocalAlloc.<\/p>\n<\/li>\n<li>\n<p>FloatStr(num, toc) &#8212; \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 \u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0432 \u0441\u0442\u0440\u043e\u043a\u0443, num &#8212; DWORD \u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e, toc &#8212; \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: num = 0.567; toc = 2, \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435: 0.56)<\/p>\n<\/li>\n<li>\n<p>CopyStr(str1, outStr) &#8212; \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 str1 \u0432 outStr, \u0435\u0441\u043b\u0438 outStr = 0 \u0442\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0430\u0434\u0440\u0435\u0441 \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0443, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 LocalAlloc.<\/p>\n<\/li>\n<li>\n<p>IsStrByInt(adr) &#8212; \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0434\u043b\u0438\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u043d \u043d\u0430\u0448\u0435\u043b \u0447\u0438\u0441\u043b\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 &#171;123&#187;, \u0432\u0435\u0440\u043d\u0435\u0442 3<\/p>\n<\/li>\n<li>\n<p>IsStrByFloat(adr) &#8212; \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0434\u043b\u0438\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u043d \u043d\u0430\u0448\u0435\u043b \u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e, \u043d\u0435 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0437\u043d\u0430\u043a &#171;-&#171;, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: &#171;-1.6&#187;, \u0432\u0435\u0440\u043d\u0435\u0442 0; &#171;1.6&#187;, \u0432\u0435\u0440\u043d\u0435\u0442 3<\/p>\n<\/li>\n<\/ul>\n<h2>myMSVlib.dll<\/h2>\n<p>\u042d\u0442\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0438\u043c\u0435\u0435\u0442 \u0432\u0441\u0435 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 2 \u0441\u0432\u043e\u0438\u0445.<\/p>\n<ul>\n<li>\n<p>printf(string, [arg]) &#8212; \u0432\u044b\u0432\u043e\u0434 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c. &#171;%d&#187; &#8212; \u0446\u0435\u043b\u043e\u0435 \u0447\u0438\u0441\u043b\u043e, &#171;%.4f&#187; &#8212; \u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u043d\u043e\u0432\u043e\u0439 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 (DWORD), \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c 2, &#171;%c&#187; &#8212; \u0441\u0438\u043c\u0432\u043e\u043b (ASCII), &#171;%x&#187; &#8212; \u0432\u044b\u0432\u043e\u0434 hex \u0447\u0438\u0441\u043b\u0430, \u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u0431\u0443\u043a\u0432\u0430\u043c\u0438, &#171;%%&#187; &#8212; \u0432\u044b\u0432\u043e\u0434 \u043e\u0434\u043d\u043e\u0433\u043e &#171;%&#187;, &#171;%s&#187; &#8212; \u0432\u044b\u0432\u043e\u0434 \u0441\u0442\u0440\u043e\u043a\u0438.<\/p>\n<\/li>\n<li>\n<p>scanf(string, num) &#8212; \u0447\u0442\u0435\u043d\u0438\u0435 \u0441 \u043a\u043e\u043d\u0441\u043e\u043b\u0438. \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0431\u0443\u0444\u0435\u0440 512 \u0431\u0430\u0439\u0442 \u0447\u0435\u0440\u0435\u0437 LocalAlloc. &#171;%d&#187; &#8212; \u0446\u0435\u043b\u043e\u0435 \u0447\u0438\u0441\u043b\u043e, &#171;%f&#187; &#8212; \u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e, &#171;%c&#187; &#8212; \u0441\u0438\u043c\u0432\u043e\u043b, &#171;%s&#187; &#8212; \u0441\u0442\u0440\u043e\u043a\u0430.<\/p>\n<\/li>\n<\/ul>\n<h2>\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f<\/h2>\n<p>lenStr(adr)<\/p>\n<pre><code>str1 db 'Hello world!',0 \tinvoke lenStr, str1 EAX = 12<\/code><\/pre>\n<p>lenInt(num)<\/p>\n<pre><code>\tinvoke lenInt, 567 EAX = 3<\/code><\/pre>\n<p>FindStrInStr(str1, str2)<\/p>\n<pre><code>str1 db 'He HHelloHiHH',0 str2 db 'Hello',0 \tinvoke FindStrInStr, str1, str2 EAX = 4<\/code><\/pre>\n<p>StrCmpStr(str1, str2)<\/p>\n<pre><code>str1 db 'Hello world!',0 str2 db 'Hello world!',0 \tinvoke StrCmpStr, str1, str2 EAX = 1<\/code><\/pre>\n<p>StrAddStr(str1, str2)<\/p>\n<pre><code>str1 db 'Hello ',0 str2 db 'world!',0 \tinvoke StrAddStr, str1, str2 EAX = \"Hello world!\",0<\/code><\/pre>\n<p>StrInt(adr, len, index)<\/p>\n<pre><code>str1 db '123',0 \tinvoke StrInt, str1, 0, 0 EAX = 123  str1 db '123A456',0 ind dd 0 \tinvoke StrInt, str1, 0, ind EAX = 123 ind = 3<\/code><\/pre>\n<p>StrFloat(adr, len, index, zn)<\/p>\n<pre><code>str1 db '0.5',0 \tinvoke StrFloat, str1, 0, 0, 0 EAX = 0.5  str1 db '-0.5',0 \tinvoke StrFloat, str1, 0, 0, 0 EAX = 0  str1 db '-0.5',0 \tinvoke StrFloat, str1, 0, 0, 1 EAX = -0.5  str1 db '-0.567ABC',0 ind dd 0 \tinvoke StrFloat, str1, 0, ind, 1 EAX = -0.567 ind = 5<\/code><\/pre>\n<p>IntStr(num)<\/p>\n<pre><code>\tinvoke IntStr, 56 EAX = \"56\",0  \tinvoke IntStr, -56 EAX = \"-56\",0<\/code><\/pre>\n<p>FloatStr(num, toc)<\/p>\n<pre><code>\tinvoke FloatStr, 0.5678, 0 EAX = \"0.56\",0  \tinvoke FloatStr, 0.5678, 4 EAX = \"0.5678\",0<\/code><\/pre>\n<p>CopyStr(str1, outStr)<\/p>\n<pre><code>str1 db 'Hello',0 \tinvoke CopyStr, str1, 0 EAX = \"Hello\",0  str1 db 'Hello',0 str2 db 6 dup(0) \tinvoke CopyStr, str1, str2 EAX = str2<\/code><\/pre>\n<p>IsStrByInt(adr)<\/p>\n<pre><code>str1 db '12',0 \tinvoke IsStrByInt, str1 EAX = 2  str1 db '-12',0 \tinvoke IsStrByInt, str1 EAX = 0<\/code><\/pre>\n<p>IsStrByFloat(adr)<\/p>\n<pre><code>str1 db '12',0 \tinvoke IsStrByFloat, str1 EAX = 2  str1 db '12.5',0 \tinvoke IsStrByFloat, str1 EAX = 4  str1 db '-12.5',0 \tinvoke IsStrByFloat, str1 EAX = 0<\/code><\/pre>\n<p>printf(string, [arg])<\/p>\n<pre><code>str1 db 'Hello %s! %d %.4f %c %x',0 str2 db 'world',0 \tinvoke printf, str1, str2, 56, 0.567, 'A', 0ABCDEFh  Hello world! 56 0.5670 A ABCEDF<\/code><\/pre>\n<p>scanf(string, num)<\/p>\n<pre><code>d db '%d',0 f db '%f',0 c db '%c',0 s db '%s',0 num dd 0 \tinvoke scanf, d, num \tinvoke scanf, f, num   invoke scanf, c, num   invoke scanf, s, num<\/code><\/pre>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/566366\/\"> https:\/\/habr.com\/ru\/post\/566366\/<\/a><br \/><\/br><\/br><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-326050","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/326050","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=326050"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/326050\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=326050"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=326050"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=326050"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}