汇编语言第一章预备知识
- 格式:doc
- 大小:103.00 KB
- 文档页数:18
第一章预备知识汇编语言是面向机器的低级语言:和其他计算机语言相比,能够充分利用计算机硬件特性;随机器的不同而不同。
学习汇编语言必须做到:了解特定机器的硬件;了解其数据类型的表示方法;了解其指令系统等。
本章的内容包括:什么是汇编语言;汇编源程序举例;汇编和调试过程;寄存器组1.1 机器语言与汇编语言人们用计算机语言操纵计算机,和计算机交流信息。
一般来说,计算机语言可以分为以下几类:低级语言是面向机器的,为特定机器提出的;高级语言是面相人的,接近于自然语言,为了方便人们使用提出的。
一、 机器语言机器指令:能够被计算机识别,并能直接加以执行的语句。
机器语言:由机器指令构成的集合。
机器指令也叫做硬指令,不同类型的CPU 都有自己特有的、一定数量的基本指令,组成其特有的机器语言。
机器指令用二进制代码来表示,这样才能够被计算机识别并直接执行。
机器指令的一般形式为:例如:完成操作:MOV AX, 7FH; 7FH →AX操作码指出了运算的种类,如数据传送、加减运算等。
地址码指出了参与运算的操作数和运算结果的存放位置。
用机器语言编程,就意味着要用二进制数0和1编写程序。
这样做效率很低,而且容易出错。
但为了能够充分利用硬件特性,在一些时候仍然需要用低级语言编程,因此人们想办法对机器语言进行改进,提出了汇编语言。
此后很少直接使用机器语言了。
二、 汇编语言从本质上看,汇编语言是一种符号化的机器语言: 用助记符表示机器指令的操作码; 用变量代替操作数的存放地址;用在语句前加一个标号,来代表该指令的存放地址。
汇编语言的主要操作与机器指令一一对应,是一种用符号书写的(不再是二进制代码)、并遵循一定语法规则的计算机语言。
例如:1011 1000 0111 1111 0000 0000操作码:1011,MOV 目的操作数:1000,AX源操作数:0000 0000 0111 1111,立即数MOV AX, 7FHMOV BX, 1234HADD AX, BX汇编语言是为了方便用户使用而设计的一种符号语言,并不能直接被计算机识别,必须将汇编语言程序翻译成机器语言程序(也叫目标程序),才能由计算机所执行。
《汇编语言》《汇编语言》第一章预备知识一、教学基本内容1、了解机器语言、汇编语言、汇编源程序、汇编程序、汇编、宏汇编程序等基本概念,正确认识学习汇编语言的重要性。
2、掌握8086处理器中各寄存器的符号表示形式、大小及主要用途。
3、理解主存的编址方式以及存储器物理地址形成的方式。
4、理解8086处理器关于使用堆栈的有关规定,掌握堆栈操作指令的功能以及使用格式。
5、掌握数值数据及字符数据在机内的表示形式、压缩BCD码和非压缩BCD码在机内的表示形式。
6、掌握标志寄存器中各标志位的置位方式。
重点:主存的编址方式以及存储器物理地址形成的方式难点:堆栈的概念及使用。
二、知识点:1、机器语言、汇编语言、汇编源程序、汇编程序、汇编、宏汇编程序等基本概念,要求达到“识记”层次。
2、8086处理器中各寄存器的符号表示形式、大小及主要用途,要求达到“识记”层次。
3、主存的编址方式以及存储器物理地址形成的方式,要求达到“理解”层次。
4、堆栈的概念及堆栈操作指令执行后内存及相关寄存器值的变化,要求达到“理解”层次。
5、数值数据及字符数据在机内的表示形式、压缩BCD码和非压缩BCD码在机内的表示形式,要求达到“理解”层次。
6、标志寄存器中各标志位的置位方式,要求达到“识记”层次;运算对各标志位的影响,要求达到“掌握”层次。
1.1机器语言和汇编语言1、机器语言●三种语言的层次关系机器语言汇编语言高级语言●机器指令:指挥计算机完成某一基本操作的命令。
格式:操作码地址码1 地址码2 例:将偏移地址为100的字存储单元中的内容加2,在回送到原存储单元中去的机器指令如下:8306640002其中8306H为操作码6400H 为目的操作数02H 为源操作数●指令系统:机器指令面向机器,每台计算机都规定了自己所特有的一定数量的基本指令,这批指令的全体即为该计算机的指令系统●机器语言:这种机器指令的集合。
●机器语言程序:用机器语言编写的程序。
第一章预备知识汇编语言是面向机器的低级语言:和其他计算机语言相比,能够充分利用计算机硬件特性;随机器的不同而不同。
学习汇编语言必须做到:了解特定机器的硬件;了解其数据类型的表示方法;了解其指令系统等。
本章的内容包括:什么是汇编语言;汇编源程序举例;汇编和调试过程;寄存器组1.1 机器语言与汇编语言人们用计算机语言操纵计算机,和计算机交流信息。
一般来说,计算机语言可以分为以下几类:低级语言是面向机器的,为特定机器提出的;高级语言是面相人的,接近于自然语言,为了方便人们使用提出的。
一、 机器语言机器指令:能够被计算机识别,并能直接加以执行的语句。
机器语言:由机器指令构成的集合。
机器指令也叫做硬指令,不同类型的CPU 都有自己特有的、一定数量的基本指令,组成其特有的机器语言。
机器指令用二进制代码来表示,这样才能够被计算机识别并直接执行。
机器指令的一般形式为:例如:完成操作:MOV AX, 7FH; 7FH →AX操作码指出了运算的种类,如数据传送、加减运算等。
地址码指出了参与运算的操作数和运算结果的存放位置。
用机器语言编程,就意味着要用二进制数0和1编写程序。
这样做效率很低,而且容易出错。
但为了能够充分利用硬件特性,在一些时候仍然需要用低级语言编程,因此人们想办法对机器语言进行改进,提出了汇编语言。
此后很少直接使用机器语言了。
二、 汇编语言从本质上看,汇编语言是一种符号化的机器语言: 用助记符表示机器指令的操作码; 用变量代替操作数的存放地址;用在语句前加一个标号,来代表该指令的存放地址。
汇编语言的主要操作与机器指令一一对应,是一种用符号书写的(不再是二进制代码)、并遵循一定语法规则的计算机语言。
例如:1011 1000 0111 1111 0000 0000操作码:1011,MOV 目的操作数:1000,AX源操作数:0000 0000 0111 1111,立即数MOV AX, 7FHMOV BX, 1234HADD AX, BX汇编语言是为了方便用户使用而设计的一种符号语言,并不能直接被计算机识别,必须将汇编语言程序翻译成机器语言程序(也叫目标程序),才能由计算机所执行。
第一章预备知识汇编语言是面向机器的低级语言:和其他计算机语言相比,能够充分利用计算机硬件特性;随机器的不同而不同。
学习汇编语言必须做到:了解特定机器的硬件;了解其数据类型的表示方法;了解其指令系统等。
本章的内容包括:什么是汇编语言;汇编源程序举例;汇编和调试过程;寄存器组1.1 机器语言与汇编语言人们用计算机语言操纵计算机,和计算机交流信息。
一般来说,计算机语言可以分为以下几类:低级语言是面向机器的,为特定机器提出的;高级语言是面相人的,接近于自然语言,为了方便人们使用提出的。
一、 机器语言机器指令:能够被计算机识别,并能直接加以执行的语句。
机器语言:由机器指令构成的集合。
机器指令也叫做硬指令,不同类型的CPU 都有自己特有的、一定数量的基本指令,组成其特有的机器语言。
机器指令用二进制代码来表示,这样才能够被计算机识别并直接执行。
机器指令的一般形式为:例如:完成操作:MOV AX, 7FH; 7FH →AX操作码指出了运算的种类,如数据传送、加减运算等。
地址码指出了参与运算的操作数和运算结果的存放位置。
用机器语言编程,就意味着要用二进制数0和1编写程序。
这样做效率很低,而且容易出错。
但为了能够充分利用硬件特性,在一些时候仍然需要用低级语言编程,因此人们想办法对机器语言进行改进,提出了汇编语言。
此后很少直接使用机器语言了。
二、 汇编语言从本质上看,汇编语言是一种符号化的机器语言: 用助记符表示机器指令的操作码; 用变量代替操作数的存放地址;用在语句前加一个标号,来代表该指令的存放地址。
汇编语言的主要操作与机器指令一一对应,是一种用符号书写的(不再是二进制代码)、并遵循一定语法规则的计算机语言。
例如:1011 1000 0111 1111 0000 0000操作码:1011,MOV 目的操作数:1000,AX源操作数:0000 0000 0111 1111,立即数MOV AX, 7FHMOV BX, 1234HADD AX, BX汇编语言是为了方便用户使用而设计的一种符号语言,并不能直接被计算机识别,必须将汇编语言程序翻译成机器语言程序(也叫目标程序),才能由计算机所执行。
翻译过程的图形表示:汇编程序不同于汇编语言程序。
汇编语言程序是用汇编语言写的程序,汇编程序是翻译汇编语言程序的加工程序。
汇编程序可分为:ASM——小汇编程序,占有较小的存贮区,但功能较弱,没有宏功能。
MASM——宏汇编程序,需要较大的存贮区,但功能强大,具有宏能力。
这门课使用的是宏汇编程序。
宏,是指用一个宏指令名字代替程序中重复出现的一组语句,在其它的地方,可以用宏指令名字及不同的参数来调用。
宏的功能类似于子函数,但实现方式不同。
此外,汇编语言还必须指出:程序从什么地方开始、什么时候结束、数据放在哪里、数据类型是什么、临时存贮区等,这需要一组另外的指令指示MASM工作,这种指令叫做伪指令。
三、为什么要学习汇编语言?汇编程序产生的目标程序简短,占用的存贮空间小,执行速度快,适合于编写过程控制、多媒体接口、通讯程序。
有些无法用高级语言实现的操作,可以由汇编完成。
1.2 汇编源程序举例举例一、完整源程序为了对汇编语言有具体的理解,下面编写一个简单的程序:.386;堆栈段STACK SEGMENT USE16 STACK ;段名和组合类型DB 200 DUP(0) ;堆栈的大小为200个字节STACK ENDS;数据段DATA SEGMENT USE16;段为16位段SUM DW ? ;SUM为字变量,初值不定DATA ENDS;代码段CODE SEGMENT USE16ASSUME CS:CODE, SS:STACK, DS:DATA, ES:DATASTART: MOV AX, DATAMOV DS, AX ;数据段首址送DSMOV CX, 50 ;循环计数器置初值MOV AX, 0 ;累加器置初值MOV BX, 1 ;1→BXNEXT: ADD AX, BX ;(AX)+(BX)→AXINC BXINC BX ;(BX)+2→BXDEC CX ;(CX)-1→CXJNE NEXT ;(CX)≠0转NEXTMOV SUM, AX ;(CX)=0累加结果→SUMMOV AH, 4CHINT 21H;返回DOSCODE ENDSEND START ;源程序结束语句。
程序运行时,启动地址为START二、分段在该例中,一共定义了三个段:堆栈段、数据段和代码段。
.386;堆栈段STACK SEGMENT USE16 STACK…STACK ENDS;数据段DATA SEGMENT USE16…DATA ENDS;代码段CODE SEGMENT USE16ASSUME CS:CODE, SS:STACK, DS:DATA, ES:DATASTART: MOV AX,DATAMOV DS,AX…MOV AH,4CHINT 21HCODE ENDSEND START三、语句该例中的源程序由一系列语句组成。
语句的一般格式为:[名字] 操作符[操作数或地址] [;注释]1. 操作符可分为3类:●指令●伪指令●宏2. 操作数也可分为3类:●数值●寄存器●内存3. 常用指令:MOV AX, 0ADD AX, BXINC AXDEC CX等1.3汇编和调试过程一、汇编过程1. 必备软件●MASM.EXE●LINK.EXE●TD.EXE●其他:文本编辑器、DOSBOX等2. 命令●MASM DEMO.ASM汇编DEMO.ASM,应该生成MASM.OBJ●LINK DEMO.OBJ连接DEMO.OBJ,应该生成MASM.EXE●TD DEMO.EXE调试DEMO.EXE二、调试程序Turbo Debugger的使用1. 如图,TD的界面可分为:●菜单●代码操作区●数据操作区●寄存器操作区●标记寄存器操作区●堆栈段操作区标记有:●当前指令标记●当前栈顶标记2. TD的主要操作●单步执行:F7,F8●设置(取消)断点:F2●直接执行:F93. 查看数据区4. 查看用户界面5. 修改数据、指令、寄存器内容1.4Intel 8086微处理器简介汇编语言是一种面向机器的低级语言,要学好它,必须对计算机硬件结构有一个初步了解。
一、微型计算机的组成微型计算机主要由微处理器(CPU)、主存贮器(MM)、外部设备及互连部件组成。
如下图所示:微处理器是计算机系统的核心。
存贮器:存放程序以及数据、信息、中间结果。
外设:I/O设备和大容量存贮器。
I/O设备包括显示器、打印机、键盘等。
二、Intel 80x86内部结构个人电脑的发展,经过了8086、80186、80286、80386等几代产品,Intel 80x86是1985年推出的32位处理器,按功能可分为执行部件(EU)和总线接口部件(BIU)。
其中运算器执行所有的算术和逻辑运算指令;控制器负责计算机的控制工作(如取出指令、发出各种控制命令)。
其内部结构如下所示:各部分的功能:1. 总线接口部件:是CPU与整个计算机系统之间的高速接口功能:接受所有的总线操作请求,并按优先权进行选择,最大限度地利用本身的资源为这些请求服务。
2. 执行部件:寄存器组、标志寄存器、算逻部件、控制部件等组成功能:从译码指令队列中取出指令并且执行(1) 数据寄存器组(EAX,EBX,ECX,EDX)●EAX (累加器)Accumulator●EBX (基址寄存器)Base●ECX (计数寄存器)Count●EDX (数据寄存器)Data作用:用来保存操作数、运算结果或作指示器、变址寄存器,减少存取操作数所需要的访问总线和主存储器的时间,加快运行速度。
注意:●它们既可作32位、16位寄存器,也可作8位寄存器使用。
●16位和8位的寄存器不能作指示器或变址寄存器。
(2) 指示器变址寄存器组(ESI、EDI、ESP、EBP)作用:一般用来存放操作数的偏移地址,用作指示器或变址寄存器。
●ESP(Stack Pointer),称为堆栈指示器,存放的是当前堆栈段中栈顶的偏移地址;●EBP(Base Pointer),为对堆栈操作的基址寄存器;●ESI(Source Index),称为源变址寄址器;字符串指令源操作数的指示器;●EDI(Destination Index),称为目的变址寄存器;字符串指令目的操作数的指示器3. 指令预取部件和指令译码部件指令预取部件:通过总线接口部件,把将要执行的指令从主存中取出,送入指令排队机构中排队。
指令译码部件:从指令预取部件中读出指令并译码,再送入译码指令队列排队供执行部件使用。
指令指示器:它总是保存着下一条将要被CPU执行的指令的偏移地址,其值为该指令到所在段首址的字节距离。
4. 分段部件和分页部件(1) 使用分段部件和分页部件实现虚拟存储空间映射到物理存储空间程序员使用二维地址,即“段地址:段内偏移地址”分段部件段地址:段内偏移地址一维的线性的地址分页部件虚拟的线性的地址主存储器的物理地址(2) 段寄存器用来保存段首地址●代码段寄存器CS●堆栈段寄存器SS●数据段寄存器DS●附加段寄存器ES●附加段寄存器FS●附加段寄存器GS5. 指令执行过程:(1) 指令预取部件和指令译码部件由EIP取得指令的偏移地址EIP增量,形成下一条指令的地址(2) 分段部件和分页部件由分段部件和分页部件,将“CS : EIP”转换为指令的物理地址(3) 总线接口部件从主存中取指令送到预取指令队列(4) CPU按序从预取指令队列中取出指令送到指令译码部件。
(5) 指令译码部件译码,执行部件执行指令;(6) 执行过程中若需要取主存操作数,从指令中取得操作数偏移地址(7) 分段部件和分页部件由分段部件和分页部件,将“段首址: 偏移地址”转换为操作数的物理地址(8) 总线接口部件从主存中取数据送到执行部件三、80x86的三种工作方式1. 实方式(实际地址)操作相当于一个可进行32位快速运算的8086(内部32位、外部总线16位数据、20位地址)2. 保护方式(虚地址)是80386设计目标全部达到的工作方式,通过对程序使用的存储区采用分段、分页的存储管理机制,达到分级使用互不干扰的保护目的。
能为每个任务提供一台虚拟处理器,使每个任务单独执行,快速切换。
3. 虚拟8086方式保护方式下所提供的同时模拟多个8086处理器。
本章作业一、1.2二、利用寄存器,编程实现:(12 + 34) * 56 – 78,结果放在寄存器AX中。