您当前的位置:首页 > 好词好句 > 正文

汇编语言程序设计(汇编语言程序设计的内容简介)

汇编语言的特点是用符号代替了机器指令代码,计算机不能象用机器语言编写的程序一样直接识别和执行,汇编程序把汇编语言翻译成机器语言的过程称为汇编,汇编程序把汇编语言翻译成机器语言的过程称为汇编,汇编语言具体为汇编语言(AssemblyLanguage)是面向机器的程序设计语言,要由一种程序将汇编语言翻译成机器语言,要由一种程序将汇编语言翻译成机器语言,较为系统地介绍了汇编语言程序设计所需要的指令、语法以及调试工具。

汇编语言程序设计的内容简介

本书根据IEEE/ACM推出的CC2005和我国教育部高等学校计算机科学与技术教学指导委员会2006年发布的《高等学校计算机科学与技术专业发展战略研究报告暨专业规范(试行)》编写而成,内容涵盖了知识领域CSAR3汇编级机器组织的知识点。本书以Intel 80x86指令系统和汇编语言开发工具MASM 6.11与MASM 32为主体,在PC的MS-DOS和Windows环境中,较为系统地介绍了汇编语言程序设计所需要的指令、语法以及调试工具。第1~5章是80x86汇编语言的基本内容,包括汇编语言基础知识、寻址方式、主要汇编指令、伪指令、源程序格式、分支结构程序、循环结构程序、子程序和宏的程序设计技巧;第6~8章介绍了输入/输出程序的设计,包括输入/输出的基本概念,查询方式的I/O程序设计,中断处理程序设计,键盘、鼠标和视频的操作,磁盘文件存取的相关程序设计;第9~10章将内容扩展到32位汇编语言、多媒体指令和浮点编程等应用方面以及Windows窗口应用程序的开发。本书适合作为高等院校计算机科学与技术及相关专业的教材,也可作为相关专业工程技术人员的参考书。

什么是汇编程序什么是汇编语言

最初,程序只能用机器语言编写。用机器语言编写程序是早期经过严格训练的专业技术人员的工作,普通的程序员一般难以胜任,而且用机器语言编写的程序不易阅读、出错率高、难以维护,也不能直观地反映用计算机解决问题的基本思路。但也有优点,用机器语言编写出来的程序执行效率高,CPU严格按照程序员的要求去做,没有多余的额外操作。所以,在以保留“程序执行效率高”为前提下,人们就开始着手研究一种能大大改善程序可读性的编程方法。为了改善机器指令的可读性,选用了一些能反映机器指令功能的单词或词组来代表该机器指令,而不再关心机器指令的具体二进制编码。与此同时,也把CPU内部的各种资源符号化,使用该符号名也等于引用了该具体的物理资源。如此一来,令人难懂的二进制机器指令就可以用通俗易懂的、具有一定含义的符号指令来表示了,于是,汇编语言就有了雏型。现在,我们称这些具有一定含义的符号为助记符,用指令助记符、符号地址等组成的符号指令称为汇编格式指令(或汇编指令)。汇编语言是汇编指令集、伪指令集和使用它们规则的统称。伪指令是在程序设计时所需要的一些辅助性说明指令,它不对应具体的机器指令。用汇编语言编写的程序称为汇编语言程序,或汇编语言源程序。

汇编语言有哪些

