8086汇编语言nasm版本

 更新时间:2020年01月19日 11:19:39   转载 作者:crabstew  
这篇文章主要介绍了8086汇编语言nasm版本,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

实模式和保护模式

在计算机上面,实模式存在的时间非常之短,所以一般我们是感觉不到它的存在的。CPU复位(reset)或加电(power on)的时候就是以实模式启动,在这个时候处理器以实模式工作,不能实现权限分级,也不能访问20位以上的地址线,也就是只能访问1M内存。之后一般就加载操作系统模块,进入保护模式

从显示字符串开始

屏幕有 25列X80行

列和行从0开始计数

显存地址空间:

0xB8000~0xBFFFF

屏幕上的每个字符对应着显存中的两个连续字节,前一个是字符的ASCII代码,后面是字符的显示属性,包括字符颜色(前景色)和底色(背景色)

一般情况下,如果没有附加任何指示,段地址默认在段寄存器DS中。比如

mov byte [0x00],'L'

使用ES作为段地址的情况:

mov byte [es:0x00],'L'

使用方括号括起来的原因:目的操作数给出的是一个内存地址,我们要用源操作数来修改这个地址里的内容,所以,目的操作数必须用方括号围起来,以表明它是一个地址。

关键字byte用来修饰目的操作数,指出本次传送是以字节的方式进行的。

初始化段寄存器ES

mov ax,0xb800
mov ex,ax ;不能直接将立即数移到段寄存器中

显示标号的汇编地址

在源程序的编译阶段,编译器会把源程序整体上作为一个独立的段来处理,并从0开始计算和跟踪每一条指令的地址。
在NASM汇编语言里,每条指令的前面都可以拥有一个标号,以代表和指示该指令的汇编地址。

在程序中声明并初始化数据

db byte 0,0,0,0,0

代表声明了5个字节,并初始化为0

db,dw,dd,dq不是处理器指令,它指示编译器提供的汇编指令,所以称做伪指令。

访问操作数

在 nasm 语法里,对 memory 操作数需要加 [ ] 括号

常用运算符积累

mul

两个相乘数,要么都是8位,要么都是16位。 8位乘法,16位乘法。

如果是8位,一个数字默认存放在al中,另外一个数字存放在其他8位寄存器中或者字节型内存单元中。

如果是16位,一个数字默认存放在ax中,另外一个数字存放在其他16位寄存器中或者字型内存单元中。

结果: 8位乘法,得到一个16位数, 结果存放在ax中

16位乘法,得到一个32位数, 低16位存放在ax中,高16位存放在dx中

获取字符串长度

string db '你的字' 
len_string equ $ - string

$就是当前地址,$-string 就是当前地址减去string的初始地址,即可得到string的长度。

总结

以上所述是小编给大家介绍的8086汇编语言nasm版本,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

相关文章

  • 汇编语言中的各种寄存器介绍

    汇编语言中的各种寄存器介绍

    汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言.这篇文章主要介绍了汇编语言中的各种寄存器介绍,需要的朋友可以参考下
    2020-01-01
  • 汇编语言伪指令和汇编指令的区别

    汇编语言伪指令和汇编指令的区别

    指令是控制程序运行时的机器代码运作的,是CPU执行的依据,编程、编译、执行都是有效的。伪指令不直接控制运行时刻的机器,但是控制翻译程序如何生成机器指令代码,感兴趣的朋友跟随小编一起看看吧
    2020-01-01
  • 详解汇编语言MOV指令

    详解汇编语言MOV指令

    在汇编语言中,MOV指令是数据传送指令,也是最基本的编程指令,这篇文章主要介绍了汇编语言MOV指令,需要的朋友可以参考下
    2020-01-01
  • 汇编语言中cmp指令用法笔记与总结

    汇编语言中cmp指令用法笔记与总结

    这篇文章主要介绍了汇编语言中cmp指令用法,结合实例形式总结分析了汇编语言cmp指令基本功能、使用方法及操作注意事项,需要的朋友可以参考下
    2020-01-01
  • 常用的汇编指令与技巧(收藏)

    常用的汇编指令与技巧(收藏)

    这篇文章主要介绍了常用的汇编指令与技巧,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • 汇编中的数组分配和指针的实现代码

    汇编中的数组分配和指针的实现代码

    这篇文章主要介绍了汇编中的数组分配和指针的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • GNU ARM汇编语法原理及操作解析

    GNU ARM汇编语法原理及操作解析

    这篇文章主要介绍了GNU ARM汇编语法原理及操作解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • 详解汇编语言各种指令的解释与用法

    详解汇编语言各种指令的解释与用法

    这篇文章主要介绍了汇编语言各种指令的解释与用法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • 浅析ELF转二进制允许把 Binary 文件加载到任意位置

    浅析ELF转二进制允许把 Binary 文件加载到任意位置

    本文通过 eip + 偏移地址 实现了运行时计算数据地址,不再需要把 Binary 文件装载到固定的位置。本文通过实例代码给大家介绍的非常详细,需要的朋友参考下吧
    2020-02-02
  • 汇编实现简单选择排序的方法示例

    汇编实现简单选择排序的方法示例

    这篇文章主要介绍了汇编实现简单选择排序的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02

最新评论