61阅读

汇编语言-01--汇编语言简要介绍

发布时间:2018-01-07 所属栏目:汇编语言入门

一 : 01--汇编语言简要介绍

8086汇编语言初学者教程(第一部分)

本教程是为从未接触过汇编语言的或者略知一二的朋友编写的。[www.61k.com]

当然,如果你有其他语言基础(Basic, C/C++, Pascal...) 更

好。但是,即使你熟悉汇编语言,最好也将本文通读以便熟悉

Emu8086 标记。

这里假定您已经掌握了关于数制的知识(十六进制/二进制),

如果目前还没有,在进行下面内容之前,请参考上一章节 进制

什么是汇编语言?

    汇编语言是底层编程语言。为了学习这门语言,你需要对于

计算机结构有所了解。计算机系统模型如下:

汇编语言入门 【8086汇编基础】01--汇编语言简要介绍

系统总线 system bus(图中黄色部分)是将计算机各个

部分连接到一起的部件。

CPU是计算机的心脏,大部分的运算都是在CPU中完成的。

RAM是读取并且存放将要执行的程序的地方。

CPU内部 

汇编语言入门 【8086汇编基础】01--汇编语言简要介绍

通用寄存器

8086CPU有8个通用寄存器,每一个寄存器都有自己的名称:

  • AX 累加寄存器 accumulator register(分为 AH / AL).
  • BX 基址寄存器 base address register (分为 BH / BL).
  • CX 计数寄存器 count register(分为 CH / CL ).
  • DX 数据寄存器 data register (分为 DH / DL).
  • SI 源变址寄存器 source index register.
  • DI 目的变址寄存器 destination index register.
  • BP 基址指针寄存器 base pointer.
  • SP 堆栈寄存器 stack pointer.
编程中,由程序员决定通用寄存器的具体用途。寄存器的主要目

的是保存数值(变量)。上面提到的寄存器是16位的,意思是:

 0011000000111001b (二进制),或者12345

(十进制形式)。

4个通用寄存器(AX, BX, CX, DX) 在使用时分为两个8位

寄存器,例如 假设AX= 0011000000111001b

AH=00110000b AL=00111001b。当你修改其中任

意8位值,整个16位寄存器的值同样改变。同样对于其他的3

个寄存器,“H”表示高8位,“L”表示低8位。

寄存器在CPU内部,访问中它们速度远远超过内存。因为,

访问内存需要经过系统总线,所以时间要长一些。而访问

寄存器中的数据几乎不需要时间。于是,编程中,应当尽量

在寄存器中保存数据。虽然寄存器很小,并且这些寄存器都

有具体用途,但他们依然是存放计算中临时数据的好地方。

段寄存器

  • CS 代码段寄存器,用来存放当前正在运行的指令
  • DS 数据段寄存器,用来存放当前运行程序所用的数据
  • ES 附加段寄存器,由程序员决定用途
  • SS 堆栈段寄存器,指出堆栈所在区域
尽管容许在段寄存器中存放任何数据,但是这决不是

一个好主意。段寄存器有着非常特别的目的--指出

可以访问内存块的地址。

段寄存器与通用寄存器协同工作就可以访问任意的内存

区域。例如,如果我们打算访问物理地址是12345h

(十六进制)的内存单元,我们应设置DS = 1230h

SI = 0045h 这样以来,我们便能访问超过一个寄存器

(16位)所能表示的内存地址的范围。CPU计算物理地址

的方法是将段寄存器乘以10H在加上一个特定的通用

寄存器。(1230h * 10h + 45h = 12345h):

汇编语言入门 【8086汇编基础】01--汇编语言简要介绍

 
这种,由两个寄存器生成的地址被称为有效地址

(effective address)

默认下,BXSI 及 DI 与 DS协同工作,BP SP

与 SS 寄存器协同工作。

其余的通用寄存器不能形成有效地址!同样,尽管

BX可以形成有效地址,但是BH BL不能!

控制寄存

  • IP 指令指针寄存器 instruction pointer
  • Flags Register 状态标志寄存器

IP 始终同CS 协同工作,指出当前执行的指令。

Flags Register 完成一次数学运算后,由CPU自动

修改,通过它可以得到当前结果类型,也可以作为跳转

语句条件。通常你无法直接访问它们。

<<< 上一部分 <<<【8086汇编基础】00--基础知识--各种进制的数据     

>>> 下一部分 >>>【8086汇编基础】02--寻址方式和MOV指令

扩展:8086汇编语言 / 8086汇编语言程序设计 / 8086汇编语言编译器

二 : 汇编语言基础MOVAX,BXNOTAXADDAX,BXINCAX

汇编语言基础

MOV AX,BX
NOT AX
ADD AX,BX
I AX
执行上述指令后:AX=____,ZF=_______,CF=_____


地一条指令:AX=BX

第二条指令:AX=!BX

第三条指令:AX=FFFFFFFF

最后一条指令:AX=0,CF=1,ZF=1

三 : 汇编语言:从机器语言到高级语言的进化

【51CTO年终策划】汇编语言(AssemblyLanguage)是面向机器的程序设计语言。在汇编语合中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编程序把汇编语言翻译成机器语言的过程称为汇编。

1950年代,为了让广大程序员摆脱机器语言的束缚,让程序开发不再成为少数人的专利。一些基于RISC架构的汇编语言开始出现,比如MIPS, Sun的SPARC以及HP的PA-RISC语言。

汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。汇编语言,作为一门语言,对应于高级语言的编译器,需要一个“汇编器”来把汇编语言原文件汇编成机器可执行的代码。高级的汇编器如MASM,TASM等等为我们写汇编程序提供了很多类似于高级语言的特征,比如结构化、抽象等。在这样的环境中编写的汇编程序,有很大一部分是面向汇编器的伪指令,已经类同于高级语言。现在的汇编环境已经如此高级,即使全部用汇编语言来编写windows的应用程序也是可行的,但这不是汇编语言的长处。汇编语言的长处在于编写高效且需要对机器硬件精确控制的程序。

汇编语言:从机器语言到高级语言的进化_汇编指令

汇编语言逻辑一例

汇编语言比机器语言易于读写、调试和修改,同时具有机器语言全部优点。但在编写复杂程序时,相对高级语言代码量较大,而且汇编语言依赖于具体的处理器体系结构,不能通用,因此不能直接在不同处理器体系结构之间移植。

汇编语言的特点:

1.面向机器的低级语言,通常是为特定的计算机或系列计算机专门设计的。

2.保持了机器语言的优点,具有直接和简捷的特点。

3.可有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等。

4.目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。

5.经常与高级语言配合使用,应用十分广泛。

本文标题:汇编语言-01--汇编语言简要介绍
本文地址: http://www.61k.com/1062267.html

61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1