凤凰阁 發表於 2020-11-26 19:37:00

汇编语言实验三

<h1 id="汇编语言实验三">汇编语言实验三</h1>
<p>一、实验目的</p>
<p>1. 理解和掌握将数据、代码、栈放入不同逻辑段的程序的编写和调试<br>2. 理解具有多个段的汇编源程序对应的目标程序执行时,内存分配方式<br>3. 掌握大小写字符的转换方法、数字字符和数值之间的转换方法<br>4. 理解并掌握各种寻址方式的灵活应用<br>5. 掌握汇编指令loop, and, or,div, mul的用法</p>
<p>&nbsp;</p>
<h2>二、实验准备</h2>
<p>复习教材chapter 6-8章。</p>
<p>&nbsp;</p>
<h2 id="1-实验任务1">三、实验内容</h2>
<h3>1.实验任务1</h3>
<p>task1.asm;</p>
<div class="cnblogs_code">
<pre>assume <span style="color: rgba(0, 128, 128, 1)">cs:</span>code, <span style="color: rgba(0, 128, 128, 1)">ds:</span><span style="color: rgba(0, 0, 0, 1)">data
data segment
    db </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">Nuist</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
    db </span><span style="color: rgba(128, 0, 128, 1)">2</span>,<span style="color: rgba(128, 0, 128, 1)">3</span>,<span style="color: rgba(128, 0, 128, 1)">4</span>,<span style="color: rgba(128, 0, 128, 1)">5</span>,<span style="color: rgba(128, 0, 128, 1)">6</span><span style="color: rgba(0, 0, 0, 1)">
data ends
code segment
</span><span style="color: rgba(0, 128, 128, 1)">start:</span>
    <span style="color: rgba(0, 0, 255, 1)">mov</span><span style="color: rgba(0, 0, 0, 1)"> ax, data
    </span><span style="color: rgba(0, 0, 255, 1)">mov</span><span style="color: rgba(0, 0, 0, 1)"> ds, ax
    </span><span style="color: rgba(0, 0, 255, 1)">mov</span><span style="color: rgba(0, 0, 0, 1)"> ax, 0b800H
    </span><span style="color: rgba(0, 0, 255, 1)">mov</span><span style="color: rgba(0, 0, 0, 1)"> es, ax
    </span><span style="color: rgba(0, 0, 255, 1)">mov</span> cx, <span style="color: rgba(128, 0, 128, 1)">5</span>
    <span style="color: rgba(0, 0, 255, 1)">mov</span> si, <span style="color: rgba(128, 0, 128, 1)">0</span>
    <span style="color: rgba(0, 0, 255, 1)">mov</span><span style="color: rgba(0, 0, 0, 1)"> di, 0f00h
</span><span style="color: rgba(0, 128, 128, 1)">s:</span>   <span style="color: rgba(0, 0, 255, 1)">mov</span><span style="color: rgba(0, 0, 0, 1)"> al,
    </span><span style="color: rgba(0, 0, 255, 1)">and</span><span style="color: rgba(0, 0, 0, 1)"> al, 0dfh
    </span><span style="color: rgba(0, 0, 255, 1)">mov</span> <span style="color: rgba(0, 128, 128, 1)">es:</span><span style="color: rgba(0, 0, 0, 1)">, al
    </span><span style="color: rgba(0, 0, 255, 1)">mov</span> al, [<span style="color: rgba(128, 0, 128, 1)">5</span><span style="color: rgba(0, 0, 0, 1)">+si]
    </span><span style="color: rgba(0, 0, 255, 1)">mov</span> <span style="color: rgba(0, 128, 128, 1)">es:</span>, al
    </span><span style="color: rgba(0, 0, 255, 1)">inc</span><span style="color: rgba(0, 0, 0, 1)"> si
    </span><span style="color: rgba(0, 0, 255, 1)">add</span> di, <span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">
    loop s
    </span><span style="color: rgba(0, 0, 255, 1)">mov</span><span style="color: rgba(0, 0, 0, 1)"> ah, 4ch
    </span><span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> 21h
