<?xml version="1.0" encoding="utf-8" ?>
<!-- generator="FEEDCREATOR_VERSION" -->
<rss version="2.0" xmlns:sns="http://blog.sina.com.cn/sns">
    <channel>
        <title>TBsoft工作室的BLOG</title>
        <description></description>
        <link>http://blog.sina.com.cn/tbsoftstudio</link>
        <lastBuildDate>Sat, 26 Jul 2008 06:35:05 GMT+8</lastBuildDate>
        <generator>FEEDCREATOR_VERSION</generator>
        <language>zh-cn</language>
        <copyright>Copyright 1996 - 2008 SINA Inc. All Rights Reserved.</copyright>
        <pubDate>Fri, 25 Jul 2008 22:35:05 GMT+8</pubDate>
        <item>
            <title>谈谈9000系列晶体管</title>
            <link>http://blog.sina.com.cn/s/blog_4b3e3da6010009j2.html</link>
            <description><![CDATA[<DIV>
<P><FONT FACE="宋体">目前市场上的9000系列晶体管价格极低，批量购买可便宜至5分钱一只，实际上这些9000系列晶体管虽然仿韩国型号打上9013、9014等型号，其实绝大多数都是国产货，可以说，9000系列晶体管价格在0.30元以下的一般不可能有真正的韩国进口货。</FONT></P>
<P>&nbsp;</P>
<P><FONT FACE="宋体">9000系列晶体管早在80年代就已经国产化，国内很多电子元件生产商都大量生产9000系列晶体管，例如无锡华晶公司。国产化的元件，应该用国内型号，例如9014应该命名为3DG9014，但是目前9000系列晶体管型号早已深入人心，国产9000系列晶体管通常也只打简化后的型号——9013、9014等。</FONT></P>
<P>&nbsp;</P>
<P><FONT FACE="宋体">这种国产晶体管打简化型号或者仿进口型号情况目前极其常见，日光灯电子镇流器常用的MJE13001、MJE13003之类的晶体管，笔者买过几批，无锡东海旭日生产MJE13001的国产化型号3DD13001，打的型号就是13001；无锡华晶生产MJE13003的国产化改进型号3DD13003F6，打的型号是13003F6，这些都是简化型号，但管壳上均有对应生产商的商标。深圳深爱生产的这类晶体管则直接使用MJE13001、MJE13003之类的型号，属于仿进口型号。</FONT></P>
<P>&nbsp;</P>
<P><FONT FACE="宋体">9000系列晶体管的国产型号分别是：</FONT></P>
<P><FONT FACE="宋体">9011——3DG9011<br/>
9012——3CG9012<br/>
9013——3DG9013<br/>
9014——3DG9014<br/>
9015——3CG9015<br/>
9016——3DG9016<br/>
9018——3DG9018<br/>
8050——3DA8050（8050
Pcm=1W，按我国晶体管型号命名规则，属于高频大功率管，也有部分厂商命名为3DG8050）<br/>

8550——3CA8550（3CG8550）</FONT></P>
<P>&nbsp;</P>
<P><FONT FACE="宋体">其他一些国外型号对应的国产化的晶体管型号：</FONT></P>
<P>&nbsp;</P>
<P><FONT FACE="宋体">MJE13001——3DD13001<br/>
MJE13002——3DD13002<br/>
MJE13003——3DD13003<br/>
MJE13005——3DD13005<br/>
MJE13007——3DD13007<br/>
MJE13009——3DD13009</FONT></P>
<P>&nbsp;</P>
<P><FONT FACE="宋体">2SC1815——3DG1815<br/>
2SC1971——3DA1971</FONT></P>
<P>&nbsp;</P>
<P><FONT FACE="宋体">2N2222——3DG2222<br/>
2N3904——3DG3904<br/>
2N3906——3CG3906</FONT></P>
<P>&nbsp;</P>
<P><FONT FACE="宋体">1N4001——2CZ4001<br/>
1N4007——2CZ4007<br/>
1N4148——2CK4148</FONT></P>
<P>&nbsp;</P>
<P><FONT FACE="宋体">……</FONT></P>
<P>&nbsp;</P>
<P><FONT FACE="宋体">目前，国内电子教材，包括部分最新的教材，仍然在使用3DG6、3DG12、3DG130等早已过时，不再生产的晶体管型号对学生进行教学，包括进行课程设计和毕业设计，学生不得不去电子市场“淘”这些型号的晶体管。这类管子存货多是80年代生产的，性能有些已经明显下降，而且多为金封管子，价格比现在生产的塑封管子还贵，笔者购买的1985年生产的军用级（J级）3DG130C和3DG130D可达1.50—2.00元一只，实在没有必要。建议教材的编写者注意一下这个问题，如果一定要使用国产型号元件进行教学，完全可以用3DG9013、3DG9014等型号，再给出一个国产型号和国外型号的对应表就行了。<br/>
</FONT></P>
</DIV>
]]></description>
            <author>tbsoft工作室</author>
            <category>计算机硬件和电子</category>
            <comments>http://blog.sina.com.cn/s/blog_4b3e3da6010009j2.html#comment</comments>
            <pubDate>Fri, 04 May 2007 14:00:30 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_4b3e3da6010009j2.html</guid>
        </item>
        <item>
            <title>制作单管收音机或者直放式收音机部分元件的获取</title>
            <link>http://blog.sina.com.cn/s/blog_4b3e3da6010009j1.html</link>
            <description><![CDATA[<DIV>
<P><FONT FACE="宋体">制作收音机仍然是无线电爱好者入门的很好方式，特别是对于高低频模拟电子电路的入门，制作收音机可以说是最好的选择，但是目前制作收音机，特别是单管收音机或者直放式收音机的很多元件难以直接购买到（超外差式收音机可以购买现成的套件），需要自制或者寻找代用品，这里笔者根据自己多年的经验，介绍部分元件的获取方法：</FONT></P>
<P>&nbsp;</P>
<P><FONT FACE="宋体">1、可变电容器：这是调谐所必需的元件。单连可变电容器，以及270p和360p等容双连可变电容器目前都很难买到，可以用还可以买到的CBM-223差容双连代替，这种双连目前仍然用来制造袖珍收音机，它的两连容量分别是141p（天线连）和60p（振荡连），并自带两个微调电容器，使用时可以只用天线连，也可以将两连并联起来使用，容量约为200p。</FONT></P>
<P>&nbsp;</P>
<P><FONT FACE="宋体">2、磁性天线：50mm左右的扁形磁棒仍然可以购买到，磁性材料商店还可以购买到更长的磁棒，也可从废旧收音机中拆取。这里介绍一个诀窍：每年大中专院校举行各种带有听力的英语考试（例如大学英语4级和6级），考试完后经常会有丢弃不要的废旧收音机，笔者捡到过多个，拆取了大量磁棒之类的元器件，最长的有85mm的。</FONT></P>
<P>&nbsp;</P>
<P><FONT FACE="宋体">如果使用CBM-223的天线连配合50mm的扁形磁棒，天线线圈可以用直径0.1mm以上的漆包线绕110—114匝。如果换用其他长度的磁棒，可以简单计算一下：配合270p可变电容器的天线线圈电感量约为299uH，配合141p可变电容器的天线线圈电感量约为578uH，线圈电感量与线圈匝数的平方（注意！）成正比，可以根据配合270p可变电容器的天线线圈匝数计算出配合141p可变电容器的天线线圈匝数，也可以用漆包线在磁棒的任意一端附近先密绕数十匝，用电感电容表或者带有电感量测量的较高档数字万用表测出电感量，再计算达到预定电感量的匝数。</FONT></P>
<P>&nbsp;</P>
<P><FONT FACE="宋体">3、晶体管：极易买到的9011、9013、9014等NPN硅管或者9012、9015等PNP硅管都可以使用，无需购买3AG锗管，选用NPN或者PNP硅管时要注意电源极性，hFE大于80即可，可用数字万用表测量。</FONT></P>
<P>&nbsp;</P>
<P><FONT FACE="宋体">选用硅管，电源电压不宜用1.5V，最好用3V以上，因为1.5V电池的放电终止电压一般是0.9V左右，晶体管工作在放大区，要求Vce&gt;Vbe，硅管Vbe约为0.7V左右，这样Vce至少应该在0.8—0.9V，考虑到集电极负载上的压降，电池电压下降到1V左右时，硅管实际上已经很难工作在放大区了。</FONT></P>
<P>&nbsp;</P>
<P><FONT FACE="宋体">4、检波二极管：还容易买到的1N60和1N34都很合适，如果买不到，使用极易买到的1N4148代用也勉强可用。</FONT></P>
<P>&nbsp;</P>
<P><FONT FACE="宋体">5、高频扼流圈：可用市面上很容易买到的1—3mH的固定电感代用，效果很好。如果自制，可以用废旧节能灯灯头中拆出的电子镇流器中的磁环，用0.1mm左右的漆包线绕100—200匝就很好。</FONT></P>
<P>&nbsp;</P>
<P><FONT FACE="宋体">市场上销售的低档甚至劣质节能灯损坏后，一般只是灯管损坏，灯头中有一电子镇流器还是好的，将电子镇流器电路板拆出，可以获得4个1N4007整流二极管，两个3DD13001开关晶体管（这种晶体管不适宜装收音机），一个磁环变压器和一个用E型磁芯绕制的扼流圈，以及一些阻容元件等。所用的磁环和磁芯都是高导磁率的锰锌功率铁氧体材料，导磁率甚至高于MXO-2000材料，虽然工作频率较低，绕制高频扼流圈是很合适的，原E型磁芯绕制的扼流圈所用漆包线一般是直径0.15mm的，拆下来绕制天线线圈和高频扼流圈都很好，如果用3—5个废旧节能灯中的漆包线，自己绞合起来成为多股线，绕制天线线圈效果更好。</FONT></P>
<P>&nbsp;</P>
<P><FONT FACE="宋体">6、耳机：市售廉价立体声耳机每个声道的阻抗是32ohm（欧姆），将两个声道串联起来使用，可获得64ohm的阻抗，可作为中阻抗耳机使用，这时晶体管的集电极电流可以调大一点，调到4—5mA。高阻抗耳机可用带有共鸣腔的压电陶瓷片，并联一个1K左右的电阻代用，效果也不错，只是音质略差些。</FONT></P>
<P>&nbsp;</P>
<P><FONT FACE="宋体">7、输入和输出变压器：目前较难购买，但是收音机功放部分可以选择无变压器的电路，例如OTL电路，也可以直接用集成电路代替功放，LM386、TDA2822等都很好。<br/>
</FONT></P>
</DIV>
]]></description>
            <author>tbsoft工作室</author>
            <category>计算机硬件和电子</category>
            <comments>http://blog.sina.com.cn/s/blog_4b3e3da6010009j1.html#comment</comments>
            <pubDate>Fri, 04 May 2007 13:58:37 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_4b3e3da6010009j1.html</guid>
        </item>
        <item>
            <title>Windows汇编语言简明教程——基础篇（3）</title>
            <link>http://blog.sina.com.cn/s/blog_4b3e3da601000957.html</link>
            <description><![CDATA[<DIV>
<P><B>5</B>
<B>显示一个窗口的</B><B>Win32</B><B>汇编语言程序</B></P>
<P>&nbsp;</P>
<P>
学习过Win32SDK编程的读者编写的第一个应用程序可能就是显示一个窗口的C语言程序，笔者也编写了这样一个C语言程序，源程序如下（SDKSIMPL.c）：</P>
<P>&nbsp;</P>
<P>#include &lt;windows.h&gt;</P>
<P>#include &lt;tchar.h&gt;</P>
<P>&nbsp;</P>
<P>static TCHAR szWindowClass[]=_T("SIMPLE");</P>
<P>&nbsp;</P>
<P>LRESULT CALLBACK WndProc(HWND hWnd,</P>
<P>&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp; &nbsp;UINT
message,</P>
<P>&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp; &nbsp;WPARAM
wParam,</P>
<P>&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp; &nbsp;LPARAM
lParam);</P>
<P>&nbsp;</P>
<P>int WINAPI WinMain(HINSTANCE hInstance,</P>
<P>&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp; HINSTANCE hPrevInstance,</P>
<P>&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp; LPSTR lpCmdLine,</P>
<P>&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp; int nShowCmd)</P>
<P>{</P>
<P>&nbsp;&nbsp; WNDCLASSEX wcex;</P>
<P>&nbsp;&nbsp; HWND hWnd;</P>
<P>&nbsp;&nbsp; MSG msg;</P>
<P>&nbsp;</P>
<P>&nbsp;&nbsp; if(!hPrevInstance)</P>
<P>&nbsp;&nbsp; {</P>
<P>&nbsp;&nbsp;
&nbsp;&nbsp;
wcex.cbSize=sizeof(WNDCLASSEX);</P>
<P>&nbsp;&nbsp;
&nbsp;&nbsp;
wcex.style=CS_HREDRAW|CS_VREDRAW;</P>
<P>&nbsp;&nbsp;
&nbsp;&nbsp;
wcex.lpfnWndProc=(WNDPROC)WndProc;</P>
<P>&nbsp;&nbsp;
&nbsp;&nbsp; wcex.cbClsExtra=0;</P>
<P>&nbsp;&nbsp;
&nbsp;&nbsp; wcex.cbWndExtra=0;</P>
<P>&nbsp;&nbsp;
&nbsp;&nbsp; wcex.hInstance=hInstance;</P>
<P>&nbsp;&nbsp;
&nbsp;&nbsp;
wcex.hIcon=LoadIcon(NULL,IDI_APPLICATION);</P>
<P>&nbsp;&nbsp;
&nbsp;&nbsp;
wcex.hCursor=LoadCursor(NULL,IDC_ARROW);</P>
<P>&nbsp;&nbsp;
&nbsp;&nbsp;
wcex.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);</P>
<P>&nbsp;&nbsp;
&nbsp;&nbsp; wcex.lpszMenuName=NULL;</P>
<P>&nbsp;&nbsp;
&nbsp;&nbsp;
wcex.lpszClassName=szWindowClass;</P>
<P>&nbsp;&nbsp;
&nbsp;&nbsp;
wcex.hIconSm=LoadIcon(NULL,IDI_APPLICATION);</P>
<P>&nbsp;</P>
<P>&nbsp;&nbsp;
&nbsp;&nbsp;
if(!RegisterClassEx(&amp;wcex))</P>
<P>&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp; return FALSE;</P>
<P>&nbsp;&nbsp; }</P>
<P>&nbsp;</P>
<P>&nbsp;&nbsp;
hWnd=CreateWindow(szWindowClass,</P>
<P>&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp; &nbsp;
_T("Simple"),</P>
<P>&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp; &nbsp;
WS_OVERLAPPEDWINDOW,</P>
<P>&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp; &nbsp;
CW_USEDEFAULT,</P>
<P>&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp; &nbsp;
CW_USEDEFAULT,</P>
<P>&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp; &nbsp;
CW_USEDEFAULT,</P>
<P>&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp; &nbsp;
CW_USEDEFAULT,</P>
<P>&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp; &nbsp; NULL,</P>
<P>&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp; &nbsp; NULL,</P>
<P>&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp; &nbsp;
hInstance,</P>
<P>&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp; &nbsp; NULL);</P>
<P>&nbsp;</P>
<P>&nbsp;&nbsp; if(hWnd==NULL) return
FALSE;</P>
<P>&nbsp;</P>
<P>&nbsp;&nbsp;
ShowWindow(hWnd,nShowCmd);</P>
<P>&nbsp;&nbsp; UpdateWindow(hWnd);</P>
<P>&nbsp;</P>
<P>&nbsp;&nbsp;
while(GetMessage(&amp;msg,NULL,0,0))</P>
<P>&nbsp;&nbsp; {</P>
<P>&nbsp;&nbsp;
&nbsp;&nbsp;
TranslateMessage(&amp;msg);</P>
<P>&nbsp;&nbsp;
&nbsp;&nbsp; DispatchMessage(&amp;msg);</P>
<P>&nbsp;&nbsp; }</P>
<P>&nbsp;</P>
<P>&nbsp;&nbsp; return msg.wParam;</P>
<P>}</P>
<P>&nbsp;</P>
<P>LRESULT CALLBACK WndProc(HWND hWnd,</P>
<P>&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp; &nbsp;UINT
message,</P>
<P>&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp; &nbsp;WPARAM
wParam,</P>
<P>&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp; &nbsp;LPARAM
lParam)</P>
<P>{</P>
<P>&nbsp;&nbsp; HDC hDC;</P>
<P>&nbsp;&nbsp; PAINTSTRUCT ps;</P>
<P>&nbsp;</P>
<P>&nbsp;&nbsp; switch(message)</P>
<P>&nbsp;&nbsp; {</P>
<P>&nbsp;&nbsp; case WM_PAINT:</P>
<P>&nbsp;&nbsp;
&nbsp;&nbsp;
hDC=BeginPaint(hWnd,&amp;ps);</P>
<P>&nbsp;&nbsp;
&nbsp;&nbsp; EndPaint(hWnd,&amp;ps);</P>
<P>&nbsp;</P>
<P>&nbsp;&nbsp;
&nbsp;&nbsp; break;</P>
<P>&nbsp;</P>
<P>&nbsp;&nbsp; case WM_DESTROY:</P>
<P>&nbsp;&nbsp;
&nbsp;&nbsp; PostQuitMessage(0);</P>
<P>&nbsp;</P>
<P>&nbsp;&nbsp;
&nbsp;&nbsp; break;</P>
<P>&nbsp;</P>
<P>&nbsp;&nbsp; default:</P>
<P>&nbsp;&nbsp;
&nbsp;&nbsp; return
DefWindowProc(hWnd,message,wParam,lParam);</P>
<P>&nbsp;&nbsp; }</P>
<P>&nbsp;</P>
<P>&nbsp;&nbsp; return 0;</P>
<P>}</P>
<P>&nbsp;</P>
<P>
现在笔者用Win32汇编语言程序实现本程序的功能，源程序如下（SDKSIMP1.asm）：</P>
<P>&nbsp;</P>
<P>.386</P>
<P>&nbsp;</P>
<P>.MODEL flat,stdcall</P>
<P>&nbsp;</P>
<P>OPTION CASEMAP:NONE</P>
<P>&nbsp;</P>
<P>INCLUDE \masm32\include\windows.inc</P>
<P>&nbsp;</P>
<P>INCLUDE \masm32\include\user32.inc</P>
<P>INCLUDE \masm32\include\gdi32.inc</P>
<P>INCLUDE \masm32\include\kernel32.inc</P>
<P>&nbsp;</P>
<P>INCLUDELIB \masm32\lib\user32.lib</P>
<P>INCLUDELIB \masm32\lib\gdi32.lib</P>
<P>INCLUDELIB \masm32\lib\kernel32.lib</P>
<P>&nbsp;</P>
<P>
WinMain&nbsp;&nbsp;&nbsp;&nbsp;
PROTO
stdcall,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
:HINSTANCE,:HINSTANCE,:LPSTR,:DWORD</P>
<P>&nbsp;</P>
<P>.STACK 4096</P>
<P>&nbsp;</P>
<P>.DATA</P>
<P>&nbsp;&nbsp;&nbsp;
WindowClass&nbsp;&nbsp;&nbsp;&nbsp;
BYTE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
'SIMPLE',0</P>
<P>&nbsp;&nbsp;&nbsp;
WindowTitle&nbsp;&nbsp;&nbsp;&nbsp;
BYTE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
'Simple',0</P>
<P>&nbsp;&nbsp;&nbsp;
hInst1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
HINSTANCE&nbsp;&nbsp; 0</P>
<P>&nbsp;&nbsp;&nbsp;
lpCmdLine1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
LPSTR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0</P>
<P>&nbsp;&nbsp;</P>
<P>.CODE</P>
<P>&nbsp;</P>
<P>_start:</P>
<P>&nbsp;&nbsp;&nbsp;
INVOKE&nbsp; GetModuleHandle,NULL</P>
<P>&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp;
hInst1,eax</P>
<P>&nbsp;&nbsp;&nbsp;
INVOKE&nbsp; GetCommandLine</P>
<P>&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp;
lpCmdLine1,eax</P>
<P>&nbsp;&nbsp;&nbsp;
INVOKE&nbsp;
WinMain,hInst1,NULL,lpCmdLine1,SW_SHOWDEFAULT</P>
<P>&nbsp;&nbsp;&nbsp;
INVOKE&nbsp; ExitProcess,eax&nbsp;</P>
<P>&nbsp;</P>
<P>
WinMain&nbsp;&nbsp;&nbsp;&nbsp;
PROC&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;hInst:HINSTANCE,hPrevInst:HINSTANCE,lpCmdLine:LPSTR,nShowCmd:DWORD</P>
<P>&nbsp;&nbsp;&nbsp;
LOCAL&nbsp;&nbsp; wcex:WNDCLASSEX</P>
<P>&nbsp;&nbsp;&nbsp;
LOCAL&nbsp;&nbsp; hWnd:HWND</P>
<P>&nbsp;&nbsp;&nbsp;
LOCAL&nbsp;&nbsp; msg:MSG</P>
<P>&nbsp;</P>
<P>&nbsp;&nbsp;&nbsp;
.IF&nbsp;&nbsp;&nbsp;&nbsp;
!hPrevInst</P>
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp;
wcex.cbSize,SIZEOF WNDCLASSEX</P>
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp;
wcex.style,CS_HREDRAW or CS_VREDRAW</P>
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp;
wcex.cbClsExtra,0</P>
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp;
wcex.cbWndExtra,0</P>
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp;
wcex.lpfnWndProc,OFFSET WndProc</P>
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp;
eax,hInst</P>
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp;
wcex.hInstance,eax</P>
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
INVOKE&nbsp; LoadIcon,0,IDI_APPLICATION</P>
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp;
wcex.hIcon,eax</P>
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
INVOKE&nbsp; LoadCursor,0,IDC_ARROW</P>
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp;
wcex.hCursor,eax</P>
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp;
wcex.hbrBackground,COLOR_WINDOW+1</P>
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp;
wcex.lpszMenuName,NULL</P>
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp;
wcex.lpszClassName,OFFSET WindowClass</P>
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
INVOKE&nbsp; LoadIcon,0,IDI_APPLICATION</P>
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp;
wcex.hIconSm,eax</P>
<P>&nbsp;</P>
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
INVOKE&nbsp; RegisterClassEx,ADDR wcex</P>
<P>&nbsp;</P>
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.IF&nbsp;&nbsp;&nbsp;&nbsp;
!eax</P>
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp;
eax,FALSE</P>
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ret</P>
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.ENDIF</P>
<P>&nbsp;&nbsp;&nbsp;
.ENDIF</P>
<P>&nbsp;</P>
<P>&nbsp;&nbsp;&nbsp;
INVOKE&nbsp; CreateWindowEx,0,ADDR WindowClass,ADDR
WindowTitle,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,0,0,hInst,NULL</P>
<P>&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp;
hWnd,eax</P>
<P>&nbsp;</P>
<P>&nbsp;&nbsp;&nbsp;
.IF&nbsp;&nbsp;&nbsp;&nbsp;
!eax</P>
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp;
eax,FALSE</P>
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ret</P>
<P>&nbsp;&nbsp;&nbsp;
.ENDIF</P>
<P>&nbsp;</P>
<P>&nbsp;&nbsp;&nbsp;
INVOKE&nbsp; ShowWindow,hWnd,nShowCmd</P>
<P>&nbsp;&nbsp;&nbsp;
INVOKE&nbsp; UpdateWindow,hWnd</P>
<P>&nbsp;</P>
<P>&nbsp;&nbsp;&nbsp;
.WHILE&nbsp; TRUE</P>
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
INVOKE&nbsp; GetMessage,ADDR msg,0,0,0</P>
<P>&nbsp;</P>
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.BREAK&nbsp;
.IF&nbsp;&nbsp;&nbsp;&nbsp;
!eax</P>
<P>&nbsp;</P>
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
INVOKE&nbsp; TranslateMessage,ADDR msg</P>
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
INVOKE&nbsp; DispatchMessage,ADDR msg</P>
<P>&nbsp;&nbsp;&nbsp; .ENDW</P>
<P>&nbsp;</P>
<P>&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp;
eax,msg.wParam</P>
<P>&nbsp;&nbsp;&nbsp; ret</P>
<P>WinMain ENDP</P>
<P>&nbsp;</P>
<P>
WndProc&nbsp;&nbsp;&nbsp;&nbsp;
PROC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
hWnd:HWND,message:UINT,wParam:DWORD,lParam:DWORD</P>
<P>&nbsp;&nbsp;&nbsp;
LOCAL&nbsp;&nbsp; hDC:HDC</P>
<P>&nbsp;&nbsp;&nbsp;
LOCAL&nbsp;&nbsp; ps:PAINTSTRUCT</P>
<P>&nbsp;</P>
<P>&nbsp;&nbsp;&nbsp;
.IF&nbsp;&nbsp;&nbsp;&nbsp;
message==WM_PAINT</P>
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
INVOKE&nbsp; BeginPaint,hWnd,ADDR ps</P>
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp;
hDC,eax</P>
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
INVOKE&nbsp; EndPaint,hWnd,ADDR ps</P>
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
xor&nbsp;&nbsp;&nbsp;&nbsp;
eax,eax</P>
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ret</P>
<P>&nbsp;&nbsp;&nbsp; .ELSEIF
message==WM_DESTROY</P>
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
INVOKE&nbsp; PostQuitMessage,0</P>
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
xor&nbsp;&nbsp;&nbsp;&nbsp;
eax,eax</P>
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ret</P>
<P>&nbsp;&nbsp;&nbsp; .ELSE</P>
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
INVOKE&nbsp;
DefWindowProc,hWnd,message,wParam,lParam</P>
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ret</P>
<P>&nbsp;&nbsp;&nbsp;
.ENDIF</P>
<P>&nbsp;</P>
<P>&nbsp;&nbsp;&nbsp;
xor&nbsp;&nbsp;&nbsp;&nbsp;
eax,eax</P>
<P>&nbsp;&nbsp;&nbsp; ret</P>
<P>WndProc ENDP</P>
<P>&nbsp;</P>
<P>END _start</P>
<P>&nbsp;</P>
<P>
本程序汇编链接后，运行生成的SDKSIMP1.exe文件，屏幕上将显示出一个标准的窗口，窗口的标题是“Simple”。</P>
<P>&nbsp;</P>
<P>学习过Win32
SDK编程的读者都知道，Win32应用程序的入口点是WinMain函数，实际上WinMain函数是被C语言的初始化和结束代码调用的，Win32应用程序的真正入口点和DOS应用程序没有什么区别，都是在可执行文件（Win32的可执行文件称为PE文件）的文件头中指定的应用程序起始点。Win32汇编语言没有C语言的初始化和结束代码，必须自己编写初始化和结束代码调用WinMain函数（过程），WinMain函数的原型是：</P>
<P>&nbsp;</P>
<P>int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE
hPrevInstance,LPSTR lpCmdLine,int nShowCmd);</P>
<P>&nbsp;</P>
<P>WinMain函数有4个参数，分别是：</P>
<P>&nbsp;</P>
<P>
hInstance：应用程序当前实例的句柄，可以通过调用GetModuleHandle函数获取；</P>
<P>
hPrevInstance：应用程序前一个实例的句柄，Win32中当前地址空间中不会有应用程序的其他实例在运行，该参数通常设置为NULL（提供该参数只是便于移植Win16应用程序源程序）；</P>
<P>lpCmdLine：命令行参数，可以通过调用GetCommandLine函数获取；</P>
<P>
nShowCmd：主窗口的显示状态，可以设置成SW_SHOWDEFAULT（缺省状态）。</P>
<P>&nbsp;</P>
<P>本程序的初始化和结束代码如下：</P>
<P>&nbsp;</P>
<P>&nbsp;&nbsp;&nbsp;
INVOKE&nbsp; GetModuleHandle,NULL</P>
<P>&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp;
hInst1,eax</P>
<P>&nbsp;&nbsp;&nbsp;
INVOKE&nbsp; GetCommandLine</P>
<P>&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp;
lpCmdLine1,eax</P>
<P>&nbsp;&nbsp;&nbsp;
INVOKE&nbsp;
WinMain,hInst1,NULL,lpCmdLine1,SW_SHOWDEFAULT</P>
<P>&nbsp;&nbsp;&nbsp;
INVOKE&nbsp; ExitProcess,eax&nbsp;</P>
<P>&nbsp;</P>
<P>
可见本程序的初始化和结束代码很简单，只是调用GetModuleHandle函数获取应用程序当前实例的句柄，调用GetCommandLine函数获取命令行参数，然后调用WinMain函数（过程），WinMain函数返回后调用ExitProcess函数终止程序的执行。</P>
<P>&nbsp;</P>
<P>
将本程序与C语言程序比较，可以看出程序结构十分相似。本程序大量使用了MASM
6.0以上版本的汇编器提供的结构化汇编语言伪指令，有效地实现了选择结构和循环结构，大大简化了Win32汇编语言编程，使得汇编语言程序并不比C语言麻烦多少。</P>
<P>&nbsp;</P>
<P><B>6</B> <B>结束语</B></P>
<P>&nbsp;</P>
<P>
本教程读者阅读到这里，可能会莞尔一笑，原来Win32汇编语言也不过就是这么回事呀，确实，MASM
6.0以上版本的汇编器提供的结构化汇编语言伪指令大大简化了Win32汇编语言编程。</P>
<P>&nbsp;</P>
<P>
汇编语言确实比较复杂，但是Win32汇编语言对某些特殊方面有高级语言不可比拟的优势，如果你正在开发Win32加密加壳软件，或者你正在想编程清除Win32病毒，或者你正在编写对速度要求较高的程序（例如大量计算的程序），不妨试试Win32汇编语言——或许正能够解决你的燃眉之急。本教程还简单介绍了Win32应用程序的执行机制，相信会对你探索Win32底层有一定的帮助。</P>
<P>&nbsp;</P>
</DIV>
]]></description>
            <author>tbsoft工作室</author>
            <category>计算机软件</category>
            <comments>http://blog.sina.com.cn/s/blog_4b3e3da601000957.html#comment</comments>
            <pubDate>Fri, 13 Apr 2007 02:53:13 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_4b3e3da601000957.html</guid>
        </item>
        <item>
            <title>Windows汇编语言简明教程——基础篇（2）</title>
            <link>http://blog.sina.com.cn/s/blog_4b3e3da601000956.html</link>
            <description><![CDATA[<DIV>
<P><B>4</B> <B>非结构化的汇编语言和结构化的汇编语言</B></P>
<P>&nbsp;</P>
<P>
读者可能一听到“汇编语言”四个字就觉得十分头疼！汇编语言给人的第一印象就是一大堆难以看懂又不直观的指令，而且不结构化，大量的标号、无条件跳转指令（JMP）和条件跳转指令让你难以看懂程序；过程（或者函数）的调用参数传递又不直观，要么直接使用寄存器传递参数，不符合结构化程序设计原则；要么使用堆栈传递参数，又不能有效地检验参数类型……想必Win32汇编语言更麻烦吧！</P>
<P>&nbsp;</P>
<P>
汇编语言不是结构化编程语言，但不等于汇编语言不能进行结构化编程，MASM
6.0以上版本的汇编器对汇编语言进行了扩展，提供了很多结构化汇编语言伪指令，可以方便地实现汇编语言结构化程序设计，当你看完本教程以后，你可能会感觉到：Win32汇编语言并不比C语言麻烦多少。（如果读者看不懂本教程中的汇编语言源程序，可以对照MASM32中有关结构化汇编语言语法的帮助看）</P>
<P>&nbsp;</P>
<P>
下面是一个使用非结构化的汇编语言编写的Win32汇编语言程序，本程序没有使用结构化汇编语言伪指令。本程序的功能很简单：在屏幕上显示一个消息框。本程序只调用了两个Win32
API：MessageBox和ExitProcess，源程序如下（MSGBOX1.asm）：</P>
<P>&nbsp;</P>
<P>.386</P>
<P>&nbsp;</P>
<P>.MODEL flat,stdcall</P>
<P>&nbsp;</P>
<P>OPTION CASEMAP:NONE</P>
<P>&nbsp;</P>
<P>INCLUDE \masm32\include\windows.inc</P>
<P>&nbsp;</P>
<P>INCLUDE \masm32\include\kernel32.inc</P>
<P>INCLUDE \masm32\include\user32.inc</P>
<P>&nbsp;</P>
<P>INCLUDELIB \masm32\lib\kernel32.lib</P>
<P>INCLUDELIB \masm32\lib\user32.lib</P>
<P>&nbsp;</P>
<P>.STACK 4096</P>
<P>&nbsp;</P>
<P>.DATA</P>
<P>&nbsp;&nbsp;&nbsp;
MsgText&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
BYTE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
'This is a simple Win32 application!',0</P>
<P>&nbsp;&nbsp;&nbsp;
MsgTitle&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
BYTE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
'Information',0</P>
<P>&nbsp;&nbsp;</P>
<P>.CODE</P>
<P>&nbsp;</P>
<P>_start:</P>
<P>&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp;
eax,MB_ICONINFORMATION</P>
<P>&nbsp;&nbsp;&nbsp;
or&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
eax,MB_OK</P>
<P>&nbsp;&nbsp;&nbsp;
push&nbsp;&nbsp;&nbsp; eax</P>
<P>&nbsp;&nbsp;&nbsp;
lea&nbsp;&nbsp;&nbsp;&nbsp;
eax,MsgTitle</P>
<P>&nbsp;&nbsp;&nbsp;
push&nbsp;&nbsp;&nbsp; eax</P>
<P>&nbsp;&nbsp;&nbsp;
lea&nbsp;&nbsp;&nbsp;&nbsp;
eax,MsgText</P>
<P>&nbsp;&nbsp;&nbsp;
push&nbsp;&nbsp;&nbsp; eax</P>
<P>&nbsp;&nbsp;&nbsp;
xor&nbsp;&nbsp;&nbsp;&nbsp;
eax,eax</P>
<P>&nbsp;&nbsp;&nbsp;
push&nbsp;&nbsp;&nbsp; eax</P>
<P>&nbsp;&nbsp;&nbsp;
call&nbsp;&nbsp;&nbsp;
MessageBox</P>
<P>&nbsp;&nbsp;&nbsp;
xor&nbsp;&nbsp;&nbsp;&nbsp;
eax,eax</P>
<P>&nbsp;&nbsp;&nbsp;
push&nbsp;&nbsp;&nbsp; eax</P>
<P>&nbsp;&nbsp;&nbsp;
call&nbsp;&nbsp;&nbsp;
ExitProcess</P>
<P>&nbsp;</P>
<P>END _start</P>
<P>&nbsp;</P>
<P>使用Quick Editor汇编链接本程序的基本方法如下（下同）：</P>
<P>&nbsp;</P>
<P>1、启动MASM32中的Quick
Editor，编辑汇编语言源程序，将上述汇编语言源程序全部输入或者粘贴，然后选择“File”—“Save
As”菜单项将汇编语言源程序保存到一个目录下，注意该目录必须与MASM32的安装目录位于同一个驱动器上，汇编语言源程序文件的扩展名应该是“asm”。</P>
<P>&nbsp;</P>
<P>2、选择Quick Editor中的“Project”—“Build
All”菜单项即可汇编链接汇编语言源程序。汇编链接时会显示一个命令提示符窗口，如果没有出现错误或者警告信息，说明汇编链接成功，将会生成相应的OBJ文件和EXE文件。</P>
<P>&nbsp;</P>
<P>3、选择Quick Editor中的“Project”—“Run
Program”菜单项即可运行汇编链接后生成的EXE文件。</P>
<P>&nbsp;</P>
<P>
本程序汇编链接后，运行生成的MSGBOX1.exe文件，屏幕上将显示出一个消息框，消息框的标题是“Information”，消息框中显示的字符串是“This
is a simple Win32 application!”。</P>
<P>&nbsp;</P>
<P>Win32汇编语言源程序开始处通常有3条伪指令：</P>
<P>&nbsp;</P>
<P>.386</P>
<P>&nbsp;</P>
<P>.MODEL flat,stdcall</P>
<P>&nbsp;</P>
<P>OPTION CASEMAP:NONE</P>
<P>&nbsp;</P>
<P>
指示汇编器汇编80386指令，并使用平坦内存模式（Win32内存模式）和stdcall函数调用方式（Win32标准函数调用方式），标识符区分大小写。源程序中使用.STACK、.DATA和.CODE伪指令分别定义堆栈、数据和代码。</P>
<P>&nbsp;</P>
<P>Win32
API通常使用stdcall函数调用方式，stdcall函数调用方式中，函数的参数使用堆栈传递，函数调用之前参数自右向左进栈，函数调用返回时同时将参数出栈，函数返回值通过eax寄存器返回。</P>
<P>&nbsp;</P>
<P>
因此，程序中调用MessageBox函数和ExitProcess函数之前，都使用push指令将参数自右向左进栈，然后使用call指令直接调用Win32
API的入口点地址。本程序调用MessageBox函数显示消息框以后，调用ExitProcess函数终止程序的执行，ExitProcess函数的作用是终止当前进程。这种直接使用汇编语言指令调用Win32
API开发Win32应用程序的方式直接对应CPU的指令代码，最接近CPU硬件，但并不直观，编写程序一不小心就容易出错。</P>
<P>&nbsp;</P>
<P>
下面是一个与上述程序等价的Win32汇编语言源程序，使用了结构化汇编语言伪指令，实现了结构化的汇编语言。源程序如下（MSGBOX2.asm）：</P>
<P>&nbsp;</P>
<P>.386</P>
<P>&nbsp;</P>
<P>.MODEL flat,stdcall</P>
<P>&nbsp;</P>
<P>OPTION CASEMAP:NONE</P>
<P>&nbsp;</P>
<P>INCLUDE \masm32\include\windows.inc</P>
<P>&nbsp;</P>
<P>INCLUDE \masm32\include\kernel32.inc</P>
<P>INCLUDE \masm32\include\user32.inc</P>
<P>&nbsp;</P>
<P>INCLUDELIB \masm32\lib\kernel32.lib</P>
<P>INCLUDELIB \masm32\lib\user32.lib</P>
<P>&nbsp;</P>
<P>.STACK 4096</P>
<P>&nbsp;</P>
<P>.DATA</P>
<P>&nbsp;&nbsp;&nbsp;
MsgText&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
BYTE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
'This is a simple Win32 application!',0</P>
<P>&nbsp;&nbsp;&nbsp;
MsgTitle&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
BYTE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
'Information',0</P>
<P>&nbsp;&nbsp;</P>
<P>.CODE</P>
<P>&nbsp;</P>
<P>_start:</P>
<P>&nbsp;&nbsp;&nbsp;
INVOKE&nbsp; MessageBoxA,0,ADDR MsgText,ADDR
MsgTitle,MB_ICONINFORMATION or MB_OK</P>
<P>&nbsp;&nbsp;&nbsp;
INVOKE&nbsp; ExitProcess,0</P>
<P>&nbsp;</P>
<P>END _start</P>
<P>&nbsp;</P>
<P>
本程序汇编链接后，运行生成的MSGBOX2.exe文件，结果与MSGBOX1.exe文件的运行结果完全相同。</P>
<P>&nbsp;</P>
<P>
在MASM32提供的包含文件中，使用PROTO伪指令定义函数原型（与C语言中函数原型的定义相似），可以定义函数名、调用方式和参数，例如在user32.inc包含文件中定义MessageBox的函数原型：</P>
<P>&nbsp;</P>
<P>MessageBoxA PROTO :DWORD,:DWORD,:DWORD,:DWORD</P>
<P>MessageBox equ &lt;MessageBoxA&gt;</P>
<P>&nbsp;</P>
<P>
INVOKE伪指令调用由PROTO伪指令定义的函数，可以方便地传递参数和检查参数类型。包含文件中使用PROTO伪指令定义API函数，MSGBOX2.asm文件中使用INVOKE伪指令调用API函数，极其简单，连一条汇编语言指令也没有用到，可见MASM
6.0以上版本的汇编器提供的结构化汇编语言伪指令大大简化了Win32汇编语言编程。</P>
<P>&nbsp;</P>
</DIV>
]]></description>
            <author>tbsoft工作室</author>
            <category>计算机软件</category>
            <comments>http://blog.sina.com.cn/s/blog_4b3e3da601000956.html#comment</comments>
            <pubDate>Fri, 13 Apr 2007 02:51:14 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_4b3e3da601000956.html</guid>
        </item>
        <item>
            <title>Windows汇编语言简明教程——基础篇（1）</title>
            <link>http://blog.sina.com.cn/s/blog_4b3e3da601000955.html</link>
            <description><![CDATA[<DIV>
<P><B>（</B><B>2007</B><B>新版）</B></P>
<P>&nbsp;</P>
<P>（V0.01）</P>
<P>&nbsp;</P>
<P>作者：TBsoft Software Studio（2007）</P>
<P>&nbsp;</P>
<P><B>作者前言</B></P>
<P>&nbsp;</P>
<P>
<B>本教程是笔者</B><B>1999</B><B>年</B><B>12</B><B>月草作《</B><B>Win32</B><B>汇编语言教程》的新版，目前国内关于</B><B>Win32</B><B>汇编语言的优秀书籍是罗云彬所著，电子工业出版社出版的《</B><B>Windows</B><B>环境下</B><B>32</B><B>位汇编语言程序设计》，本教程较为简单，仅作为初学者的参考资料使用。</B></P>
<P>&nbsp;</P>
<P>
<B>目前</B><B>Windows</B><B>已经从</B><B>Win32</B><B>发展到了</B><B>Win64</B><B>，因此本教程名称改为《</B><B>Windows</B><B>汇编语言简明教程》，但本教程的基础篇仍然只涉及</B><B>Win32</B><B>汇编语言。</B></P>
<P>&nbsp;</P>
<P><B>1</B> <B>引言</B></P>
<P>&nbsp;</P>
<P>
Windows（Win32）应用程序一般使用C语言编程，但是在某些需要进行底层编程的情况下，例如Win32应用程序执行机制分析、加密解密、反病毒等底层编程，或者对于某些速度要求较高的程序，需要使用汇编语言（甚至机器语言）直接开发Win32应用程序。Win32应用程序虽然和其他32位应用程序（例如32位保护模式DOS程序）一样可以使用386汇编语言和保护模式编程，但是Win32应用程序的执行机制与其他32位应用程序有一定的差别，例如消息循环、动态链接等，Win32汇编语言也有其特殊的编程方式。</P>
<P>&nbsp;</P>
<P>
为了使大家能对Win32汇编语言的基本编程方法有一定的了解，笔者草拟了本教程，旨在抛砖引玉，如果本教程能够带领你走进Win32汇编语言世界，笔者心愿足矣。</P>
<P>&nbsp;</P>
<P>
使用本教程，要求读者具有80386汇编语言和C语言开发Win32应用程序（Win32
SDK编程）的基础。</P>
<P>&nbsp;</P>
<P><B>2</B>
<B>进行</B><B>Win32</B><B>汇编语言编程的基本软件</B></P>
<P>&nbsp;</P>
<P>进行Win32汇编语言编程，通常需要使用MASM
6.11以上版本的汇编器，以及Win32
SDK中的资源编译器（RC.EXE）和链接器（LINK.EXE），还需要用到Win32
SDK中的引入库文件（KERNEL32.LIB、USER32.LIB、GDI32.LIB等）。</P>
<P>&nbsp;</P>
<P>
目前进行Win32汇编语言编程，准备开发环境较为简单的方法是使用MASM32软件包，可以使用MASM32
V7或者MASM32 V8版本。</P>
<P>&nbsp;</P>
<P>
MASM32软件包中已经包括了进行Win32汇编语言编程所需的各种软件，包括MASM
6.1x、资源编译器、链接器、包含文件、引入库等，还包括一个可以作为简单的汇编语言集成环境（IDE）的编辑器Quick
Editor（QEDITOR.EXE），这样在汇编链接Win32汇编语言源程序时可以无需使用命令行工具，很适合初学者使用。</P>
<P>&nbsp;</P>
<P>
安装MASM32很简单，运行安装文件INSTALL.EXE，选择安装目标驱动器然后确认安装即可完成安装，MASM32通常安装在安装目标驱动器根目录下的masm32子目录中。</P>
<P>&nbsp;</P>
<P>使用Quick
Editor，可以直接使用资源管理器或者在命令提示符（MS-DOS方式）下运行MASM32安装目录下的QEDITOR.EXE文件。</P>
<P>&nbsp;</P>
<P><B>3 Win32</B><B>汇编语言与</B><B>Win32 API</B></P>
<P>&nbsp;</P>
<P>
使用Win32汇编语言开发Win32应用程序，使用的应用程序框架仍然是Win32
SDK编程的应用程序框架，只不过将通常使用的C语言换成80386汇编语言。</P>
<P>&nbsp;</P>
<P>显然，使用Win32汇编语言开发Win32应用程序同样存在调用Win32
API的问题。和使用C语言进行Win32
SDK编程需要WINDOWS.H头文件以及其他头文件定义常量、数据结构和Win32
API一样，Win32汇编语言也需要包含文件（INC文件）定义常量、数据结构和Win32
API。</P>
<P>&nbsp;</P>
<P>
MASM32中提供了使用Win32汇编语言开发Win32应用程序所需的包含文件，通常位于MASM32安装目录下的INCLUDE子目录中。Win32汇编语言源程序应该包含WINDOWS.INC文件，如果需要调用的Win32
API位于Win32系统DLL中，例如KERNEL32.DLL、USER32.DLL、GDI32.DLL等，还需要包含对应的包含文件，例如kernel32.inc、user32.inc、gdi32.inc等。</P>
<P>&nbsp;</P>
<P>Win32
API中，凡是与字符或者字符串有关的API都有两种不同的类型：ANSI字符集API和Unicode字符集API，分别对应ANSI字符和Unicode字符，相应与字符或者字符串相关的数据结构也有两种不同的类型。Windows
NT（包括Windows 2000／XP及其以后版本）支持两种类型的API，Windows
9x通常只支持ANSI字符集API。ANSI字符集API或者数据结构的实际名称以API或者数据结构名称末尾加字符“A”表示，Unicode字符集API或者数据结构的实际名称以API或者数据结构名称末尾加字符“W”表示，例如GetModuleHandle函数相应的ANSI字符集函数实际名称为GetModuleHandleA，相应的Unicode字符集函数实际名称为GetModuleHandleW。</P>
<P>&nbsp;</P>
<P>在Win32
SDK中的WINDOWS.H头文件和其他头文件中，凡是与字符有关的API或者数据结构都有两种不同的定义，并使用条件编译和宏定义实现自动根据当前字符集使用对应的API或者数据结构定义。例如，下列程序段是WINBASE.H头文件中对GetModuleHandle函数的定义：</P>
<P>&nbsp;</P>
<P>WINBASEAPI</P>
<P>HMODULE</P>
<P>WINAPI</P>
<P>GetModuleHandleA(</P>
<P>&nbsp;&nbsp;&nbsp; LPCSTR
lpModuleName</P>
<P>&nbsp;&nbsp;&nbsp; );</P>
<P>WINBASEAPI</P>
<P>HMODULE</P>
<P>WINAPI</P>
<P>GetModuleHandleW(</P>
<P>&nbsp;&nbsp;&nbsp; LPCWSTR
lpModuleName</P>
<P>&nbsp;&nbsp;&nbsp; );</P>
<P>#ifdef UNICODE</P>
<P>#define GetModuleHandle&nbsp; GetModuleHandleW</P>
<P>#else</P>
<P>#define GetModuleHandle&nbsp; GetModuleHandleA</P>
<P>#endif // !UNICODE</P>
<P>&nbsp;</P>
<P>
但是在MASM32提供的包含文件中，API或者数据结构名称标识符通常只对应ANSI字符集API或者数据结构，例如GetModuleHandle函数只对应GetModuleHandleA函数，这样可以保证在Windows
9x和Windows
NT下的兼容性，如果读者需要改用Unicode字符集API或者数据结构，则需明确使用Unicode字符集API或者数据结构，例如调用GetModuleHandleW函数，初学者可以暂时不去管它。</P>
<P>&nbsp;</P>
</DIV>
]]></description>
            <author>tbsoft工作室</author>
            <category>计算机软件</category>
            <comments>http://blog.sina.com.cn/s/blog_4b3e3da601000955.html#comment</comments>
            <pubDate>Fri, 13 Apr 2007 02:45:05 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_4b3e3da601000955.html</guid>
        </item>
        <item>
            <title>谈谈中医理论中实质上合理的部分</title>
            <link>http://blog.sina.com.cn/s/blog_4b3e3da6010008oy.html</link>
            <description><![CDATA[<DIV>
<P><FONT STYLE="FONT-SIZE: 16px">1、中医理论是怎么来的？</FONT></P>
<P>&nbsp;</P>
<P><FONT STYLE="FONT-SIZE: 16px">中医理论是古代中国人在与疾病作斗争的过程之中取得经验总结出来的，但是当时古代中国人的认识水平有限，只能用一套近似玄学的理论，例如借用（注意：是借用）阴阳五行学说来描述中医理论。而不是先凭空从阴阳五行学说发展出中医理论，再在这套理论的指导下使用中医中药治疗疾病。中医理论的核心也不是阴阳五行学说，中医理论的本质是一种经验理论，只是使用了近似玄学的理论来表示。</FONT></P>
<P>&nbsp;</P>
<P><FONT STYLE="FONT-SIZE: 16px">例如：古代中国人发现，很多疾病有其共性，例如很多感染性疾病都有局部红、肿、热、痛的感觉（症状），像急性扁桃体炎、急性咽喉炎、皮肤软组织感染等，于是就把这些感染性疾病，借用阴阳五行学说，统称为“火”，或者“热”、“毒”，例如中医说“口腔咽喉诸症皆为火”。治疗上，古代中国人发现，一些天然药物及其复方能够消除局部红、肿、热、痛的症状，治疗这些疾病，那么就把这些药物称为“去火药”或者“清热解毒药”，例如金银花、连翘等。</FONT></P>
<P>&nbsp;</P>
<P><FONT STYLE="FONT-SIZE: 16px">中医说“清热解毒药”能“去火”这就是经验理论，不是先用阴阳五行理论得出“水克火”的理论，再以这个理论为指导去找与“水”有关的天然药物来治疗，须知大部分“清热解毒药”的原植物生长环境与“水”根本没有关系，倒是与“水”有很大关系的“酒”是中医所说的“大热”药物。</FONT></P>
<P>&nbsp;</P>
<P><FONT STYLE="FONT-SIZE: 16px">因此，可以说明：中医理论的本质是一种经验理论。</FONT></P>
<P>&nbsp;</P>
<P><FONT STYLE="FONT-SIZE: 16px">2、中医理论中有没有实质上合理的部分？</FONT></P>
<P>&nbsp;</P>
<P><FONT STYLE="FONT-SIZE: 16px">现代医学证实了，“火”通常就相当于细菌或者病毒感染引起的感染性疾病，“清热解毒药”通常都具有抗菌、抗病毒、抗炎、退热、对抗细菌毒素、调节免疫力等一种或者多种作用，用来治疗感染性疾病，一般来说是正确的（当然，不否认有不正确的地方）。</FONT></P>
<P>&nbsp;</P>
<P><FONT STYLE="FONT-SIZE: 16px">因此，可以说明：来自经验的中医理论虽然用近似玄学的理论表示，但是存在实质上合理的部分。</FONT></P>
<P>&nbsp;</P>
<P><FONT STYLE="FONT-SIZE: 16px">再举几个例子：</FONT></P>
<P>&nbsp;</P>
<P><FONT STYLE="FONT-SIZE: 16px">第一个例子：《新编中医外科学》（李彪，龚景林主编，1999年11月第1版）P163论中医所说“走黄与内陷”，即现代医学所说的因为局部皮肤软组织感染导致的全身化脓性感染，中医理论是这样解释的：</FONT></P>
<P>&nbsp;</P>
<P><FONT STYLE="FONT-SIZE: 16px">本病或因疔疮火毒炽盛，走散入营，内攻脏腑；或因生疽毒疮疡，正不胜邪，毒不外泄，反陷入里，客于营血，内传脏腑所致。</FONT></P>
<P>&nbsp;</P>
<P><FONT STYLE="FONT-SIZE: 16px">现代医学的解释：</FONT></P>
<P>&nbsp;</P>
<P><FONT STYLE="FONT-SIZE: 16px">全身化脓性感染与中医“疔疮走黄”、“疽毒内陷”相似，是指病原菌由局部病灶侵入人体血液循环，并在其内生长繁殖或产生毒素，引起严重的全身感染症状或中毒症状的情况。</FONT></P>
<P>&nbsp;</P>
<P><FONT STYLE="FONT-SIZE: 16px">可见：中医理论解释和现代医学解释虽说法不一，但中医理论解释在实质上是合理的。</FONT></P>
<P>&nbsp;</P>
<P><FONT STYLE="FONT-SIZE: 16px">下一个例子来自“新语丝”网站“立此存照”专栏中的“中医骗子”专栏中的一篇文章《中医基础理论的哲学批判》中的一段：</FONT></P>
<P>&nbsp;</P>
<P><FONT STYLE="FONT-SIZE: 16px">在证的研究方面：上海医科大学对肾阳虚的研究就是一个很好的例子。他们发现肾阳虚者尿中17羟皮质醇低下，又进一步发现肾阳虚者不同于阿狄森氏病的低下反应而是延迟反应最终揭示了肾阳虚患者和老年人内环境反馈调节的缺失，并以补肾药以药验证获得了满意的结果。最终指出肾阳虚证的本质主要是下丘脑功能失调。必须指出这种证的研究只有在认识到尚未被现代医学理论所认识的联系以及尚未有更好的治疗方法时才有意义。这种证可由不同原因引起，在不同的条件下存在，补肾方药只是对一定条件下的肾阳虚证起作用，而对另一些条件下引起的则未必有效。如：补肾方药可用于生理性衰老引起的下丘脑功能失调，而其它原因引起时，则未必有效。</FONT></P>
<P>&nbsp;</P>
<P><FONT STYLE="FONT-SIZE: 16px">可见，中医理论得出的肾阳虚证使用补肾药治疗这一点，已经被现代医学证实在实质上有合理的部分。</FONT></P>
<P>&nbsp;</P>
<P><FONT STYLE="FONT-SIZE: 16px">最后一个例子来自《科学蒙难集》一书第29章：</FONT></P>
<P>&nbsp;</P>
<P><FONT STYLE="FONT-SIZE: 16px">明末医家吴又可（1592—1672年？）在行医中深入观察瘟疫流行的特点，研究病变的规律，认真总结前人的经验教训，善于创造性思维，摆脱中医学术上的僵化思想，坚决反对理论脱离实际的风气，他经过系统地总结，提出了瘟疫病因学上的新观点——戾气说，并著成中国医学史上关于传染病理论的专著《瘟疫论》。吴又可在书中对病因、发病症状、传变过程和治疗原则及用药等方面进行了系统的论述，发展了中医对流行性急性传染病的认识，并且把瘟病、瘟疫和伤寒截然分开。</FONT></P>
<P>&nbsp;</P>
<P><FONT STYLE="FONT-SIZE: 16px">吴又可之前的历代医家，都是从天气的异常来理解热性病的病源，而他经过长期的探索后独树己见，在书中写道：“夫瘟疫之为病，非风、非寒、非湿，乃天地间别有一种异气所感”，明确指出：“伤寒与中暑，感天地之常气，疫者感天地之疠气”，“然此气无象可见，况无声复无臭”，精辟地概括出来戾气的特点，即人的肉眼看不见但存在于自然界的物质。而且指出它有多种类型，“众人有触之者，各随其气而为诸病焉”，不同戾气所引起的瘟疫种类各异，揭示了戾气具有特异性。另外，论述了戾气具有偏重性特点，“牛病而羊不病，鸡病而鸭不病，人病而禽兽不病”，吴又可的这一论述与现代医学中的“种属感受性”或者“种属免疫性”概念是很接近的。戾气说把中医外科的某些疾病，如疔疮、痈疽、丹毒等的病源归结为杂气。吴又可提出戾气说的时代，既没有显微镜，也没有微生物学说，中医水平还处于经验升学阶段，他提出的这一比较科学的设想，比西方医学家李斯特（L.Lister，1827—1912年）关于外科术后感染是微生物所致的发现，早二百多年。所以说，吴又可的戾气说是中医传染病学上的卓越贡献，是中医学术思想上继承与突破相结合的成果。</FONT></P>
<P>&nbsp;</P>
<P><FONT STYLE="FONT-SIZE: 16px">吴又可的“戾气说”中的“戾气”相当于现代医学所说的“传染病病原体”，虽然仍然用近似玄学的理论表示，但它的实际意义和现代医学是相当接近的，实质上基本是合理的。这也说明中医理论并非仅限于千年前的几本古书，历代中医（包括现代中医）都在发展着中医理论。</FONT></P>
<P>&nbsp;</P>
<P><FONT STYLE="FONT-SIZE: 16px">3、中医理论是“伪科学”吗？</FONT></P>
<P>&nbsp;</P>
<P><FONT STYLE="FONT-SIZE: 16px">中医理论的本质是一种经验理论，限于当时的认识水平，只能用一套近似玄学的理论来表示，不应该否认中医理论存在实质上合理的部分。</FONT></P>
<P>&nbsp;</P>
<P><FONT STYLE="FONT-SIZE: 16px">即使在现代科学中，限于认识水平，不得不使用假想的理论来解释实验现象的情况仍然存在，同样不能说这些假想的理论实质上是完全不合理的。例如：有机化学中的“共振论”就是个典型的例子，20世纪30年代，著名化学家鲍林为了解决描述苯分子这类分子结构的问题，提出了“共振论”的概念，即：对于一个无法用经典结构式准确描述分子结构的分子，分子结构可以用几个假想结构式（极限式）的“共振”来表示。因为“共振论”直观易懂，定性描述很有效，实用上很有价值，目前仍然在广泛使用。随便翻开一本现在的中国或者国外的有机化学教材，都能看到“共振论”的广泛使用。因为“共振论”中的极限式是假想结构式，20世纪60年代在前苏联和中国曾经遭到过批判，被扣上“唯心主义”的帽子，为此还连累了不少科学家。“共振论”目前的广泛使用也证明了“共振论”存在实质上合理的部分，现在也没有人说“共振论”是“伪科学”。</FONT></P>
<P>&nbsp;</P>
<P><FONT STYLE="FONT-SIZE: 16px">同样，不能因为中医理论用近似玄学的理论表示，就否认来自经验的中医理论存在实质上合理的部分，给中医理论扣上“伪科学”的帽子。</FONT></P>
<P>&nbsp;</P>
<P><FONT STYLE="FONT-SIZE: 16px">4、现代医学如何吸收中医理论中实质上合理的部分？</FONT></P>
<P>&nbsp;</P>
<P><FONT STYLE="FONT-SIZE: 16px">中医理论来自经验，近似玄学理论，其科学性没有在层次上超越现代医学（西医）理论的可能性，但是中医理论有实质上合理的部分，这些部分并未完全被现代医学理论吸收，发展成现代医学理论。</FONT></P>
<P>&nbsp;</P>
<P><FONT STYLE="FONT-SIZE: 16px">现代医学吸收中医理论中实质上合理的部分，不是要保留中医理论近似玄学的表示方式，因为这种表示方式是落后的，不准确的，甚至是错误的，而是要把中医理论中实质上合理的部分发展成为现代医学形式。例如前面讲到的上海医科大学对肾阳虚的研究就是一个很好的例子，这也是笔者认为的中西医结合的正确之道。</FONT></P>
<P>&nbsp;</P>
</DIV>
]]></description>
            <author>tbsoft工作室</author>
            <category>化学化工和医药</category>
            <comments>http://blog.sina.com.cn/s/blog_4b3e3da6010008oy.html#comment</comments>
            <pubDate>Sat, 17 Mar 2007 12:22:56 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_4b3e3da6010008oy.html</guid>
        </item>
        <item>
            <title>部分开放源代码／免费开发资源</title>
            <link>http://blog.sina.com.cn/s/blog_4b3e3da6010006ev.html</link>
            <description><![CDATA[<DIV>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US">

</SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><B STYLE="mso-bidi-font-weight: normal"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
（截止到</SPAN></B>

<B STYLE="mso-bidi-font-weight: normal"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">2006</FONT></SPAN></B><B STYLE="mso-bidi-font-weight: normal"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">年</SPAN></B><B STYLE="mso-bidi-font-weight: normal"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">10</FONT></SPAN></B><B STYLE="mso-bidi-font-weight: normal"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">月</SPAN></B><B STYLE="mso-bidi-font-weight: normal"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">9</FONT></SPAN></B><B STYLE="mso-bidi-font-weight: normal"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">日</SPAN></B><B STYLE="mso-bidi-font-weight: normal"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）</SPAN></B></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">&nbsp;</FONT></SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><B STYLE="mso-bidi-font-weight: normal"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
这些资源可用于系统底层开发和工控程序开发</SPAN></B></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">&nbsp;</FONT></SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><B STYLE="mso-bidi-font-weight: normal"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">FreeDOS</FONT></SPAN></B><B STYLE="mso-bidi-font-weight: normal"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">（</SPAN></B><B STYLE="mso-bidi-font-weight: normal"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">V1.0</FONT></SPAN></B><B STYLE="mso-bidi-font-weight: normal"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</SPAN></B><B STYLE="mso-bidi-font-weight: normal"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">2006</FONT></SPAN></B><B STYLE="mso-bidi-font-weight: normal"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">年</SPAN></B><B STYLE="mso-bidi-font-weight: normal"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">9</FONT></SPAN></B><B STYLE="mso-bidi-font-weight: normal"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">月</SPAN></B><B STYLE="mso-bidi-font-weight: normal"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">3</FONT></SPAN></B><B STYLE="mso-bidi-font-weight: normal"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">日</SPAN></B><B STYLE="mso-bidi-font-weight: normal"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">正式发布）：</SPAN></B><B STYLE="mso-bidi-font-weight: normal"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><A HREF="http://www.freedos.org/"><FONT FACE="Times New Roman">http://www.freedos.org/</FONT></A></SPAN></B></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">&nbsp;</FONT></SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">100%</FONT></SPAN><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">兼容</SPAN><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">MS-DOS</FONT></SPAN><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，开源软件。</SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">&nbsp;</FONT></SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><B STYLE="mso-bidi-font-weight: normal"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">DJGPP</FONT></SPAN></B><B STYLE="mso-bidi-font-weight: normal"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">（</SPAN></B><B STYLE="mso-bidi-font-weight: normal"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">V2.03</FONT></SPAN></B><B STYLE="mso-bidi-font-weight: normal"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，网站最近一次更新</SPAN></B><B STYLE="mso-bidi-font-weight: normal"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">2003</FONT></SPAN></B><B STYLE="mso-bidi-font-weight: normal"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">年</SPAN></B><B STYLE="mso-bidi-font-weight: normal"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">5</FONT></SPAN></B><B STYLE="mso-bidi-font-weight: normal"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">月）：</SPAN></B><B STYLE="mso-bidi-font-weight: normal"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><A HREF="http://www.delorie.com/djgpp/"><FONT FACE="Times New Roman">http://www.delorie.com/djgpp/</FONT></A></SPAN></B></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">&nbsp;</FONT></SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">DOS</FONT></SPAN><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">下的</SPAN><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">32</FONT></SPAN><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">位</SPAN><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">C</FONT></SPAN><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">／</SPAN><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">C++</FONT></SPAN><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">编译器，可代替</SPAN><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">WATCOM C</FONT></SPAN><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">／</SPAN><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">C++</FONT></SPAN><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">&nbsp;</FONT></SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><B STYLE="mso-bidi-font-weight: normal"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">NASM</FONT></SPAN></B><B STYLE="mso-bidi-font-weight: normal"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">（</SPAN></B><B STYLE="mso-bidi-font-weight: normal"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">V0.98.39</FONT></SPAN></B><B STYLE="mso-bidi-font-weight: normal"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</SPAN></B><B STYLE="mso-bidi-font-weight: normal"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">2005</FONT></SPAN></B><B STYLE="mso-bidi-font-weight: normal"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">年</SPAN></B><B STYLE="mso-bidi-font-weight: normal"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">1</FONT></SPAN></B><B STYLE="mso-bidi-font-weight: normal"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">月</SPAN></B><B STYLE="mso-bidi-font-weight: normal"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">15</FONT></SPAN></B><B STYLE="mso-bidi-font-weight: normal"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">日</SPAN></B><B STYLE="mso-bidi-font-weight: normal"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">发布）：</SPAN></B><B STYLE="mso-bidi-font-weight: normal"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><A HREF="http://sourceforge.net/projects/nasm"><FONT FACE="Times New Roman">http://sourceforge.net/projects/nasm</FONT></A></SPAN></B></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">&nbsp;</FONT></SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
支持</SPAN><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">IA-32</FONT></SPAN><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">汇编语言的多平台汇编器，可代替</SPAN><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">MASM</FONT></SPAN><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，目前还不支持</SPAN><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">x86-64</FONT></SPAN><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">&nbsp;</FONT></SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><B STYLE="mso-bidi-font-weight: normal"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">MASM 8.0</FONT></SPAN></B><B STYLE="mso-bidi-font-weight: normal"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">：</SPAN></B></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><B STYLE="mso-bidi-font-weight: normal"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><A HREF="http://www.microsoft.com/downloads/details.aspx?familyid=7A1C9DA0-0510-44A2-B042-7EF370530C64&amp;displaylang=en">
<FONT FACE="Times New Roman">http://www.microsoft.com/downloads/details.aspx?familyid=7A1C9DA0-0510-44A2-B042-7EF370530C64&amp;displaylang=en</FONT></A></SPAN></B></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">&nbsp;</FONT></SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
最新版</SPAN><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">MASM</FONT></SPAN><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，支持</SPAN><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">x86-64</FONT></SPAN><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">（</SPAN><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">AMD64</FONT></SPAN><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">），可免费下载，但需安装</SPAN><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">Visual C++ 2005 Express
Edition</FONT></SPAN><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">（也可免费下载）才能安装。</SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">&nbsp;</FONT></SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">&nbsp;</FONT></SPAN></P>
</DIV>
]]></description>
            <author>tbsoft工作室</author>
            <category>计算机软件</category>
            <comments>http://blog.sina.com.cn/s/blog_4b3e3da6010006ev.html#comment</comments>
            <pubDate>Tue, 31 Oct 2006 15:41:51 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_4b3e3da6010006ev.html</guid>
        </item>
        <item>
            <title>杂谈中医药</title>
            <link>http://blog.sina.com.cn/s/blog_4b3e3da6010006et.html</link>
            <description><![CDATA[<DIV>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
最近网上掀起了一轮中西医之争的热潮，笔者原专业是有机化工，既非学医也非学药，只是业余对药理学和药物化学有兴趣，对中西医也稍有了解，下面仅就笔者的一点粗浅看法谈谈笔者对中医药的一点看法：</SPAN><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US">

</SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">&nbsp;</FONT></SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">1</FONT></SPAN><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、中医理论有没有其科学性？</SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">&nbsp;</FONT></SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
中医是一种经验医学，中医理论是古代中国人在与疾病作斗争的过程之中取得经验总结出来的，中医理论本质是一种经验理论，由于当时人们的认识水平所限，只能用一套近似玄学的理论，例如阴阳五行学说，“浮沉表里、四气五味”等来描述中医理论，并主要使用天然药物（包括植物、动物和矿物，但主要是植物）作为中药来完成治疗，中医理论和中药是密不可分的，经中医理论诊断后必须使用中药来治疗，中药的分类和作用也以中医理论为指导。</SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">&nbsp;</FONT></SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
中医理论近似玄学理论，笔者看来，其科学性没有在层次上超越现代医学（西医）理论的可能性，但是中医理论本质是一种经验理论，自然应该有实质上合理的部分，虽然这些合理的部分仍然用近似玄学的理论来描述，但是这些合理的部分是否都已经经过了现代医学理论的证实，并发展成了现代医学理论？现在还远未到下定论的时候。</SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">&nbsp;</FONT></SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
认为中医理论完全是伪科学，完全否认来自经验的中医理论中有实质上合理的部分，显然是不科学的，仅从中医理论对中药的分类和作用举一个简单的例子：中医所说的“清热解毒”药物，对应西医一般就相当于抗感染药物，例如常用的几种清热解毒药的主要有效成分都已基本确定：金银花的主要有效成分——异绿原酸，黄芩的主要有效成分——黄芩苷，连翘的主要有效成分——连翘酯苷，黄连的主要有效成分——黄连素（小檗碱），这些成分都具有明显的抗菌或者抗病毒作用。</SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">&nbsp;</FONT></SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">2</FONT></SPAN><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、中药到底有没有疗效？</SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">&nbsp;</FONT></SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
笔者认为：中药，特别是某些经典传统方剂，对某些疾病的疗效是确切的，很多中药和方剂的治疗作用已被肯定，其药理作用已经得到现代医学证实，而且从这些方剂中能发掘出很多对现代医学有重要意义的内容，例如：</SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">&nbsp;</FONT></SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
抗疟特效药青蒿素：属于抗寄生虫药物，世界上公认的由中国人发现其化学结构的药物，从中医“青蒿截疟”的记载中发现，是从中药青蒿（作为中药的青蒿实际上是黄花蒿）中提取的有过氧基团的倍半萜内酯，对疟原虫有很强的杀灭作用，特别是可以杀灭对常用抗疟药氯喹有耐药性（抗药性）的恶性疟原虫，目前正在非洲抗氯喹恶性疟疾流行区发挥着重要的治疗作用，挽救了许多人的生命。</SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">&nbsp;</FONT></SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
但是传统中药方剂中的青蒿煎剂类，对疟疾效果不佳，因为青蒿素本身是不稳定的过氧化物，煎煮过程中很容易破坏，只有用鲜青蒿捣汁服用对疟疾才有较好的效果，这一点显然属于现代医学（药学）理论，是传统中医理论的层次不可能发现的，这也说明中医理论的科学性没有在层次上超越现代医学理论的可能性。中医治疟的另一种重要药物是常山，这也已经被现代医学证实，常山的抗疟有效成分常山乙碱的抗疟能力是奎宁的数十倍，可惜毒性较大，目前作为抗疟药没有进一步发展。</SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">&nbsp;</FONT></SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
驱绦虫传统方剂槟榔和南瓜子：也属于抗寄生虫药物，现代医学证实：槟榔的主要有效成分槟榔碱和南瓜子的主要有效成分南瓜子氨酸都具有良好驱绦虫作用，二药合用可使绦虫全虫麻痹瘫痪而排出，其效果不次于西药氯硝柳胺（灭绦灵）和吡喹酮。</SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">&nbsp;</FONT></SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
抗肠道感染药物黄连素（小檗碱）：属于抗感染药物，小檗碱是中药黄连的主要有效成分，现代医学证实小檗碱有肯定的抗菌作用，常用于治疗菌痢和肠炎，其疗效一直很稳定。</SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">&nbsp;</FONT></SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
双黄连注射液：双花（金银花）、黄芩和连翘的复方制剂，可用于急性上呼吸道感染，其疗效不次于西药青霉素等抗生素，而且具有抗菌和抗病毒双重作用，改变了“中医不能治急症”的传统看法。</SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">&nbsp;</FONT></SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
再例如清开灵注射液（传统中药方剂安宫牛黄丸的改进剂型）可用于高热昏迷的抢救，野菊花栓对慢性盆腔炎的有效率可达</SPAN><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">84</FONT></SPAN><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">％（西药仅为</SPAN><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">75.9</FONT></SPAN><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">％），速效救心丸抢救心绞痛疗效不次于硝酸甘油，京万红烫伤药膏治疗烧烫伤可以做到小面积三度烧伤无需植皮，从中药青黛中提取的靛玉红治疗慢性粒细胞白血病的疗效不次于西药白消安，至于云南白药治疗跌打损伤，季德胜蛇药片抢救蛇伤等更是中外驰名了。</SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">&nbsp;</FONT></SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
从以上例子可以看出：很多中药和方剂对某些疾病的疗效是确切的，这点不容否认。</SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">&nbsp;</FONT></SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">3</FONT></SPAN><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、中药有没有毒副作用？</SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">&nbsp;</FONT></SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
现在铺天盖地的中药广告常声称“纯中药制剂，无任何毒副作用”，这点笔者明确认为：这是极端不科学的，中药不仅可能有毒副作用，某些中药还可能有严重的毒副作用；中药不仅可能有容易发现的急性毒副作用，还可能有不容易发现的慢性毒副作用。</SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">&nbsp;</FONT></SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
正规的中医，都承认中药有毒副作用，很多中药是有毒，有大毒甚至有剧毒的，例如乌头、钩吻、斑蝥、砒霜等中药都有大毒甚至剧毒。前面提到的抗疟药常山的毒性早就被中医认识到，明确记载常山有致吐的毒副作用。目前中医已经明确丹药，例如红升丹（氧化汞）、白降丹（氯化汞）等只能作为外用，杀菌消毒，类似西医使用红药水（汞溴红，有机汞制剂）对伤口消毒，实际上也就是明确了丹药的毒性。</SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">&nbsp;</FONT></SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
一些中药和方剂，在改变剂型后，还可能产生原来意想不到的毒副作用，例如双黄连注射液、清开灵注射液等中药注射剂，由于中药复方成分极其复杂，静脉注射导致不良反应甚至过敏性休克的报道并不少见。</SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">&nbsp;</FONT></SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
传统中医虽然通过几千年的“人体实验”，确定了部分中药的急性毒副作用和部分慢性毒副作用，但是现代医学还发现了传统中医难以发现的一些中药慢性毒副作用，例如中药关木通含有的马兜铃酸可能导致肾损害，引起肾功能衰竭，因此如果用关木通代替木通配制中成药“龙胆泻肝丸”，服用后就可能导致肾损害。传统中医这一点上受到中医理论认识所限不可能发现关木通的这种慢性毒副作用，这种慢性毒副作用就显得更加危险，所以，对中药的慢性毒副作用绝不可以掉以轻心。</SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">&nbsp;</FONT></SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
现代医学应该尽早明确各种中药和方剂的药理毒理，避免未被发现的中药毒副作用对人体的伤害。</SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">&nbsp;</FONT></SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">4</FONT></SPAN><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、笔者认为的中西医结合的正确途径</SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">&nbsp;</FONT></SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
综上所述，中医理论来自经验，近似玄学理论，其科学性没有在层次上超越现代医学（西医）理论的可能性，但是中医理论有实质上合理的部分，这些部分并未完全经过现代医学理论的证实，发展成现代医学理论。</SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">&nbsp;</FONT></SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
很多中药和方剂对某些疾病的疗效是确切的，但是作用机制远未到十分清楚的程度，例如双黄连注射液在体外抗菌活性微弱，远不能同青霉素、头孢菌素等抗生素相提并论，但其临床疗效却不次于青霉素等抗生素，而且往往对抗生素无效病例有效；再例如黄连素虽然有肯定的抗菌作用，但如果和抗生素对比，也只能说有微弱的抑菌作用，但其治疗菌痢和肠炎的疗效一直十分肯定，不次于痢特灵（呋喃唑酮）等西药。这些中药和方剂治疗感染性疾病的机制很可能并非单纯抗菌，这就有待现代医学进一步分析了，或许可以找到一种新的思路。要知道目前西医细菌对抗生素的耐药性问题已经成为一个世界难题，</SPAN><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">40</FONT></SPAN><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">年前，用青霉素治疗淋病有效率几乎是</SPAN><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">100</FONT></SPAN><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">％，可是目前</SPAN><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">60</FONT></SPAN><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">％以上的淋病双球菌对青霉素都有耐药性；治疗耐甲氧西林金葡菌（</SPAN><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">MRSA</FONT></SPAN><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）的感染，目前一般只能使用万古霉素，但是耐万古霉素肠球菌（</SPAN><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">VRE</FONT></SPAN><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）早已出现，耐万古霉素金葡菌（</SPAN><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">VRSA</FONT></SPAN><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）亦有耳闻，</SPAN><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">VRSA</FONT></SPAN><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的真正出现或许只是早晚的问题。人们研制抗生素和抗菌药物的速度可能远远比不上细菌耐药性发展的速度，单纯依靠抗菌治疗感染性疾病的思路是否应该有所改变呢？我们敢说现代医学真正了解中药和方剂治疗感染性疾病的机制吗？</SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">&nbsp;</FONT></SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
对于未被发现的中药毒副作用，现代医学则应该认真研究，避免对人体不必要的伤害。</SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">&nbsp;</FONT></SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN STYLE="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
笔者认为的中西医结合，不是要让中西医理论并行，而是应该吸收中医理论中合理的部分到现代医学中，特别是研究中药和方剂的作用机制以及药理毒理，取其精华，去其糟粕，最终发展成现代医学理论，这样中医才能走向科学化和现代化，最终走向未来。</SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN LANG="EN-US" STYLE="FONT-SIZE: 12pt" XML:LANG="EN-US"><FONT FACE="Times New Roman">&nbsp;</FONT></SPAN></P>
</DIV>
]]></description>
            <author>tbsoft工作室</author>
            <category>化学化工和医药</category>
            <comments>http://blog.sina.com.cn/s/blog_4b3e3da6010006et.html#comment</comments>
            <pubDate>Tue, 31 Oct 2006 14:57:11 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_4b3e3da6010006et.html</guid>
        </item>
        <item>
            <title>欢迎光临TBsoft工作室的BLOG</title>
            <link>http://blog.sina.com.cn/s/blog_4b3e3da6010006ef.html</link>
            <description><![CDATA[TBsoft工作室的BLOG正式开张<br/>
<br/>
TBsoft工作室的BLOG地址：<A HREF="http://blog.sina.com.cn/u/1262370214">http://blog.sina.com.cn/u/1262370214</A><br/>

<br/>
<br/>
<br/>
TBsoft工作室的主题：<br/>
<br/>
计算机软件<br/>
计算机硬件和电子<br/>
化学化工和医药<br/>
<br/>
以及与各种科学研究和工程技术相关的主题。<br/>
<br/>
]]></description>
            <author>tbsoft工作室</author>
            <comments>http://blog.sina.com.cn/s/blog_4b3e3da6010006ef.html#comment</comments>
            <pubDate>Mon, 30 Oct 2006 15:35:36 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_4b3e3da6010006ef.html</guid>
        </item>
    </channel>
</rss>
