﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-JACKY_ZZ[猫猫爱吃鱼]</title><link>http://www.cppblog.com/jackyxinli/</link><description>春风拂面两颊红，秋叶洒地一片金。
夏荷摇曳一身轻，冬雪覆盖大地银。</description><language>zh-cn</language><lastBuildDate>Thu, 23 Apr 2026 04:10:57 GMT</lastBuildDate><pubDate>Thu, 23 Apr 2026 04:10:57 GMT</pubDate><ttl>60</ttl><item><title>VC++/G++ 多态测试</title><link>http://www.cppblog.com/jackyxinli/archive/2019/11/28/217003.html</link><dc:creator>jacky_zz</dc:creator><author>jacky_zz</author><pubDate>Thu, 28 Nov 2019 03:05:00 GMT</pubDate><guid>http://www.cppblog.com/jackyxinli/archive/2019/11/28/217003.html</guid><wfw:comment>http://www.cppblog.com/jackyxinli/comments/217003.html</wfw:comment><comments>http://www.cppblog.com/jackyxinli/archive/2019/11/28/217003.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jackyxinli/comments/commentRss/217003.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jackyxinli/services/trackbacks/217003.html</trackback:ping><description><![CDATA[<div>base.h</div>
<div>
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #000000; ">#ifndef&nbsp;BASE_H<br />
</span><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; ">&nbsp;BASE_H</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #000000; ">#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">stdio.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;Base<br />
</span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #000000; ">{<br />
</span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">:<br />
</span><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;Base(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;val)&nbsp;:&nbsp;m_val(val)<br />
</span><span style="color: #008080; ">10</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br />
</span><span style="color: #008080; ">11</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Base::Base(int&nbsp;val)&nbsp;@&nbsp;0x%08X\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">);<br />
</span><span style="color: #008080; ">12</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080; ">13</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">14</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">virtual</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;say()<br />
</span><span style="color: #008080; ">15</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br />
</span><span style="color: #008080; ">16</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">void&nbsp;Base::say()&nbsp;@&nbsp;0x%08X\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">);<br />
</span><span style="color: #008080; ">17</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">val&nbsp;=&nbsp;%d\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;GetVal());<br />
</span><span style="color: #008080; ">18</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080; ">19</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">20</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">virtual</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">~</span><span style="color: #000000; ">Base()<br />
</span><span style="color: #008080; ">21</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br />
</span><span style="color: #008080; ">22</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Base::~Base()&nbsp;@&nbsp;0x%08X\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">);<br />
</span><span style="color: #008080; ">23</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080; ">24</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">25</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">protected</span><span style="color: #000000; ">:<br />
</span><span style="color: #008080; ">26</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;GetVal()&nbsp;{&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;m_val;&nbsp;}<br />
</span><span style="color: #008080; ">27</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">28</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">:<br />
</span><span style="color: #008080; ">29</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;m_val;<br />
</span><span style="color: #008080; ">30</span>&nbsp;<span style="color: #000000; ">};<br />
</span><span style="color: #008080; ">31</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">32</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">#endif</span></div>
</div>
<div></div>
<div>child.h</div>
<div>
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #000000; ">#ifndef&nbsp;CHILD_H<br />
</span><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; ">&nbsp;CHILD_H</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #000000; ">#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">stdio.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #000000; ">#include&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">base.h</span><span style="color: #000000; ">"</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;Child&nbsp;:&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;Base<br />
</span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #000000; ">{<br />
</span><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">:<br />
</span><span style="color: #008080; ">10</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;Child(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;val)&nbsp;:&nbsp;Base(val)<br />
</span><span style="color: #008080; ">11</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br />
</span><span style="color: #008080; ">12</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Child::Child(int&nbsp;val)&nbsp;@&nbsp;0x%08X\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">);<br />
</span><span style="color: #008080; ">13</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080; ">14</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">15</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;say()<br />
</span><span style="color: #008080; ">16</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br />
</span><span style="color: #008080; ">17</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">void&nbsp;Child::say()&nbsp;@&nbsp;0x%08X\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">);<br />
</span><span style="color: #008080; ">18</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">val&nbsp;=&nbsp;%d\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;GetVal());<br />
</span><span style="color: #008080; ">19</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080; ">20</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">21</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">~</span><span style="color: #000000; ">Child()<br />
</span><span style="color: #008080; ">22</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br />
</span><span style="color: #008080; ">23</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Child::~Child()&nbsp;@&nbsp;0x%08X\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">);<br />
</span><span style="color: #008080; ">24</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080; ">25</span>&nbsp;<span style="color: #000000; ">};<br />
</span><span style="color: #008080; ">26</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">27</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">#endif</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">28</span>&nbsp;<span style="color: #000000; "></span></div>
</div>
<div></div>
<div>main.cpp</div>
<div>
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080; ">&nbsp;&nbsp;1</span>&nbsp;<span style="color: #000000; ">#include&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">base.h</span><span style="color: #000000; ">"</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;&nbsp;2</span>&nbsp;<span style="color: #000000; ">#include&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">child.h</span><span style="color: #000000; ">"</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;&nbsp;3</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;&nbsp;4</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;test0();<br />
</span><span style="color: #008080; ">&nbsp;&nbsp;5</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;test();<br />
</span><span style="color: #008080; ">&nbsp;&nbsp;6</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;virfunc_call(Base&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #0000FF; ">base</span><span style="color: #000000; ">);<br />
</span><span style="color: #008080; ">&nbsp;&nbsp;7</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;&nbsp;8</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;test0()<br />
</span><span style="color: #008080; ">&nbsp;&nbsp;9</span>&nbsp;<span style="color: #000000; ">{<br />
</span><span style="color: #008080; ">&nbsp;10</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;src&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />
</span><span style="color: #008080; ">&nbsp;11</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;dst;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080; ">&nbsp;12</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;13</span>&nbsp;<span style="color: #000000; ">#ifdef&nbsp;WIN32<br />
</span><span style="color: #008080; ">&nbsp;14</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;dst&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;src;<br />
</span><span style="color: #008080; ">&nbsp;15</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">#else</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;16</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;asm&nbsp;(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">mov&nbsp;%1,&nbsp;%0\n\t</span><span style="color: #000000; ">"</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;17</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">add&nbsp;$1,&nbsp;%0</span><span style="color: #000000; ">"</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;18</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">=r</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;(dst)&nbsp;<br />
</span><span style="color: #008080; ">&nbsp;19</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">r</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;(src));<br />
</span><span style="color: #008080; ">&nbsp;20</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">#endif</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;21</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;22</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">dst=%d\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;dst);<br />
</span><span style="color: #008080; ">&nbsp;23</span>&nbsp;<span style="color: #000000; ">}<br />
</span><span style="color: #008080; ">&nbsp;24</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;25</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;test(Base&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #0000FF; ">base</span><span style="color: #000000; ">)<br />
</span><span style="color: #008080; ">&nbsp;26</span>&nbsp;<span style="color: #000000; ">{&nbsp;<br />
</span><span style="color: #008080; ">&nbsp;27</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;addr&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />
</span><span style="color: #008080; ">&nbsp;28</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;29</span>&nbsp;<span style="color: #000000; ">#ifdef&nbsp;WIN32<br />
</span><span style="color: #008080; ">&nbsp;30</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">[1]&nbsp;addr=0x%08X&nbsp;base=0x%P\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;addr,&nbsp;</span><span style="color: #0000FF; ">base</span><span style="color: #000000; ">);<br />
</span><span style="color: #008080; ">&nbsp;31</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">#else</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;32</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">[1]&nbsp;addr=0x%08X&nbsp;base=0x%08X\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;addr,&nbsp;</span><span style="color: #0000FF; ">base</span><span style="color: #000000; ">);<br />
</span><span style="color: #008080; ">&nbsp;33</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">#endif</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;34</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;35</span>&nbsp;<span style="color: #000000; ">#ifdef&nbsp;WIN32<br />
</span><span style="color: #008080; ">&nbsp;36</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;addr&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">((</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)</span><span style="color: #0000FF; ">base</span><span style="color: #000000; ">);<br />
</span><span style="color: #008080; ">&nbsp;37</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">#else</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;38</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;asm&nbsp;(<br />
</span><span style="color: #008080; ">&nbsp;39</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">movl&nbsp;%0,&nbsp;%1\n\t</span><span style="color: #000000; ">"</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;40</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">=r</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;(addr)<br />
</span><span style="color: #008080; ">&nbsp;41</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">r</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">base</span><span style="color: #000000; ">)<br />
</span><span style="color: #008080; ">&nbsp;42</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;);<br />
</span><span style="color: #008080; ">&nbsp;43</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">#endif</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;44</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;45</span>&nbsp;<span style="color: #000000; ">#ifdef&nbsp;WIN32<br />
</span><span style="color: #008080; ">&nbsp;46</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">[2]&nbsp;addr=0x%08X&nbsp;base=0x%P\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;addr,&nbsp;</span><span style="color: #0000FF; ">base</span><span style="color: #000000; ">);<br />
</span><span style="color: #008080; ">&nbsp;47</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">#else</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;48</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">[2]&nbsp;addr=0x%08X&nbsp;base=0x%08X\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;addr,&nbsp;</span><span style="color: #0000FF; ">base</span><span style="color: #000000; ">);<br />
</span><span style="color: #008080; ">&nbsp;49</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">#endif</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;50</span>&nbsp;<span style="color: #000000; ">}<br />
</span><span style="color: #008080; ">&nbsp;51</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;52</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;virfunc_call(Base&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #0000FF; ">base</span><span style="color: #000000; ">)<br />
</span><span style="color: #008080; ">&nbsp;53</span>&nbsp;<span style="color: #000000; ">{<br />
</span><span style="color: #008080; ">&nbsp;54</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #000000; ">*</span><span style="color: #000000; ">FUNC)();<br />
</span><span style="color: #008080; ">&nbsp;55</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;56</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">pAddrBase&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)</span><span style="color: #0000FF; ">base</span><span style="color: #000000; ">;<br />
</span><span style="color: #008080; ">&nbsp;57</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;addr&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)</span><span style="color: #0000FF; ">base</span><span style="color: #000000; ">;<br />
</span><span style="color: #008080; ">&nbsp;58</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">pVirtualFuncBase&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)(</span><span style="color: #000000; ">*</span><span style="color: #000000; ">pAddrBase);<br />
</span><span style="color: #008080; ">&nbsp;59</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;60</span>&nbsp;<span style="color: #000000; ">#ifdef&nbsp;WIN32<br />
</span><span style="color: #008080; ">&nbsp;61</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">\nvirfunc=0x%P\npAddrBase=0x%P\npVirtualFuncBase=0x%P\n\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;virfunc_call,&nbsp;pAddrBase,&nbsp;pVirtualFuncBase);<br />
</span><span style="color: #008080; ">&nbsp;62</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">#else</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;63</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">\nvirfunc=0x%08X\npAddrBase=0x%08X\npVirtualFuncBase=0x%08X\n\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;virfunc_call,&nbsp;pAddrBase,&nbsp;pVirtualFuncBase);<br />
</span><span style="color: #008080; ">&nbsp;64</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">#endif</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;65</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;66</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;FUNC&nbsp;func&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;reinterpret_cast</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">FUNC</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">(</span><span style="color: #000000; ">*</span><span style="color: #000000; ">pVirtualFuncBase);<br />
</span><span style="color: #008080; ">&nbsp;67</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;68</span>&nbsp;<span style="color: #000000; ">#ifdef&nbsp;WIN32<br />
</span><span style="color: #008080; ">&nbsp;69</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;__asm&nbsp;{<br />
</span><span style="color: #008080; ">&nbsp;70</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ecx,&nbsp;</span><span style="color: #0000FF; ">base</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;71</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080; ">&nbsp;72</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">#else</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;73</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;__asm__&nbsp;__volatile__(<br />
</span><span style="color: #008080; ">&nbsp;74</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">movl&nbsp;%0,&nbsp;%%ecx</span><span style="color: #000000; ">"</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;75</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:<br />
</span><span style="color: #008080; ">&nbsp;76</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">r</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">base</span><span style="color: #000000; ">)<br />
</span><span style="color: #008080; ">&nbsp;77</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:<br />
</span><span style="color: #008080; ">&nbsp;78</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;);<br />
</span><span style="color: #008080; ">&nbsp;79</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">#endif</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;80</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;81</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;func();<br />
</span><span style="color: #008080; ">&nbsp;82</span>&nbsp;<span style="color: #000000; ">}<br />
</span><span style="color: #008080; ">&nbsp;83</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;84</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;main(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;argc,&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">argv[])<br />
</span><span style="color: #008080; ">&nbsp;85</span>&nbsp;<span style="color: #000000; ">{<br />
</span><span style="color: #008080; ">&nbsp;86</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;Base&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">base1&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;nullptr,&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">base2&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;nullptr;<br />
</span><span style="color: #008080; ">&nbsp;87</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;88</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;base1&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Base(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br />
</span><span style="color: #008080; ">&nbsp;89</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;base1-&gt;say();</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">&nbsp;90</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;virfunc_call(base1);<br />
</span><span style="color: #008080; ">&nbsp;91</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;test(base1);</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">&nbsp;92</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;base1;<br />
</span><span style="color: #008080; ">&nbsp;93</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;94</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;base2&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Child(</span><span style="color: #000000; ">2</span><span style="color: #000000; ">);<br />
</span><span style="color: #008080; ">&nbsp;95</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;base2-&gt;say();</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">&nbsp;96</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;virfunc_call(base2);<br />
</span><span style="color: #008080; ">&nbsp;97</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;test(base2);</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">&nbsp;98</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;base2;<br />
</span><span style="color: #008080; ">&nbsp;99</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">100</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />
</span><span style="color: #008080; ">101</span>&nbsp;<span style="color: #000000; ">}</span></div>
</div>
<br/><br/>
<div>VC++</div>
<div>cl /DWIN32 main.cpp</div>
<br/><br/>
<div>G++</div>
<div>g++ -o main main.cpp</div>
<img src ="http://www.cppblog.com/jackyxinli/aggbug/217003.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jackyxinli/" target="_blank">jacky_zz</a> 2019-11-28 11:05 <a href="http://www.cppblog.com/jackyxinli/archive/2019/11/28/217003.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[ASM] 引导程序从磁盘上加载第二扇区后安装0x80中断并调用</title><link>http://www.cppblog.com/jackyxinli/archive/2015/01/08/209435.html</link><dc:creator>jacky_zz</dc:creator><author>jacky_zz</author><pubDate>Thu, 08 Jan 2015 06:34:00 GMT</pubDate><guid>http://www.cppblog.com/jackyxinli/archive/2015/01/08/209435.html</guid><wfw:comment>http://www.cppblog.com/jackyxinli/comments/209435.html</wfw:comment><comments>http://www.cppblog.com/jackyxinli/archive/2015/01/08/209435.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jackyxinli/comments/commentRss/209435.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jackyxinli/services/trackbacks/209435.html</trackback:ping><description><![CDATA[<strong>bootloader.asm</strong><br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;org&nbsp;</span><span style="color: #000000; ">0x7c00</span><span style="color: #000000; "><br />
start:<br />
&nbsp;&nbsp;&nbsp;&nbsp;jmp&nbsp;main_entry<br />
<br />
stack:<br />
&nbsp;&nbsp;&nbsp;&nbsp;times&nbsp;</span><span style="color: #000000; ">128</span><span style="color: #000000; ">&nbsp;db&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; "><br />
tos:<br />
&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; "><br />
<br />
main_entry:<br />
&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ax,&nbsp;cs<br />
&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ds,&nbsp;ax<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ax,&nbsp;stack<br />
&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ss,&nbsp;ax<br />
&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;sp,&nbsp;start<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;initialize&nbsp;es:bx,&nbsp;read&nbsp;data&nbsp;to&nbsp;</span><span style="color: #000000; ">0x0000</span><span style="color: #000000; ">:</span><span style="color: #000000; ">0x7e00</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ax,&nbsp;</span><span style="color: #000000; ">0x0000</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;es,&nbsp;ax<br />
&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;bx,&nbsp;</span><span style="color: #000000; ">0x7c00</span><span style="color: #000000; ">+</span><span style="color: #000000; ">0x200</span><span style="color: #000000; "><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ah,&nbsp;</span><span style="color: #000000; ">0x02</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;read&nbsp;function<br />
&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;al,&nbsp;</span><span style="color: #000000; ">0x01</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;read&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">&nbsp;sectors<br />
&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ch,&nbsp;</span><span style="color: #000000; ">0x00</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;cl,&nbsp;</span><span style="color: #000000; ">0x02</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;read&nbsp;from&nbsp;2nd&nbsp;section<br />
&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;dh,&nbsp;</span><span style="color: #000000; ">0x00</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;dl,&nbsp;</span><span style="color: #000000; ">0x80</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;read&nbsp;from&nbsp;1st&nbsp;hard&nbsp;disk<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0x13</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;jc&nbsp;.die<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;install&nbsp;interrupt&nbsp;</span><span style="color: #000000; ">0x80</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;</span><span style="color: #000000; ">0x7e00</span><span style="color: #000000; "><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;call&nbsp;interrupt&nbsp;</span><span style="color: #000000; ">0x80</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ax,&nbsp;msg1<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0x80</span><span style="color: #000000; "><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;call&nbsp;interrupt&nbsp;</span><span style="color: #000000; ">0x80</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ax,&nbsp;msg2<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0x80</span><span style="color: #000000; "><br />
<br />
.die:<br />
&nbsp;&nbsp;&nbsp;&nbsp;jmp&nbsp;$<br />
<br />
print_char:&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ah,&nbsp;</span><span style="color: #000000; ">0x0e</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0x10</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;ret<br />
<br />
msg1:&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Loading&nbsp;system&nbsp;<img src="http://www.cppblog.com/Images/dot.gif" alt="" /></span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0x0d</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0x0a</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; "><br />
msg2:&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Hello,&nbsp;World!</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0x0d</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0x0a</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; "><br />
crlf:&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;</span><span style="color: #000000; ">0x0d</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0x0a</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; "><br />
<br />
fill_zero:<br />
&nbsp;&nbsp;&nbsp;&nbsp;times&nbsp;</span><span style="color: #000000; ">510</span><span style="color: #000000; ">-</span><span style="color: #000000; ">($</span><span style="color: #000000; ">-</span><span style="color: #000000; ">$$)&nbsp;db&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; "><br />
<br />
magic:<br />
&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;</span><span style="color: #000000; ">0x55</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0xAA</span></div>
<br />
<strong>lib16.asm</strong><br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;org&nbsp;</span><span style="color: #000000; ">0x7e00</span><span style="color: #000000; "><br />
install_int:<br />
&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ax,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;es,&nbsp;ax<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ax,&nbsp;int_0x80<br />
&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;bx,&nbsp;</span><span style="color: #000000; ">0x80</span><span style="color: #000000; ">*</span><span style="color: #000000; ">4</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;word&nbsp;[es:bx],&nbsp;ax&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;ip<br />
&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;word&nbsp;[es:(bx</span><span style="color: #000000; ">+</span><span style="color: #000000; ">2</span><span style="color: #000000; ">)],&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;cs<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;ret<br />
<br />
int_0x80:<br />
&nbsp;&nbsp;&nbsp;&nbsp;pusha<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;si,&nbsp;ax<br />
&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ah,&nbsp;</span><span style="color: #000000; ">0x0e</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;al,&nbsp;[ds:si]<br />
<br />
.loop:<br />
&nbsp;&nbsp;&nbsp;&nbsp;cmp&nbsp;al,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;je&nbsp;.exit<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0x10</span><span style="color: #000000; "><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;inc&nbsp;si<br />
&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;al,&nbsp;[ds:si]<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;jmp&nbsp;.loop<br />
.exit:<br />
&nbsp;&nbsp;&nbsp;&nbsp;popa<br />
&nbsp;&nbsp;&nbsp;&nbsp;iret<br />
<br />
fill_zero:<br />
&nbsp;&nbsp;&nbsp;&nbsp;times&nbsp;</span><span style="color: #000000; ">512</span><span style="color: #000000; ">-</span><span style="color: #000000; ">($</span><span style="color: #000000; ">-</span><span style="color: #000000; ">$$)&nbsp;db&nbsp;</span><span style="color: #000000; ">0</span></div>
<br /><strong>结果图：</strong><br /><img alt="" src="http://www.cppblog.com/images/cppblog_com/jackyxinli/result.png" height="563" width="656" /><img src ="http://www.cppblog.com/jackyxinli/aggbug/209435.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jackyxinli/" target="_blank">jacky_zz</a> 2015-01-08 14:34 <a href="http://www.cppblog.com/jackyxinli/archive/2015/01/08/209435.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[ASM] 递归计算阶乘</title><link>http://www.cppblog.com/jackyxinli/archive/2014/12/28/209326.html</link><dc:creator>jacky_zz</dc:creator><author>jacky_zz</author><pubDate>Sun, 28 Dec 2014 13:08:00 GMT</pubDate><guid>http://www.cppblog.com/jackyxinli/archive/2014/12/28/209326.html</guid><wfw:comment>http://www.cppblog.com/jackyxinli/comments/209326.html</wfw:comment><comments>http://www.cppblog.com/jackyxinli/archive/2014/12/28/209326.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jackyxinli/comments/commentRss/209326.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jackyxinli/services/trackbacks/209326.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<div style="font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; width: 98%; border-bottom: #cccccc 1px solid; word-break: break-all; padding-bottom: 4px; padding-top: 4px; padding-left: 4px; border-left: #cccccc 1px solid; padding-right: 5px; background-color: #eeeeee"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;org&nbsp;100h<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;jmp&nbsp;start<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />stack:<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;</span><span style="color: #000000">256</span><span style="color: #000000">&nbsp;dup(</span><span style="color: #000000">0</span><span style="color: #000000">)<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />topofstack:<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />;&nbsp;add&nbsp;your&nbsp;code&nbsp;here<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />start:<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ax,&nbsp;cs<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ds,&nbsp;ax<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ss,&nbsp;ax<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;sp,&nbsp;topofstack<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ax,&nbsp;</span><span style="color: #000000">0x0003</span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;ax<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;f<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;ax<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;hlt<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />f:<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;bp<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;ax<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;bp,&nbsp;sp<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ax,&nbsp;[bp</span><span style="color: #000000">+</span><span style="color: #000000">6</span><span style="color: #000000">]<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;cmp&nbsp;ax,&nbsp;</span><span style="color: #000000">0x0001</span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;je&nbsp;exit<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;dec&nbsp;ax<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;ax<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;f<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;ax<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;mul&nbsp;[bp</span><span style="color: #000000">+</span><span style="color: #000000">6</span><span style="color: #000000">]<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />exit:<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;[bp</span><span style="color: #000000">+</span><span style="color: #000000">6</span><span style="color: #000000">],&nbsp;ax<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;ax<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;bp<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;ret</span></div>
<p>&nbsp;</p><img src ="http://www.cppblog.com/jackyxinli/aggbug/209326.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jackyxinli/" target="_blank">jacky_zz</a> 2014-12-28 21:08 <a href="http://www.cppblog.com/jackyxinli/archive/2014/12/28/209326.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[ASM] 打印指定地址的内存内容</title><link>http://www.cppblog.com/jackyxinli/archive/2014/12/26/209314.html</link><dc:creator>jacky_zz</dc:creator><author>jacky_zz</author><pubDate>Fri, 26 Dec 2014 08:09:00 GMT</pubDate><guid>http://www.cppblog.com/jackyxinli/archive/2014/12/26/209314.html</guid><wfw:comment>http://www.cppblog.com/jackyxinli/comments/209314.html</wfw:comment><comments>http://www.cppblog.com/jackyxinli/archive/2014/12/26/209314.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jackyxinli/comments/commentRss/209314.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jackyxinli/services/trackbacks/209314.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">main:<br />&nbsp;&nbsp;&nbsp;&nbsp;org&nbsp;</span><span style="color: #000000; ">0x0100</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;jmp&nbsp;start<br /><br />stack:<br />&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;</span><span style="color: #000000; ">256</span><span style="color: #000000; ">&nbsp;dup(</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br />tos:<br />&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; "><br /><br />start:<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ax,&nbsp;cs<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ds,&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ss,&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;sp,&nbsp;tos<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ax,&nbsp;end<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;bx,&nbsp;main<br />&nbsp;&nbsp;&nbsp;&nbsp;sub&nbsp;ax,&nbsp;bx<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;bx,&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;div&nbsp;bx<br />&nbsp;&nbsp;&nbsp;&nbsp;cmp&nbsp;dx,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;je&nbsp;next_step<br />&nbsp;&nbsp;&nbsp;&nbsp;inc&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />next_step:<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;bx,&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;si,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;di,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />.</span><span style="color: #000000; ">0</span><span style="color: #000000; ">:<br />&nbsp;&nbsp;&nbsp;&nbsp;cmp&nbsp;di,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;je&nbsp;.</span><span style="color: #000000; ">1</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ax,&nbsp;</span><span style="color: #000000; ">0x0000</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;print_char<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;ax<br /><br />.</span><span style="color: #000000; ">1</span><span style="color: #000000; ">:&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;dx,&nbsp;cs:[si]<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ch,&nbsp;</span><span style="color: #000000; ">0x04</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;cl,&nbsp;</span><span style="color: #000000; ">0x04</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />.</span><span style="color: #000000; ">2</span><span style="color: #000000; ">:<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ax,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;rol&nbsp;dx,&nbsp;cl<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;al,&nbsp;dl<br />&nbsp;&nbsp;&nbsp;&nbsp;and&nbsp;al,&nbsp;</span><span style="color: #000000; ">0x0f</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;add&nbsp;al,&nbsp;</span><span style="color: #000000; ">0x30</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;cmp&nbsp;al,&nbsp;</span><span style="color: #000000; ">0x3a</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;jl&nbsp;.</span><span style="color: #000000; ">3</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;add&nbsp;al,&nbsp;</span><span style="color: #000000; ">0x07</span><span style="color: #000000; "><br />.</span><span style="color: #000000; ">3</span><span style="color: #000000; ">:<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;print_char<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;dec&nbsp;ch<br />&nbsp;&nbsp;&nbsp;&nbsp;cmp&nbsp;ch,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;jne&nbsp;.</span><span style="color: #000000; ">2</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;inc&nbsp;di<br />&nbsp;&nbsp;&nbsp;&nbsp;add&nbsp;si,&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;dec&nbsp;bx<br />&nbsp;&nbsp;&nbsp;&nbsp;cmp&nbsp;bx,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;jne&nbsp;.</span><span style="color: #000000; ">0</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;hlt<br /><br />print_char:<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;bp<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;bx<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;bp,&nbsp;sp<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ax,&nbsp;[bp</span><span style="color: #000000; ">+</span><span style="color: #000000; ">8</span><span style="color: #000000; ">]<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ah,&nbsp;</span><span style="color: #000000; ">0x0e</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;bx,&nbsp;</span><span style="color: #000000; ">0x0000</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0x10</span><span style="color: #000000; "><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;bx<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;bp<br />&nbsp;&nbsp;&nbsp;&nbsp;ret<br /><br />end:<br />&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;</span><span style="color: #000000; ">0</span></div><img src ="http://www.cppblog.com/jackyxinli/aggbug/209314.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jackyxinli/" target="_blank">jacky_zz</a> 2014-12-26 16:09 <a href="http://www.cppblog.com/jackyxinli/archive/2014/12/26/209314.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[ASM] 显示制定段及长度的内存值</title><link>http://www.cppblog.com/jackyxinli/archive/2014/12/19/209259.html</link><dc:creator>jacky_zz</dc:creator><author>jacky_zz</author><pubDate>Fri, 19 Dec 2014 14:53:00 GMT</pubDate><guid>http://www.cppblog.com/jackyxinli/archive/2014/12/19/209259.html</guid><wfw:comment>http://www.cppblog.com/jackyxinli/comments/209259.html</wfw:comment><comments>http://www.cppblog.com/jackyxinli/archive/2014/12/19/209259.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jackyxinli/comments/commentRss/209259.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jackyxinli/services/trackbacks/209259.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">;&nbsp;You&nbsp;may&nbsp;customize&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">&nbsp;and&nbsp;other&nbsp;start</span><span style="color: #000000; ">-</span><span style="color: #000000; ">up&nbsp;templates;&nbsp;<br />;&nbsp;The&nbsp;location&nbsp;of&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">&nbsp;template&nbsp;</span><span style="color: #0000FF; ">is</span><span style="color: #000000; ">&nbsp;c:\emu8086\inc\0_com_template.txt<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;org&nbsp;100h<br />start:<br />&nbsp;&nbsp;&nbsp;&nbsp;jmp&nbsp;main<br /><br />stack:<br />&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;</span><span style="color: #000000; ">256</span><span style="color: #000000; ">&nbsp;dup(</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br />code_len:<br />&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />;&nbsp;add&nbsp;your&nbsp;code&nbsp;here<br />main:<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ax,&nbsp;cs<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ds,&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ss,&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;sp,&nbsp;stack</span><span style="color: #000000; ">+</span><span style="color: #000000; ">256</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ax,&nbsp;end<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;bx,&nbsp;main<br />&nbsp;&nbsp;&nbsp;&nbsp;sub&nbsp;ax,&nbsp;bx<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;bx,&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;div&nbsp;bx<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;cmp&nbsp;dx,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;je&nbsp;next_step<br />&nbsp;&nbsp;&nbsp;&nbsp;inc&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />next_step:<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;bx,&nbsp;code_len<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;[bx],&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;bx,&nbsp;main<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;bx<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;cs<br />&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;dump_memory<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;bx<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;hlt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />dump_memory:<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;bp<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;bx<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;cx<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;dx<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;ds<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;bp,&nbsp;sp&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ax,&nbsp;[bp</span><span style="color: #000000; ">+</span><span style="color: #000000; ">14</span><span style="color: #000000; ">]<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;bx,&nbsp;[bp</span><span style="color: #000000; ">+</span><span style="color: #000000; ">16</span><span style="color: #000000; ">]<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;cx,&nbsp;[bp</span><span style="color: #000000; ">+</span><span style="color: #000000; ">18</span><span style="color: #000000; ">]<br />&nbsp;&nbsp;&nbsp;&nbsp;xor&nbsp;dx,&nbsp;dx<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ds,&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />rotate_memory:<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ax,&nbsp;ds:[bx]<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;write_hex<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;add&nbsp;bx,&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;loop&nbsp;rotate_memory&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ds,&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;dx<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;cx<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;bx<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;bp<br />&nbsp;&nbsp;&nbsp;&nbsp;ret<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />write_hex:<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;bp<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;bx<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;cx<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;dx<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;bp,&nbsp;sp<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;bx,&nbsp;[bp</span><span style="color: #000000; ">+</span><span style="color: #000000; ">12</span><span style="color: #000000; ">]<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;xor&nbsp;ax,&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;xor&nbsp;cx,&nbsp;cx<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ch,&nbsp;</span><span style="color: #000000; ">4</span><span style="color: #000000; ">&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />rotate:<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;cl,&nbsp;</span><span style="color: #000000; ">4</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;rol&nbsp;bx,&nbsp;cl<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;al,&nbsp;bl<br />&nbsp;&nbsp;&nbsp;&nbsp;and&nbsp;al,&nbsp;</span><span style="color: #000000; ">0x0f</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;add&nbsp;al,&nbsp;</span><span style="color: #000000; ">0x30</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;cmp&nbsp;al,&nbsp;</span><span style="color: #000000; ">0x3a</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;jl&nbsp;printit<br />&nbsp;&nbsp;&nbsp;&nbsp;add&nbsp;al,&nbsp;</span><span style="color: #000000; ">0x07</span><span style="color: #000000; "><br />printit:<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;dl,&nbsp;al<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;dx<br />&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;write_char<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;dx<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;dec&nbsp;ch<br />&nbsp;&nbsp;&nbsp;&nbsp;jnz&nbsp;rotate<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;dx,&nbsp;</span><span style="color: #000000; ">0x0000</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;dx<br />&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;write_char<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;dx<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;dx<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;cx<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;bx<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;bp<br />&nbsp;&nbsp;&nbsp;&nbsp;ret<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />write_char:<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;bp<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;dx<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;bp,&nbsp;sp<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ah,&nbsp;</span><span style="color: #000000; ">0x02</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;dx,&nbsp;[bp</span><span style="color: #000000; ">+</span><span style="color: #000000; ">8</span><span style="color: #000000; ">]<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0x21</span><span style="color: #000000; ">&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;dx<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;bp<br />&nbsp;&nbsp;&nbsp;&nbsp;ret<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />end:&nbsp;db&nbsp;</span><span style="color: #000000; ">0x55</span><span style="color: #000000; ">,</span><span style="color: #000000; ">0xaa</span></div><img src ="http://www.cppblog.com/jackyxinli/aggbug/209259.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jackyxinli/" target="_blank">jacky_zz</a> 2014-12-19 22:53 <a href="http://www.cppblog.com/jackyxinli/archive/2014/12/19/209259.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[ASM] 利用堆栈传递参数</title><link>http://www.cppblog.com/jackyxinli/archive/2014/12/18/209227.html</link><dc:creator>jacky_zz</dc:creator><author>jacky_zz</author><pubDate>Thu, 18 Dec 2014 09:10:00 GMT</pubDate><guid>http://www.cppblog.com/jackyxinli/archive/2014/12/18/209227.html</guid><wfw:comment>http://www.cppblog.com/jackyxinli/comments/209227.html</wfw:comment><comments>http://www.cppblog.com/jackyxinli/archive/2014/12/18/209227.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jackyxinli/comments/commentRss/209227.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jackyxinli/services/trackbacks/209227.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">;&nbsp;You&nbsp;may&nbsp;customize&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">&nbsp;and&nbsp;other&nbsp;start</span><span style="color: #000000; ">-</span><span style="color: #000000; ">up&nbsp;templates;&nbsp;<br />;&nbsp;The&nbsp;location&nbsp;of&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">&nbsp;template&nbsp;</span><span style="color: #0000FF; ">is</span><span style="color: #000000; ">&nbsp;c:\emu8086\inc\0_com_template.txt<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;org&nbsp;100h<br />&nbsp;&nbsp;&nbsp;&nbsp;jmp&nbsp;start<br /><br />data:<br />&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;</span><span style="color: #000000; ">32</span><span style="color: #000000; ">&nbsp;dup(</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />stack:<br />&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;</span><span style="color: #000000; ">256</span><span style="color: #000000; ">&nbsp;dup(0</span><span style="color: #000000; ">)<br /><br />start:<br />;&nbsp;add&nbsp;your&nbsp;code&nbsp;here&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ax,&nbsp;cs<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ds,&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;bx,&nbsp;data<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ss,&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;sp,&nbsp;stack</span><span style="color: #000000; ">+</span><span style="color: #000000; ">31</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;</span><span style="color: #000000; ">0x0001</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;</span><span style="color: #000000; ">0x0002</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;</span><span style="color: #000000; ">0x0003</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;test_proc<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;hlt<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />test_proc:<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;bp<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;bp,&nbsp;sp<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ax,&nbsp;[bp</span><span style="color: #000000; ">+</span><span style="color: #000000; ">8</span><span style="color: #000000; ">]<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;write_char<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ax,&nbsp;[bp</span><span style="color: #000000; ">+</span><span style="color: #000000; ">6</span><span style="color: #000000; ">]<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;write_char<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ax,&nbsp;[bp</span><span style="color: #000000; ">+</span><span style="color: #000000; ">4</span><span style="color: #000000; ">]<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;write_char<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;bp<br />&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;</span><span style="color: #000000; ">6</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />write_char:<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;bp<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;bp,&nbsp;sp<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ax,&nbsp;[bp</span><span style="color: #000000; ">+</span><span style="color: #000000; ">4</span><span style="color: #000000; ">]<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;dl,&nbsp;al<br />&nbsp;&nbsp;&nbsp;&nbsp;add&nbsp;dl,&nbsp;</span><span style="color: #000000; ">0x30</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;cmp&nbsp;dl,&nbsp;</span><span style="color: #000000; ">0x3a</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;jl&nbsp;printit<br />&nbsp;&nbsp;&nbsp;&nbsp;add&nbsp;dl,&nbsp;</span><span style="color: #000000; ">0x07</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />printit:<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ah,&nbsp;</span><span style="color: #000000; ">0x02</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0x21</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;bp<br />&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;</span><span style="color: #000000; ">2</span></div><img src ="http://www.cppblog.com/jackyxinli/aggbug/209227.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jackyxinli/" target="_blank">jacky_zz</a> 2014-12-18 17:10 <a href="http://www.cppblog.com/jackyxinli/archive/2014/12/18/209227.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[ASM] 二进制数用十六进制显示</title><link>http://www.cppblog.com/jackyxinli/archive/2014/12/18/209224.html</link><dc:creator>jacky_zz</dc:creator><author>jacky_zz</author><pubDate>Thu, 18 Dec 2014 08:24:00 GMT</pubDate><guid>http://www.cppblog.com/jackyxinli/archive/2014/12/18/209224.html</guid><wfw:comment>http://www.cppblog.com/jackyxinli/comments/209224.html</wfw:comment><comments>http://www.cppblog.com/jackyxinli/archive/2014/12/18/209224.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jackyxinli/comments/commentRss/209224.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jackyxinli/services/trackbacks/209224.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">org&nbsp;100h<br /><br />;&nbsp;add&nbsp;your&nbsp;code&nbsp;here<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ax,&nbsp;cs<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ds,&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ss,&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ax,&nbsp;</span><span style="color: #000000; ">0x0000</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;bx,&nbsp;</span><span style="color: #000000; ">0x106f</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ch,&nbsp;</span><span style="color: #000000; ">0x04</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />rotate:<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;cl,&nbsp;</span><span style="color: #000000; ">0x04</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;rol&nbsp;bx,&nbsp;cl<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;al,&nbsp;bl<br />&nbsp;&nbsp;&nbsp;&nbsp;and&nbsp;al,&nbsp;</span><span style="color: #000000; ">0x0f</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;add&nbsp;al,&nbsp;</span><span style="color: #000000; ">0x30</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;cmp&nbsp;al,&nbsp;</span><span style="color: #000000; ">0x3a</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;jl&nbsp;printit<br />&nbsp;&nbsp;&nbsp;&nbsp;add&nbsp;al,&nbsp;</span><span style="color: #000000; ">0x07</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />printit:<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;dl,&nbsp;al<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ah,&nbsp;</span><span style="color: #000000; ">0x02</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0x21</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;dec&nbsp;ch<br />&nbsp;&nbsp;&nbsp;&nbsp;jnz&nbsp;rotate&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />ret</span></div><img src ="http://www.cppblog.com/jackyxinli/aggbug/209224.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jackyxinli/" target="_blank">jacky_zz</a> 2014-12-18 16:24 <a href="http://www.cppblog.com/jackyxinli/archive/2014/12/18/209224.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[ASM] 显示一个数字的二进制、八进制、十进制、十六进制（带过程调用）</title><link>http://www.cppblog.com/jackyxinli/archive/2014/12/17/209208.html</link><dc:creator>jacky_zz</dc:creator><author>jacky_zz</author><pubDate>Wed, 17 Dec 2014 08:55:00 GMT</pubDate><guid>http://www.cppblog.com/jackyxinli/archive/2014/12/17/209208.html</guid><wfw:comment>http://www.cppblog.com/jackyxinli/comments/209208.html</wfw:comment><comments>http://www.cppblog.com/jackyxinli/archive/2014/12/17/209208.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jackyxinli/comments/commentRss/209208.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jackyxinli/services/trackbacks/209208.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">;&nbsp;You&nbsp;may&nbsp;customize&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">&nbsp;and&nbsp;other&nbsp;start</span><span style="color: #000000; ">-</span><span style="color: #000000; ">up&nbsp;templates;&nbsp;<br />;&nbsp;The&nbsp;location&nbsp;of&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">&nbsp;template&nbsp;</span><span style="color: #0000FF; ">is</span><span style="color: #000000; ">&nbsp;c:\emu8086\inc\0_com_template.txt<br /><br />org&nbsp;100h<br /><br />;&nbsp;add&nbsp;your&nbsp;code&nbsp;here&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ax,&nbsp;cs<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ds,&nbsp;ax&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ss,&nbsp;ax&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;sp,&nbsp;stack&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">256</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;si,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;</span><span style="color: #000000; ">0x105e</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;write_bin<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;ax&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;write_space2<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;</span><span style="color: #000000; ">0x0002</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;</span><span style="color: #000000; ">0x78fd</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;write_num<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;write_space2<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;</span><span style="color: #000000; ">0x0008</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;</span><span style="color: #000000; ">0x78fd</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;write_num<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;write_space2<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;</span><span style="color: #000000; ">0x000A</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;</span><span style="color: #000000; ">0x78fd</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;write_num<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;write_space2<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;</span><span style="color: #000000; ">0x0010</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;</span><span style="color: #000000; ">0x78fd</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;write_num<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;ret<br /><br />write_space2:<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;cx,&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; "><br />loop_write_char:<br />&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;write_space<br />&nbsp;&nbsp;&nbsp;&nbsp;loop&nbsp;loop_write_char<br />&nbsp;&nbsp;&nbsp;&nbsp;ret<br /><br />write_space:<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;</span><span style="color: #000000; ">0x0000</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;write_char<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;ret<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />write_char:&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;bx<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;cx<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;dx<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;bp,&nbsp;sp<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ah,&nbsp;</span><span style="color: #000000; ">0x0e</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;bx,&nbsp;ss:[bp</span><span style="color: #000000; ">+</span><span style="color: #000000; ">10</span><span style="color: #000000; ">]&nbsp;;&nbsp;parameter&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;al,&nbsp;bl<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;bx,&nbsp;</span><span style="color: #000000; ">0x000c</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0x10</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;dx<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;cx<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;bx<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;ret<br /><br />write_bin:<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;bp,&nbsp;sp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ax,&nbsp;ss:[bp</span><span style="color: #000000; ">+</span><span style="color: #000000; ">2</span><span style="color: #000000; ">]&nbsp;;&nbsp;parameter&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;cx,&nbsp;</span><span style="color: #000000; ">16</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />s:<br />&nbsp;&nbsp;&nbsp;&nbsp;xor&nbsp;dx,&nbsp;dx<br />&nbsp;&nbsp;&nbsp;&nbsp;rcl&nbsp;ax,&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;adc&nbsp;dl,&nbsp;</span><span style="color: #000000; ">0x30</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;dx<br />&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;write_char<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;dx&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;loop&nbsp;s<br />&nbsp;&nbsp;&nbsp;&nbsp;ret<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />write_num:<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;bp,&nbsp;sp<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ax,&nbsp;ss:[bp</span><span style="color: #000000; ">+</span><span style="color: #000000; ">2</span><span style="color: #000000; ">]&nbsp;;&nbsp;parameter&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;bx,&nbsp;ss:[bp</span><span style="color: #000000; ">+</span><span style="color: #000000; ">4</span><span style="color: #000000; ">]&nbsp;;&nbsp;parameter&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;cx,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />loop_num_div:<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;dx,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;div&nbsp;bx<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;dx<br />&nbsp;&nbsp;&nbsp;&nbsp;inc&nbsp;cx<br />&nbsp;&nbsp;&nbsp;&nbsp;cmp&nbsp;ax,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;jne&nbsp;loop_num_div<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />loop_num_disp:<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;dx<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;add&nbsp;dl,&nbsp;</span><span style="color: #000000; ">0x30</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;cmp&nbsp;dl,&nbsp;</span><span style="color: #000000; ">0x3A</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;jl&nbsp;disp_char<br />&nbsp;&nbsp;&nbsp;&nbsp;add&nbsp;dl,&nbsp;</span><span style="color: #000000; ">0x07</span><span style="color: #000000; "><br /><br />disp_char:&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;dx<br />&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;write_char<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;dx<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;loop&nbsp;loop_num_disp<br />&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />stack:<br />&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; "><br />end_flag:&nbsp;db&nbsp;</span><span style="color: #000000; ">0x11</span></div><img src ="http://www.cppblog.com/jackyxinli/aggbug/209208.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jackyxinli/" target="_blank">jacky_zz</a> 2014-12-17 16:55 <a href="http://www.cppblog.com/jackyxinli/archive/2014/12/17/209208.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[ASM] 显示一个数字的十进制</title><link>http://www.cppblog.com/jackyxinli/archive/2014/12/17/209201.html</link><dc:creator>jacky_zz</dc:creator><author>jacky_zz</author><pubDate>Wed, 17 Dec 2014 01:40:00 GMT</pubDate><guid>http://www.cppblog.com/jackyxinli/archive/2014/12/17/209201.html</guid><wfw:comment>http://www.cppblog.com/jackyxinli/comments/209201.html</wfw:comment><comments>http://www.cppblog.com/jackyxinli/archive/2014/12/17/209201.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jackyxinli/comments/commentRss/209201.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jackyxinli/services/trackbacks/209201.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">org&nbsp;100h<br /><br />;&nbsp;add&nbsp;your&nbsp;code&nbsp;here<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ax,&nbsp;cs<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ds,&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ax,&nbsp;</span><span style="color: #000000; ">0xb800</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;es,&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;xor&nbsp;ax,&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;xor&nbsp;bx,&nbsp;bx<br />&nbsp;&nbsp;&nbsp;&nbsp;xor&nbsp;cx,&nbsp;cx<br />&nbsp;&nbsp;&nbsp;&nbsp;xor&nbsp;dx,&nbsp;dx<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ax,&nbsp;</span><span style="color: #000000; ">0x105e</span><span style="color: #000000; ">&nbsp;;除数<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;bx,&nbsp;</span><span style="color: #000000; ">10</span><span style="color: #000000; ">&nbsp;;被除数<br /><br />s:&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;dx,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">&nbsp;;清空余数<br />&nbsp;&nbsp;&nbsp;&nbsp;div&nbsp;bx&nbsp;;除以被除数<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;dx&nbsp;;把余数压栈<br />&nbsp;&nbsp;&nbsp;&nbsp;inc&nbsp;cx&nbsp;;循环次数加1<br />&nbsp;&nbsp;&nbsp;&nbsp;cmp&nbsp;ax,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">&nbsp;;商不为0继续除<br />&nbsp;&nbsp;&nbsp;&nbsp;jne&nbsp;s<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;bx,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />p1:&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;dx<br />&nbsp;&nbsp;&nbsp;&nbsp;add&nbsp;dl,&nbsp;</span><span style="color: #000000; ">0x30</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;es:[bx],&nbsp;dl<br />&nbsp;&nbsp;&nbsp;&nbsp;inc&nbsp;bx<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;es:[bx],&nbsp;</span><span style="color: #000000; ">0x0c</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;inc&nbsp;bx<br />&nbsp;&nbsp;&nbsp;&nbsp;loop&nbsp;p1<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />ret</span></div><img src ="http://www.cppblog.com/jackyxinli/aggbug/209201.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jackyxinli/" target="_blank">jacky_zz</a> 2014-12-17 09:40 <a href="http://www.cppblog.com/jackyxinli/archive/2014/12/17/209201.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[ASM] 显示一个数字的十六进制</title><link>http://www.cppblog.com/jackyxinli/archive/2014/12/17/209200.html</link><dc:creator>jacky_zz</dc:creator><author>jacky_zz</author><pubDate>Wed, 17 Dec 2014 01:31:00 GMT</pubDate><guid>http://www.cppblog.com/jackyxinli/archive/2014/12/17/209200.html</guid><wfw:comment>http://www.cppblog.com/jackyxinli/comments/209200.html</wfw:comment><comments>http://www.cppblog.com/jackyxinli/archive/2014/12/17/209200.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jackyxinli/comments/commentRss/209200.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jackyxinli/services/trackbacks/209200.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">org&nbsp;100h<br /><br />;&nbsp;add&nbsp;your&nbsp;code&nbsp;here<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ax,&nbsp;cs<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ds,&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ax,&nbsp;</span><span style="color: #000000; ">0xb800</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;es,&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;xor&nbsp;ax,&nbsp;ax<br />&nbsp;&nbsp;&nbsp;&nbsp;xor&nbsp;bx,&nbsp;bx<br />&nbsp;&nbsp;&nbsp;&nbsp;xor&nbsp;dx,&nbsp;dx<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;dl,&nbsp;</span><span style="color: #000000; ">0x2f</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;al,&nbsp;dl<br />&nbsp;&nbsp;&nbsp;&nbsp;shr&nbsp;al,&nbsp;</span><span style="color: #000000; ">4</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;add&nbsp;al,&nbsp;</span><span style="color: #000000; ">0x30</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;cmp&nbsp;al,&nbsp;</span><span style="color: #000000; ">0x3a</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;jl&nbsp;p1<br />&nbsp;&nbsp;&nbsp;&nbsp;add&nbsp;al,&nbsp;</span><span style="color: #000000; ">0x07</span><span style="color: #000000; "><br /><br />p1:<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;es:[bx],&nbsp;al<br />&nbsp;&nbsp;&nbsp;&nbsp;inc&nbsp;bx<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;es:[bx],&nbsp;</span><span style="color: #000000; ">0x0c</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;inc&nbsp;bx<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;al,&nbsp;dl<br />&nbsp;&nbsp;&nbsp;&nbsp;and&nbsp;al,&nbsp;</span><span style="color: #000000; ">0x0f</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;add&nbsp;al,&nbsp;</span><span style="color: #000000; ">0x30</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;cmp&nbsp;al,&nbsp;</span><span style="color: #000000; ">0x3a</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;jl&nbsp;p2<br />&nbsp;&nbsp;&nbsp;&nbsp;add&nbsp;al,&nbsp;</span><span style="color: #000000; ">0x07</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />p2:<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;es:[bx],&nbsp;al<br />&nbsp;&nbsp;&nbsp;&nbsp;inc&nbsp;bx<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;es:[bx],&nbsp;</span><span style="color: #000000; ">0x0c</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;inc&nbsp;bx<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />ret</span></div><img src ="http://www.cppblog.com/jackyxinli/aggbug/209200.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jackyxinli/" target="_blank">jacky_zz</a> 2014-12-17 09:31 <a href="http://www.cppblog.com/jackyxinli/archive/2014/12/17/209200.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>