8086汇编语言nasm版本
<p><span style="color: #ff0000"><strong>实模式和保护模式</strong></span></p><p>在计算机上面,实模式存在的时间非常之短,所以一般我们是感觉不到它的存在的。CPU复位(reset)或加电(power on)的时候就是以实模式启动,在这个时候处理器以实模式工作,不能实现权限分级,也不能访问20位以上的地址线,也就是只能访问1M内存。之后一般就加载操作系统模块,进入保护模式</p>
<p><span style="color: #ff0000"><strong>从显示字符串开始</strong></span></p>
<p>屏幕有 25列X80行</p>
<p>列和行从0开始计数</p>
<p>显存地址空间:</p>
<p><code>0xB8000~0xBFFFF</code></p>
<p>屏幕上的每个字符对应着显存中的两个连续字节,前一个是字符的ASCII代码,后面是字符的显示属性,包括字符颜色(前景色)和底色(背景色)<br />
</p>
<p style="text-align: center"><img src="https://img.jbzj.com/file_images/article/202001/2020011911180521.jpg?202001911192" alt="" /></p>
<p>一般情况下,如果没有附加任何指示,段地址默认在段寄存器DS中。比如</p>
<p><code>mov byte ,'L'</code></p>
<p>使用ES作为段地址的情况:</p>
<p><code>mov byte ,'L'</code></p>
<p>使用方括号括起来的原因:目的操作数给出的是一个内存地址,我们要用源操作数来修改这个地址里的内容,所以,目的操作数必须用方括号围起来,以表明它是一个地址。</p>
<p>关键字byte用来修饰目的操作数,指出本次传送是以字节的方式进行的。</p>
<p><span style="color: #ff0000"><strong>初始化段寄存器ES</strong></span></p>
<div class="jb51code">
<pre class="brush:plain;">
mov ax,0xb800
mov ex,ax ;不能直接将立即数移到段寄存器中</pre>
</div>
<p><span style="color: #ff0000"><strong>显示标号的汇编地址</strong></span></p>
<p>在源程序的编译阶段,编译器会把源程序整体上作为一个独立的段来处理,并从0开始计算和跟踪每一条指令的地址。<br />
在NASM汇编语言里,每条指令的前面都可以拥有一个标号,以代表和指示该指令的汇编地址。</p>
<p><span style="color: #ff0000"><strong>在程序中声明并初始化数据</strong></span></p>
<p>db byte 0,0,0,0,0</p>
<p>代表声明了5个字节,并初始化为0</p>
<p>db,dw,dd,dq不是处理器指令,它指示编译器提供的汇编指令,所以称做伪指令。</p>
<p><span style="color: #ff0000"><strong>访问操作数</strong></span></p>
<p>在 nasm 语法里,对 memory 操作数需要加 [ ] 括号</p>
<p><span style="color: #ff0000"><strong>常用运算符积累</strong></span></p>
<p>mul</p>
<p>两个相乘数,要么都是8位,要么都是16位。 8位乘法,16位乘法。</p>
<p>如果是8位,一个数字默认存放在al中,另外一个数字存放在其他8位寄存器中或者字节型内存单元中。</p>
<p>如果是16位,一个数字默认存放在ax中,另外一个数字存放在其他16位寄存器中或者字型内存单元中。</p>
<p>结果: 8位乘法,得到一个16位数, 结果存放在ax中</p>
<p>16位乘法,得到一个32位数, 低16位存放在ax中,高16位存放在dx中</p>
<p><span style="color: #ff0000"><strong>获取字符串长度</strong></span></p>
<div class="jb51code">
<pre class="brush:plain;">
string db '你的字'
len_string equ $ - string</pre>
</div>
<p>$就是当前地址,$-string 就是当前地址减去string的初始地址,即可得到string的长度。</p>
<p><span style="color: #ff0000"><strong>总结</strong></span></p>
<p>以上所述是小编给大家介绍的8086汇编语言nasm版本,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对琼殿技术社区网站的支持!<br />
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!</p>
<div class="art_xg">
<b>您可能感兴趣的文章:</b><ul><li>8086汇编开发环境搭建和Debug模式介绍(图文详解)</li><li>汇编语言lea指令使用方法解析</li><li>汇编语言之寄存器(详细介绍)</li><li>汇编语言AAD,DAA,DAS用法解析</li><li>Windows10下利用DOSBOX和MASM32搭建汇编语言开发环境</li></ul>
</div>
</div>
<!--endmain-->
頁:
[1]