Loading... <!-- wp:audio {"id":183} --> <figure class="wp-block-audio"><audio controls src="https://www.cjovi.icu/usr/uploads/2020/10/10-I-Remember-You-Remastered.m4a"></audio><figcaption><span class="has-inline-color has-luminous-vivid-amber-color"><em><span class="external-link"><a class="no-external-link" href="https://music.163.com/#/song?id=4279879" target="_blank"><i data-feather="external-link"></i>i remember you</a></span></em></span></figcaption></figure> <!-- /wp:audio --> <!-- wp:paragraph --> <p>今天只学习了2.12-3.5,进度稍微有一点落后,希望周末可以补回来</p> <!-- /wp:paragraph --> <!-- wp:heading {"level":3} --> <h3>内存中字的存储</h3> <!-- /wp:heading --> <!-- wp:paragraph --> <p>8086是16位的,显然一次可以处理16位的数据,虽然内存以字节为单位存储数据,但是仍然可以以字为单位存储,一个字为16位。存储字的内存单元被称为<strong>字单元</strong>。特别需要注意的一点,<strong>字单元中,高地址单元存储高位</strong>。</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>若一个子单元起始地址为N,则我们称这是N地址字单元。</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>存储数据时是存到字单元还是单个内存单元,取决于数据的类型,比如</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p><code>mov [0],ax</code> 就会改变[0]和[1]中的数据。</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p><code>mov [0],al</code> 就只会改变[0]中的数据。</p> <!-- /wp:paragraph --> <!-- wp:separator --> <hr class="wp-block-separator"/> <!-- /wp:separator --> <!-- wp:heading {"level":3} --> <h3>DS和[address]</h3> <!-- /wp:heading --> <!-- wp:paragraph --> <p>DS是另一种段寄存器(已经碰到的另一种是CS),通常用来存放要访问的段地址。</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>[address]表示一个内存单位address表示偏移地址,当然光有偏移地址是不够的,所以要[],cpu会自动从DS中调用段地址。</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>注意:8086没有提供将数据直接赋给段寄存器的方法,所以<code>mov ds,1000</code>是不合法的。所以改变DS等,可以通过一个寄存器间接复制的方法。</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>mov ax,1000 mov ds,ax</code></pre> <!-- /wp:code --> <!-- wp:paragraph --> <p>同时<code>mov [0],1000</code>同样不合法,要用与上类似的方法。</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p><span class="has-inline-color has-cyan-bluish-gray-color">注:[立即数]表示物理地址,仅仅在debug中可以使用,汇编程序中,则要加上段前缀</span></p> <!-- /wp:paragraph --> <!-- wp:separator --> <hr class="wp-block-separator"/> <!-- /wp:separator --> <!-- wp:heading {"level":3} --> <h3>几种合法操作</h3> <!-- /wp:heading --> <!-- wp:code --> <pre class="wp-block-code"><code>mov ax,ds ;段寄存器赋值到通用寄存器 mov [0],ds ;段寄存器复制到内存单元 mov ds,[0] ;内存单元复制到段寄存器</code></pre> <!-- /wp:code --> <!-- wp:paragraph --> <p>然而书上要求实验的<code>add ds,ax</code>则是不合法的,加法运算一般只能用通用寄存器完成。</p> <!-- /wp:paragraph --> <!-- wp:separator --> <hr class="wp-block-separator"/> <!-- /wp:separator --> <!-- wp:heading {"level":3} --> <h3>数据段</h3> <!-- /wp:heading --> <!-- wp:paragraph --> <p>其实我觉得这个没什么特别的,权当介绍了一下内存段可以做的一种思路。即把一段内存都当做数据来看,通过[address]的方法调用这些数据。(现在我猜也许数组就是这么整的)</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p></p> <!-- /wp:paragraph --> 最后修改:2021 年 01 月 02 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果觉得我的文章对你有用,那听听上面我喜欢的歌吧