一、通用数据传送指令

  • MOV 传送字或字节

  • MOVSX 先符号扩展,再传送

  • MOVZX 先零扩展,再传送

  • PUSH 把字压入堆栈

  • POP 把字弹出堆栈

  • PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈

  • POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈

  • PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈

  • POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈

  • BSWAP 交换32位寄存器里字节的顺序

  • XCHG 交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数)

  • CMPXCHG 比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX )

  • XADD 先交换再累加.( 结果在第一个操作数里 )

  • XLAT 字节查表转换

  • ── BX 指向一张 256 字节的表的起点, AL 为表的索引值 (0-255,即0-FFH); 返回 AL 为查表结果. ( [BX+AL]-》AL )

  • 二、输入输出端口传送指令

  • IN I/O端口输入. ( 语法: IN 累加器, {端口号│DX} )

  • OUT I/O端口输出. ( 语法: OUT {端口号│DX},累加器 )

  • 输入输出端口由立即方式指定时, 其范围是 0-255; 由寄存器 DX 指定时, 其范围是 0-65535

  • 三、目的地址传送指令

  • LEA 装入有效地址. 例: LEA DX,string ;把偏移地址存到DX.

  • LDS 传送目标指针,把指针内容装入DS. 例: LDS SI,string ;把段地址:偏移地址存到DS:SI

  • LES 传送目标指针,把指针内容装入ES. 例: LES DI,string ;把段地址:偏移地址存到ES:DI

  • LFS 传送目标指针,把指针内容装入FS. 例: LFS DI,string ;把段地址:偏移地址存到FS:DI

  • LGS 传送目标指针,把指针内容装入GS. 例: LGS DI,string ;把段地址:偏移地址存到GS:DI

  • LSS 传送目标指针,把指针内容装入SS. 例: LSS DI,string ;把段地址:偏移地址存到SS:DI

  • 四、标志传送指令

  • LAHF 标志寄存器传送,把标志装入AH

  • SAHF 标志寄存器传送,把AH内容装入标志寄存器

  • PUSHF 标志入栈

  • POPF 标志出栈

  • PUSHD 32位标志入栈

  • POPD 32位标志出栈

  • 一、基本简介

    1.汇编语言(AssemblyLanguage)是面向机器的程序设计语言。在汇编语言中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。

    2.使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编程序把汇编语言翻译成机器语言的过程称为汇编。

    二、主要特点

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

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

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

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

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

    (1)简捷性 

    汇编语言由于采用了助记符号来编写程序,比用机器语言的二进制代码编程要方便些,在一定程度上简化了编程过程。汇编语言的特点是用符号代替了机器指令代码,而且助记符与指令代码一一对应,基本保留了机器语言的灵活性。使用汇编语言能面向机器并较好地发挥机器的特性,得到质量较高的程序。

    (2)执行过程

    用汇编语言编制的程序输入计算机,计算机不能象用机器语言编写的程序一样直接识别和执行,必须通过预先放入计算机的“汇编程序“中进行加工和翻译,才能变成能够被计算机直接识别和处理的二进制代码程序。用汇编语言等非机器语言书写好的符号程序称为源程序,运行时汇编程序要将源程序翻译成目标程序。目标程序是机器语言程序,当它被安置在内存的预定位置上,就能被计算机的CPU处理和执行。

    (3)独特性

    汇编语言是面向具体机型的,它离不开具体计算机的指令系统,因此,对于不同型号的计算机,有着不同的结构的汇编语言,而且,对于同一问题所编制的汇编语言程序在不同种类的计算机间是互不相通的。

    四、优点

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

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

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

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

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

    五、缺点

    同时还应该认识到,汇编语言是一种层次非常低的语言,它仅仅高于直接手工编写二进制的机器指令码,因此不可避免地存在一些缺点:

    1.编写的代码非常难懂,不好维护;

    2.很容易产生bug,难于调试;

    3.只能针对特定的体系结构和处理器进行优化;

    4.开发效率很低,时间长且单调。

    请问汇编语言是什么又有那些分类

    人与电脑的沟通主要是通过汇编语言来完成,汇编语言具体为

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

    要注意的是,汇编语言和机器的cpu是有很大联系的,当然汇编语言也并不全是cpu的指令。

    不同架构的CPU指令并不相同,如x86,powerpc,ARM各有各的指令系统;甚至同一种架构的CPU有几套指令集,典型的如arm除了有32位的指令集外,还有一套16位的thumb指令集。但是作为开发语言的汇编,本质上是一套语法规则和助记符的集合,它可以包容不同的指令集。如果从CPU体系来划分,常见的汇编有两种:IBM PC汇编和ARM汇编。

  • IBM PC汇编也就是Intel的汇编,因为IBM 最早推出PC机,后来的体系很多都要和它兼容,所以也使用了相同的汇编语言。ARM压根没考虑过兼容,它的指令集和x86完全是两个体系,所以汇编语言也独立发展出一套。

  • CPU只是限定了机器码,作为开发语言的汇编,其实还和编译器息息相关。汇编语言出现的早,没有像C语言一样定义出标准,所以编译器的厂商各搞一套。到现在,最有名的也是两家:MASM和GNU ASM。前者是微软的,只支持x86,用在DOS/Windows平台中;后者是开源产品,主要用在Linux中,基本上支持大部分的CPU架构。这两者的区别在于伪指令的不同,伪指令是用来告诉编译器如何工作的,和编译器相关,和CPU无关。


  • 声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,谢谢。

    上一篇: motorcar(明明是用油的,那为什么叫汽车而不是油车)

    下一篇: 国美电器商城首页(国美电器网上商城信誉怎么样)



    推荐阅读