code ends
end start</span></pre>
</div>
<p>&nbsp;</p>
<p>使用masm、link对task1.asm进行汇编、链接,得到可执行文件task1.exe,运行并观察结果。</p>
<p><img src="https://img2020.cnblogs.com/blog/1616553/202011/1616553-20201126175720268-1502326331.png"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>使用g命令跳转到循环结束</p>
<p><img src="https://img2020.cnblogs.com/blog/1616553/202011/1616553-20201126175742743-876608655.png"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>修改line4里5个字节单元的值,重新汇编、链接、运行,观察结果</p>
<p>&nbsp;</p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/1616553/202011/1616553-20201126175752459-1754053016.png"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;可以看出这里的line4的数值作用是控制显示颜色的。</p>
<p>&nbsp;</p>
<h3>2.实验任务2</h3>
<p>task2.asm;</p>
<div class="cnblogs_code">
<pre>assume <span style="color: rgba(0, 128, 128, 1)">cs:</span>code,<span style="color: rgba(0, 128, 128, 1)">ds:</span><span style="color: rgba(0, 0, 0, 1)">data
data segment
    db </span><span style="color: rgba(128, 0, 128, 1)">23</span>,<span style="color: rgba(128, 0, 128, 1)">50</span>,<span style="color: rgba(128, 0, 128, 1)">66</span>,<span style="color: rgba(128, 0, 128, 1)">71</span>,<span style="color: rgba(128, 0, 128, 1)">35</span><span style="color: rgba(0, 0, 0, 1)">
data ends
code segment
</span><span style="color: rgba(0, 128, 128, 1)">start:</span>
    <span style="color: rgba(0, 0, 255, 1)">mov</span><span style="color: rgba(0, 0, 0, 1)"> ax,data
    </span><span style="color: rgba(0, 0, 255, 1)">mov</span><span style="color: rgba(0, 0, 0, 1)"> ds,ax
    </span><span style="color: rgba(0, 0, 255, 1)">mov</span> di,<span style="color: rgba(128, 0, 128, 1)">0</span>
    <span style="color: rgba(0, 0, 255, 1)">mov</span> cx,<span style="color: rgba(128, 0, 128, 1)">5</span>

<span style="color: rgba(0, 128, 128, 1)">s:</span>    <span style="color: rgba(0, 0, 255, 1)">mov</span> ah,<span style="color: rgba(128, 0, 128, 1)">0</span>
    <span style="color: rgba(0, 0, 255, 1)">mov</span> al,<span style="color: rgba(0, 128, 128, 1)">ds:</span><span style="color: rgba(0, 0, 0, 1)">
    </span><span style="color: rgba(0, 0, 255, 1)">mov</span> bl,<span style="color: rgba(128, 0, 128, 1)">10</span>
    <span style="color: rgba(0, 0, 255, 1)">div</span><span style="color: rgba(0, 0, 0, 1)"> bl
    </span><span style="color: rgba(0, 0, 255, 1)">mov</span> <span style="color: rgba(0, 128, 128, 1)">ds:</span>[<span style="color: rgba(128, 0, 128, 1)">10</span><span style="color: rgba(0, 0, 0, 1)">+di],al
    </span><span style="color: rgba(0, 0, 255, 1)">mov</span> <span style="color: rgba(0, 128, 128, 1)">ds:</span>[<span style="color: rgba(128, 0, 128, 1)">11</span><span style="color: rgba(0, 0, 0, 1)">+di],ah

    </span><span style="color: rgba(0, 0, 255, 1)">mov</span> ah,<span style="color: rgba(128, 0, 128, 1)">2</span>
    <span style="color: rgba(0, 0, 255, 1)">mov</span> dl,<span style="color: rgba(0, 128, 128, 1)">ds:</span>[<span style="color: rgba(128, 0, 128, 1)">10</span><span style="color: rgba(0, 0, 0, 1)">+di]
    </span><span style="color: rgba(0, 0, 255, 1)">add</span><span style="color: rgba(0, 0, 0, 1)"> dl,30h
    </span><span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> 21h

    </span><span style="color: rgba(0, 0, 255, 1)">mov</span> ah,<span style="color: rgba(128, 0, 128, 1)">2</span>
    <span style="color: rgba(0, 0, 255, 1)">mov</span> dl,<span style="color: rgba(0, 128, 128, 1)">ds:</span>[<span style="color: rgba(128, 0, 128, 1)">11</span><span style="color: rgba(0, 0, 0, 1)">+di]
    </span><span style="color: rgba(0, 0, 255, 1)">add</span><span style="color: rgba(0, 0, 0, 1)"> dl,30h
    </span><span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> 21h

    </span><span style="color: rgba(0, 0, 255, 1)">mov</span> ah,<span style="color: rgba(128, 0, 128, 1)">2</span>
    <span style="color: rgba(0, 0, 255, 1)">mov</span> dl,<span style="color: rgba(128, 0, 0, 1)">"</span> <span style="color: rgba(128, 0, 0, 1)">"</span>
    <span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> 21h
   
    </span><span style="color: rgba(0, 0, 255, 1)">inc</span><span style="color: rgba(0, 0, 0, 1)"> di
    loop s

    </span><span style="color: rgba(0, 0, 255, 1)">mov</span><span style="color: rgba(0, 0, 0, 1)"> ax,4c00h
    </span><span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> 21h
