时光浅浅 發表於 2024-3-26 11:38:56

汇编语言段定义的使用

<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li>段定义三步走</li><ul class="second_class_ul"><li>段定义</li><li>段关联</li><li>段传送</li></ul><li>数据段</li><ul class="second_class_ul"><li>开辟空间的伪指令</li><li>存储数据</li><li>语法格式</li><li>代码演示</li></ul></ul></div><p class="maodian"></p><h2>段定义三步走</h2>
<p class="maodian"></p><h3>段定义</h3>
<p>关键字:segment(开始) ends(结束)</p>
<p>段名:不得超过八个字符。一般情况下,</p>
<ul><li>code 表示代码段。</li><li>data 表示数据段</li></ul>
<p>语法</p>
<div class="jb51code"><pre class="brush:plain;">段名 segment

段名 ends
</pre></div>
<p class="maodian"></p><h3>段关联</h3>
<p>关键字:assume</p>
<p>类型:CS(代码段)、DS(数据段)、SS(堆栈段)、ES(附加段)</p>
<p>语法:</p>
<div class="jb51code"><pre class="brush:plain;">assume 类型:段名
</pre></div>
<p>例:定义一个代码段 code,定义一个数据段 data</p>
<div class="jb51code"><pre class="brush:plain;">code segment
        assume cs:code,ds:data
code ends

data segment

data ends
</pre></div>
<p class="maodian"></p><h3>段传送</h3>
<p>传送是将段中的数据传到指定的段寄存器中。例如,讲 data 中的数据传到 DS 数据段中,在关联的时候并没有真正的传递数据。</p>
<p>代码段在定义时不需要段传送,其他段都需要手动传送。</p>
<p>通过 mov 不能将段直接传递给段寄存器,可以间接行传送。</p>
<div class="jb51code"><pre class="brush:plain;">……
mov ax,data
mov ds,ax
……
</pre></div>
<p>这段代码表示,现将 data 数据段存到 ax 中,再将 ax 中的数据存到 ds 中。</p>
<p class="maodian"></p><h2>数据段</h2>
<p class="maodian"></p><h3>开辟空间的伪指令</h3>
<ul><li>db:开辟一个字节空间。</li><li>dw:开辟一个字空间。(两个字节)</li><li>dup:循环存字符</li></ul>
<p class="maodian"></p><h3>存储数据</h3>
<ul><li>存储 10 进制数据时,直接写入。</li><li>存储字符数据时用单引号扩起来,最终在 debug 模式下现实的是该字符 ASCII 码16进制表现形式。</li></ul>
<p class="maodian"></p><h3>语法格式</h3>
<p>无地址符号</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202403/2024032611291454.png" /></p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202403/2024032611291455.jpg" /></p>
<p>有地址符号</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202403/2024032611291456.png" /></p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202403/2024032611291457.jpg" /></p>
<p class="maodian"></p><h3>代码演示</h3>
<p>使用 db 定义 5 个奇数,将第一个数存到 AH 中,最后一个数存到 AL 中。</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202403/2024032611291558.png" /></p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202403/2024032611291559.jpg" /></p>
<p>最终,AX=0109,恰好是 AH 与 AL 的拼接。</p>
<p>使用 dw 定义 5 个奇数,存入 AX 中。</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202403/2024032611291560.png" /></p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202403/2024032611291561.jpg" /></p>
<p>利用 dup 开辟三个单字节空间</p>
<div class="jb51code"><pre class="brush:plain;">data segment
    str db 3 dup(5)
data ends
code segment
    assume cs:code,ds:data
    main:
      mov ax,data
      mov ds,ax
      
    edit:
      mov ah,4ch
      int 21h
code ends
    end main
</pre></div>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202403/2024032611291562.png" /></p>
<p>到此这篇关于汇编语言段定义的使用的文章就介绍到这了,更多相关汇编语言段定义内容请搜索琼殿技术社区以前的文章或继续浏览下面的相关文章希望大家以后多多支持琼殿技术社区!&nbsp;</p>
                           
                            <div class="art_xg">
                              <b>您可能感兴趣的文章:</b><ul><li>汇编基础教程段的定义应用详解</li></ul>
                            </div>

                        </div>
                        <!--endmain-->
頁: [1]
查看完整版本: 汇编语言段定义的使用