code ends
end start</span></pre>
</div>
<p>&nbsp;</p>
<p>运行结果</p>
<p><img src="https://img2020.cnblogs.com/blog/1616553/202011/1616553-20201126175815117-1580287043.png"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h3>&nbsp;3.实验任务3</h3>
<p>task3.asm;</p>
<div class="cnblogs_code">
<pre>assume <span style="color: rgba(0, 128, 128, 1)">cs:</span>code, <span style="color: rgba(0, 128, 128, 1)">ds:</span>data, <span style="color: rgba(0, 128, 128, 1)">ss:</span><span style="color: rgba(0, 0, 0, 1)">stack
data segment
dw 0123h, 0456h, 0789h, 0abch, 0defh, 0fedh, 0cbah, 0987h
data ends

stack segment
dw </span><span style="color: rgba(128, 0, 128, 1)">0</span>, <span style="color: rgba(128, 0, 128, 1)">0</span>, <span style="color: rgba(128, 0, 128, 1)">0</span>, <span style="color: rgba(128, 0, 128, 1)">0</span>, <span style="color: rgba(128, 0, 128, 1)">0</span>, <span style="color: rgba(128, 0, 128, 1)">0</span>, <span style="color: rgba(128, 0, 128, 1)">0</span>, <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">
stack ends

code segment
</span><span style="color: rgba(0, 128, 128, 1)">start:</span><span style="color: rgba(0, 0, 255, 1)">mov</span><span style="color: rgba(0, 0, 0, 1)"> ax,stack
      </span><span style="color: rgba(0, 0, 255, 1)">mov</span><span style="color: rgba(0, 0, 0, 1)"> ss, ax
      </span><span style="color: rgba(0, 0, 255, 1)">mov</span> sp,<span style="color: rgba(128, 0, 128, 1)">16</span>
      
      <span style="color: rgba(0, 0, 255, 1)">mov</span><span style="color: rgba(0, 0, 0, 1)"> ax, data
      </span><span style="color: rgba(0, 0, 255, 1)">mov</span><span style="color: rgba(0, 0, 0, 1)"> ds, ax
      
      </span><span style="color: rgba(0, 0, 255, 1)">push</span> <span style="color: rgba(0, 128, 128, 1)">ds:</span>[<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">]
      </span><span style="color: rgba(0, 0, 255, 1)">push</span> <span style="color: rgba(0, 128, 128, 1)">ds:</span>[<span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">]
      </span><span style="color: rgba(0, 0, 255, 1)">pop</span> <span style="color: rgba(0, 128, 128, 1)">ds:</span>[<span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">]
      </span><span style="color: rgba(0, 0, 255, 1)">pop</span> <span style="color: rgba(0, 128, 128, 1)">ds:</span>[<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">]
      
      </span><span style="color: rgba(0, 0, 255, 1)">mov</span><span style="color: rgba(0, 0, 0, 1)"> ax,4c00h
      </span><span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> 21h

code ends
end start</span></pre>
</div>
<p>对task3.asm进行汇编、链接并执行程序</p>
<p><img src="https://img2020.cnblogs.com/blog/1616553/202011/1616553-20201126175848075-1955062393.png"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;反汇编的结果</p>
<p><img src="https://img2020.cnblogs.com/blog/1616553/202011/1616553-20201126175856103-1538346183.png"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;执行到程序退出前,查看data段数据</p>
<p><img src="https://img2020.cnblogs.com/blog/1616553/202011/1616553-20201126175902916-1017795963.png"></p>
<p><img src="https://img2020.cnblogs.com/blog/1616553/202011/1616553-20201126175908929-725126612.png"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;(1)data段数据为:0123H 0456H 0789H 0ABCH 0DEFH 0FEDH 0CBAH 0987H</p>
<p>&nbsp; &nbsp;(2)程序返回前,cs=076C、ss=076B、ds=076A</p>
<p>&nbsp; &nbsp;(3)设程序加载后,code段的段地址为x,则data段的段地址为x-2,stack段的段地址为x-1</p>
<p>&nbsp;</p>
<h3>4.实验任务4</h3>
<p>task4.asm;</p>
<div class="cnblogs_code">
<pre>assume <span style="color: rgba(0, 128, 128, 1)">cs:</span>code, <span style="color: rgba(0, 128, 128, 1)">ds:</span>data, <span style="color: rgba(0, 128, 128, 1)">ss:</span><span style="color: rgba(0, 0, 0, 1)">stack
data segment
dw 0123h, 0456h
data ends

stack segment
dw </span><span style="color: rgba(128, 0, 128, 1)">0</span>, <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">
stack ends

code segment
</span><span style="color: rgba(0, 128, 128, 1)">start:</span><span style="color: rgba(0, 0, 255, 1)">mov</span><span style="color: rgba(0, 0, 0, 1)"> ax,stack
      </span><span style="color: rgba(0, 0, 255, 1)">mov</span><span style="color: rgba(0, 0, 0, 1)"> ss, ax
      </span><span style="color: rgba(0, 0, 255, 1)">mov</span> sp,<span style="color: rgba(128, 0, 128, 1)">16</span>
      
      <span style="color: rgba(0, 0, 255, 1)">mov</span><span style="color: rgba(0, 0, 0, 1)"> ax, data
      </span><span style="color: rgba(0, 0, 255, 1)">mov</span><span style="color: rgba(0, 0, 0, 1)"> ds, ax
      
      </span><span style="color: rgba(0, 0, 255, 1)">push</span> <span style="color: rgba(0, 128, 128, 1)">ds:</span>[<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">]
      </span><span style="color: rgba(0, 0, 255, 1)">push</span> <span style="color: rgba(0, 128, 128, 1)">ds:</span>[<span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">]
      </span><span style="color: rgba(0, 0, 255, 1)">pop</span> <span style="color: rgba(0, 128, 128, 1)">ds:</span>[<span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">]
      </span><span style="color: rgba(0, 0, 255, 1)">pop</span> <span style="color: rgba(0, 128, 128, 1)">ds:</span>[<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">]
      
      </span><span style="color: rgba(0, 0, 255, 1)">mov</span><span style="color: rgba(0, 0, 0, 1)"> ax,4c00h
      </span><span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> 21h

code ends
end start</span></pre>
</div>
<p>汇编、链接并执行程序</p>
<p><img src="https://img2020.cnblogs.com/blog/1616553/202011/1616553-20201126175922858-843848501.png"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;进行反汇编,并运行到程序返回前,用d命令查看data段中的数据</p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/1616553/202011/1616553-20201126175928890-492550714.png"></p>
<p>(1)data段中的数据为:0123H 0456H&nbsp;</p>
<p>(2)cs=076C、ss=076B、ds=076A</p>
<p>(3)设程序加载后,code段的段地址为X,则data段的段地址为X-2,stack段的段地址为X-1</p>
<p>(4)对于如下定义的段:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">name segment

...

name ends</span></pre>
</div>
<p>如果段中的数据占N个字节,则程序加载后,该段实际占有的空间为16字节。</p>
<p>&nbsp;</p>
<h3>5.实验任务5</h3>
<p>task5.asm;</p>
<div class="cnblogs_code">
<pre>assume <span style="color: rgba(0, 128, 128, 1)">cs:</span>code, <span style="color: rgba(0, 128, 128, 1)">ds:</span>data, <span style="color: rgba(0, 128, 128, 1)">ss:</span><span style="color: rgba(0, 0, 0, 1)">stack

code segment
</span><span style="color: rgba(0, 128, 128, 1)">start:</span><span style="color: rgba(0, 0, 255, 1)">mov</span><span style="color: rgba(0, 0, 0, 1)"> ax,stack
      </span><span style="color: rgba(0, 0, 255, 1)">mov</span><span style="color: rgba(0, 0, 0, 1)"> ss, ax
      </span><span style="color: rgba(0, 0, 255, 1)">mov</span> sp,<span style="color: rgba(128, 0, 128, 1)">16</span>
      
      <span style="color: rgba(0, 0, 255, 1)">mov</span><span style="color: rgba(0, 0, 0, 1)"> ax, data
      </span><span style="color: rgba(0, 0, 255, 1)">mov</span><span style="color: rgba(0, 0, 0, 1)"> ds, ax
      
      </span><span style="color: rgba(0, 0, 255, 1)">push</span> <span style="color: rgba(0, 128, 128, 1)">ds:</span>[<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">]
      </span><span style="color: rgba(0, 0, 255, 1)">push</span> <span style="color: rgba(0, 128, 128, 1)">ds:</span>[<span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">]
      </span><span style="color: rgba(0, 0, 255, 1)">pop</span> <span style="color: rgba(0, 128, 128, 1)">ds:</span>[<span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">]
      </span><span style="color: rgba(0, 0, 255, 1)">pop</span> <span style="color: rgba(0, 128, 128, 1)">ds:</span>[<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">]
      
      </span><span style="color: rgba(0, 0, 255, 1)">mov</span><span style="color: rgba(0, 0, 0, 1)"> ax,4c00h
      </span><span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> 21h

code ends
data segment
dw 0123h, 0456h
data ends

stack segment
dw </span><span style="color: rgba(128, 0, 128, 1)">0</span>,<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">
stack ends
end</span></pre>
</div>
<p>汇编、链接并执行程序</p>
<p><img src="https://img2020.cnblogs.com/blog/1616553/202011/1616553-20201126175947122-1437624033.png"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;反汇编,运行到程序返回前,用d命令查看data段中的数据</p>
<p><img src="https://img2020.cnblogs.com/blog/1616553/202011/1616553-20201126175956371-1175843919.png"></p>
<p>(1)data段中的数据为:0123H 0456H&nbsp;</p>
<p>(2)cpu执行程序,程序返回前,cs=076A,ss=076E,ds=076D</p>
<p>(3)设程序加载后,code段的段地址为X,则data段的段地址为X+3, stack段的段地址为X+4</p>
<p>&nbsp;</p>
<h3>6.实验任务6</h3>
<p>如果将(1)、(2)、(3)题中最后一条伪指令"end start"改为"end"(也就是说不指名程序的入口),则那个程序仍然可以正确执行?请说明原因。</p>
<p>&nbsp;</p>
<p>第(3)题的程序可以正确执行,因为如果不指定入口,则会按照顺序执行,第(1)、(2)题的数据段都放在了代码段的前面,数据段会被当成指令进行编译,可能出现错误,但第(3)题数据段位于代码段的后面不影响。</p>
<p>&nbsp;</p>
<h3>7.实验任务7</h3>
<p>task7.asm</p>
<div class="cnblogs_code">
<pre>assume <span style="color: rgba(0, 128, 128, 1)">cs:</span><span style="color: rgba(0, 0, 0, 1)">code

a segment
    db </span><span style="color: rgba(128, 0, 128, 1)">1</span>,<span style="color: rgba(128, 0, 128, 1)">2</span>,<span style="color: rgba(128, 0, 128, 1)">3</span>,<span style="color: rgba(128, 0, 128, 1)">4</span>,<span style="color: rgba(128, 0, 128, 1)">5</span>,<span style="color: rgba(128, 0, 128, 1)">6</span>,<span style="color: rgba(128, 0, 128, 1)">7</span>,<span style="color: rgba(128, 0, 128, 1)">8</span><span style="color: rgba(0, 0, 0, 1)">
a ends

b segment
    db </span><span style="color: rgba(128, 0, 128, 1)">1</span>,<span style="color: rgba(128, 0, 128, 1)">2</span>,<span style="color: rgba(128, 0, 128, 1)">3</span>,<span style="color: rgba(128, 0, 128, 1)">4</span>,<span style="color: rgba(128, 0, 128, 1)">5</span>,<span style="color: rgba(128, 0, 128, 1)">6</span>,<span style="color: rgba(128, 0, 128, 1)">7</span>,<span style="color: rgba(128, 0, 128, 1)">8</span><span style="color: rgba(0, 0, 0, 1)">
b ends

c segment
    db </span><span style="color: rgba(128, 0, 128, 1)">0</span>,<span style="color: rgba(128, 0, 128, 1)">0</span>,<span style="color: rgba(128, 0, 128, 1)">0</span>,<span style="color: rgba(128, 0, 128, 1)">0</span>,<span style="color: rgba(128, 0, 128, 1)">0</span>,<span style="color: rgba(128, 0, 128, 1)">0</span>,<span style="color: rgba(128, 0, 128, 1)">0</span>,<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">   
c ends

code segment

</span><span style="color: rgba(0, 128, 128, 1)">start:</span>   <span style="color: rgba(0, 0, 255, 1)">mov</span><span style="color: rgba(0, 0, 0, 1)"> ax,a      
      </span><span style="color: rgba(0, 0, 255, 1)">mov</span><span style="color: rgba(0, 0, 0, 1)"> ds,ax      
      
      </span><span style="color: rgba(0, 0, 255, 1)">mov</span><span style="color: rgba(0, 0, 0, 1)"> ax,c      
      </span><span style="color: rgba(0, 0, 255, 1)">mov</span><span style="color: rgba(0, 0, 0, 1)"> es,ax      
      
      </span><span style="color: rgba(0, 0, 255, 1)">mov</span> ax,<span style="color: rgba(128, 0, 128, 1)">0</span>      
      <span style="color: rgba(0, 0, 255, 1)">mov</span> bx,<span style="color: rgba(128, 0, 128, 1)">0</span>
      <span style="color: rgba(0, 0, 255, 1)">mov</span> cx,<span style="color: rgba(128, 0, 128, 1)">8</span>
      
    <span style="color: rgba(0, 128, 128, 1)">s:</span>    <span style="color: rgba(0, 0, 255, 1)">mov</span> al,<span style="color: rgba(0, 128, 128, 1)">ds:</span><span style="color: rgba(0, 0, 0, 1)">   
      </span><span style="color: rgba(0, 0, 255, 1)">add</span><span style="color: rgba(0, 0, 0, 1)"> ax,ax      
      </span><span style="color: rgba(0, 0, 255, 1)">mov</span> <span style="color: rgba(0, 128, 128, 1)">es:</span><span style="color: rgba(0, 0, 0, 1)">,al   
      </span><span style="color: rgba(0, 0, 255, 1)">inc</span><span style="color: rgba(0, 0, 0, 1)"> bx
      loop s
      
      </span><span style="color: rgba(0, 0, 255, 1)">mov</span><span style="color: rgba(0, 0, 0, 1)"> ax,4c00h
      </span><span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> 21h
      
code ends
end start</span></pre>
</div>
<p>&nbsp;</p>
<p><img src="https://img2020.cnblogs.com/blog/1616553/202011/1616553-20201126191750409-898025966.png"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/1616553/202011/1616553-20201126192301697-2013131546.png"></p>
<p>&nbsp;</p>
<p>&nbsp;编译完后使用d命令查看,可以看出a,b段相加给c段。</p>
<p>&nbsp;</p>
<h3>8.实验任务8</h3>
<p>task8.asm</p>
<div class="cnblogs_code">
<pre>assume <span style="color: rgba(0, 128, 128, 1)">cs:</span>code,<span style="color: rgba(0, 128, 128, 1)">ds:</span>a,<span style="color: rgba(0, 128, 128, 1)">ss:</span><span style="color: rgba(0, 0, 0, 1)">b

    a segment
      dw </span><span style="color: rgba(128, 0, 128, 1)">1</span>,<span style="color: rgba(128, 0, 128, 1)">2</span>,<span style="color: rgba(128, 0, 128, 1)">3</span>,<span style="color: rgba(128, 0, 128, 1)">4</span>,<span style="color: rgba(128, 0, 128, 1)">5</span>,<span style="color: rgba(128, 0, 128, 1)">6</span>,<span style="color: rgba(128, 0, 128, 1)">7</span>,<span style="color: rgba(128, 0, 128, 1)">8</span>,<span style="color: rgba(128, 0, 128, 1)">9</span><span style="color: rgba(0, 0, 0, 1)">,0ah,0ch,0dh,0eh,0fh,0ffh
    a ends

    b segment
      dw </span><span style="color: rgba(128, 0, 128, 1)">0</span>,<span style="color: rgba(128, 0, 128, 1)">0</span>,<span style="color: rgba(128, 0, 128, 1)">0</span>,<span style="color: rgba(128, 0, 128, 1)">0</span>,<span style="color: rgba(128, 0, 128, 1)">0</span>,<span style="color: rgba(128, 0, 128, 1)">0</span>,<span style="color: rgba(128, 0, 128, 1)">0</span>,<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">
    b ends

    code segment
    </span><span style="color: rgba(0, 128, 128, 1)">start:</span>
      
      <span style="color: rgba(0, 0, 255, 1)">mov</span><span style="color: rgba(0, 0, 0, 1)"> ax,b
      </span><span style="color: rgba(0, 0, 255, 1)">mov</span><span style="color: rgba(0, 0, 0, 1)"> ss,ax
      </span><span style="color: rgba(0, 0, 255, 1)">mov</span><span style="color: rgba(0, 0, 0, 1)"> sp,10h   
      
      
      </span><span style="color: rgba(0, 0, 255, 1)">mov</span><span style="color: rgba(0, 0, 0, 1)"> ax,a
      </span><span style="color: rgba(0, 0, 255, 1)">mov</span><span style="color: rgba(0, 0, 0, 1)"> ds,ax
      </span><span style="color: rgba(0, 0, 255, 1)">mov</span> bx,<span style="color: rgba(128, 0, 128, 1)">0</span>
      
      <span style="color: rgba(0, 0, 255, 1)">mov</span> cx,<span style="color: rgba(128, 0, 128, 1)">8</span>
      
      <span style="color: rgba(0, 128, 128, 1)">s:</span>
            <span style="color: rgba(0, 0, 255, 1)">push</span><span style="color: rgba(0, 0, 0, 1)">
            </span><span style="color: rgba(0, 0, 255, 1)">add</span> bx,<span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">
      loop s
      
      </span><span style="color: rgba(0, 0, 255, 1)">mov</span><span style="color: rgba(0, 0, 0, 1)"> ax,4c00h
      </span><span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> 21h
    code ends

end start</span></pre>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/1616553/202011/1616553-20201126193108912-469329396.png"></p>
<p>&nbsp;</p>
<p><img src="https://img2020.cnblogs.com/blog/1616553/202011/1616553-20201126193333229-890668979.png"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><img src="https://img2020.cnblogs.com/blog/1616553/202011/1616553-20201126193436931-1178255066.png"></p>
<p>&nbsp;</p>
<p>&nbsp;成功将a段中的前8个字型数据,逆序存储到b段中。</p>
<p>&nbsp;</p><br><br>
来源:https://www.cnblogs.com/jyxfeiyu/p/14043661.html
頁: [1]
查看完整版本: 汇编语言实验三