1 / 79

课程性质

课程性质. 本课程是计算机科学与技术专业的必修课程、也是本系其它专业专业课程学习的专业基础课程。. 教学目的. 本课程向学生介绍汇编语言程序设计的方法和技巧。 以 PC 计算机的汇编语言为主,通过课堂教学和上机实习,使学生掌握 DOS 和 Windows 汇编序言程序设计的特点及技术,即汇编工具 Masm611 和 Masm32 的使用;. 掌握软件与硬件的交互原理,即 DOS 、 BIOS 功能的调用方法、 MSDN 的使用、 API 的调用 熟练使用使用调试工具 Debug 和 W32Dasm 理解高级语言的实现原理. 1.1 汇编语言的由来与特点.

Download Presentation

课程性质

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 课程性质 本课程是计算机科学与技术专业的必修课程、也是本系其它专业专业课程学习的专业基础课程。

  2. 教学目的 • 本课程向学生介绍汇编语言程序设计的方法和技巧。 • 以PC计算机的汇编语言为主,通过课堂教学和上机实习,使学生掌握DOS和Windows汇编序言程序设计的特点及技术,即汇编工具Masm611和Masm32的使用;

  3. 掌握软件与硬件的交互原理,即DOS、BIOS功能的调用方法、MSDN的使用、API的调用掌握软件与硬件的交互原理,即DOS、BIOS功能的调用方法、MSDN的使用、API的调用 • 熟练使用使用调试工具Debug和W32Dasm • 理解高级语言的实现原理

  4. 1.1 汇编语言的由来与特点 • 计算机语言是人与计算机之间交流信息的工具 • 程序:用计算机语言描述的处理步骤。 • 程序设计:编制处理步骤的过程。 • 计算机语言可分为三类: ◆机器语言 ◆汇编语言 ◆通用语言 面向机器设计的,低级语言 面向程序设计人员设计的,高级语言

  5. 一、机器语言   机器指令是CPU能直接识别并执行的指令它的表现形式是二进制编码。机器指令通常由操作码和操作数两部分组成,操作码指出该指令所要完成的操作,即指令的功能,操作数指出参与运算的对象,以及运算结果所存放的位置等。   机器语言是直接用描述机器指令来设计程序,它是CPU能直接识别的唯一一种语言。也就是说,CPU能直接执行用机器语言描述的程序。

  6. 一、机器语言 1010 0000 ;1号单元内容取入AL寄存器 0000 0001 0000 0000 1000 1010 ;2号单元内容取入AH寄存器 0010 0110 0000 0010 0000 0000 0000 0000 ;AL的内容与AH的内容相加,结 1110 0000 ;果存入AL中 1010 0010 ;AL的内容送入3号单元 0000 0011 0000 0000 1111 0100 ;停机

  7. 一、机器语言 缺点: (1) 机器语言难记,程序难编,易错,调试困难; (2) 机器语言通用性差。 优点: (1) 计算机能直接认识、执行; (2) 算法刻画细致; (3) 程序紧凑,占用内存空间少,执行速度高; (4) 能充分发挥计算机的硬件功能。

  8. 二、汇编语言 随着计算机的发展,产生了符号语言,上面的程序用符号语言编写如下: MOV AL,DATA1 ;取第一个数据 MOV AH,DATA2 ;取第二个数据 ADD AL,AH ;求和 MOV RLT,AL ;保存结果 HLT ;停机

  9. 二、汇编语言 • 汇编语言: 符号语言的词法、语法规则及伪指令符号就构成了汇编语言。 • 汇编过程:把汇编语言程序翻译成机器语言程序的过程称为汇编过程。 • 汇编程序:完成汇编过程的程序称为汇编程序。 • 汇编语言程序:程序设计人员用汇编语言编写的程序,是汇编程序加工的对象,称为源程序。 • 目标程序:汇编程序产生的结果,也称作是目的程序。

  10. 二、汇编语言 DSEG SEGMENT ;数据段开始 DATA1 DB 15H DATA2 DB 26H RLT DB 0 DSEG ENDS ;数据段结束 CSEG SEGMENT ;代码段开始 ASSUME CS:CSEG,DS:DSEG START: MOV AX,DSEG ;设置数据段基址 MOV DS,AX MOV AL,DATA1 ;取第一个数据 MOV AH,DATA2 ;取第二个数据 ADD AL,AH ;求和 MOV RLT,AL ;保存结果 HLT ;停机 CSEG ENDS ;代码段结束 END START ;源程序结束

  11. 连接程序 可执行程序 汇编程序 计算机 目标程序 源程序 二、汇编语言 种类:8086汇编,8051汇编等 执行过程:

  12. 二、汇编语言 优点: (1) 程序容易编制、出错机会少、容易调试; (2) 算法刻画细致; (3) 程序紧凑、占用内存空间少、执行速度高; (4) 能充分发挥计算机的硬件功能。 缺点: (1) 计算机不能直接认识、执行,必须经过汇编变为机器语言程序; (2) 通用性差。

  13. 三、通用语言(高级语言) • 通用语言:是用来对计算机操作步骤进行描述的一整套标记符号、表达格式、结构及其使用的语法规则。 • 种类:Pascal, BASIC, C, COBOL, Java等等 • 例子(C): int i,j,k; k=i+j;

  14. 三、通用语言(高级语言) • 执行过程: 连接 编译程序 计算机 目标程序 可执行程序 源程序

  15. 三、通用语言(高级语言) 优点: (1) 程序容易编制、出错机会少、容易调试; (2) 容易表达算法; (3) 通用性强。 缺点: (1) 计算机不能直接认识、执行,必须经过编译变为机器语言程序; (2) 编译后生成的机器语言程序冗长、占用内存空间多、执行速度低; (3) 不能充分发挥计算机的硬件功能。

  16. 机器语言 高级语言 FORTRAN BASIC COBOL PASCAL C/C++ JAVA …... 汇编语言 计算机语言发展简史

  17. 汇编语言的应用领域   汇编语言的优点在于“与机器相关”和“执行的高效 率”。但也导致其可移植性差和调试难。所以,我们在 选用汇编语言时要根据实际的应用环境,尽可能避免其 缺点对整个应用系统的影响。汇编语言主要适用于下列 领域: • 要求执行效率高、反应快的领域,如操作系统内核,工业控制,实时系统等。 • 系统性能的瓶颈,或频繁被使用子程序或程序段。 • 与硬件资源密切相关的软件开发,如设备驱动程序。 • 受存储容量限制的应用领域,如家用电器的计算机控制功能。 • 其它高级语言不适合的开发环境。

  18. 学好汇编的意义 • 理解硬件的控制原理:比如,控制磁盘驱动器、控制键盘、控制鼠标,等等。在学过汇编以后,可以和我们以前学习过的《计算机原理》结合起来,对硬件的控制,硬件与软件的交互机理有深入的认识。 • 深入理解高级语言:我们学过C语言,知道C语言用cin和cout怎么输入输出字符,在汇编中可以知道它们是怎么实现的。其它语句如switch、if…else、goto等,其它函数如strcmp、strlen、strcmp,我们也可以模拟它们的实现。

  19. 软件的加密解密:存在盗版软件,是因为有人对软件进行破解,让其保护方式失去作用。保护自己的软件,需要对软件进行加密,汇编语言可以显示它的威力。软件的加密解密:存在盗版软件,是因为有人对软件进行破解,让其保护方式失去作用。保护自己的软件,需要对软件进行加密,汇编语言可以显示它的威力。 • 信息安全:尤其在反病毒方面。例如,病毒为什么能够感染可执行文件,假设一个文件感染了病毒,我们怎么去分析它,祛除病毒代码,都只有汇编语言更适合一些。

  20. 1.2 系统结构 • 微型计算机的系统结构  微型计算机的系统包括硬件系统、软件系统。 • 首先介绍微型计算机系统的基本结构,然后分别以8086为例介绍16位微处理器的结构和以80386为例介绍32位微处理器的结构。

  21. 硬件系统 • 硬件是指构成计算机物理设备的实体(如CPU、显卡、外部设备等),一台计算机所有硬件的集合构成了计算机的硬件系统。一般将其分为微处理器、主存储器、接口电路、外部设备和系统总线等。

  22. 微型计算机的系统结构

  23. 微处理器就是由控制器和算术逻辑部件(ALU)组成的中央处理器(即CPU)。它的作用是自动地执行各条指令,协调整个系统的工作。微处理器就是由控制器和算术逻辑部件(ALU)组成的中央处理器(即CPU)。它的作用是自动地执行各条指令,协调整个系统的工作。 • 主存储器是计算机的记忆装置,用于存储计算机当前正在执行的程序和数据,我们通常接触的是RAM,它是一种随机存取存储器。

  24. 系统总线是将CPU与存储器及外部设备连接起来的总线,它是用来传输信息的。按传输信息的种类不同把系统总线分为地址总线(AB)、数据总线(DB)、控制总线(CB)。系统总线是将CPU与存储器及外部设备连接起来的总线,它是用来传输信息的。按传输信息的种类不同把系统总线分为地址总线(AB)、数据总线(DB)、控制总线(CB)。 • 外部设备按功能可分为二类:一类是与计算机进行通讯的设备如键盘、打印机和显示器等,这些设备与计算机的通讯是通过I/O接口实现的。另一类是用来存储信息的设备如磁盘、光盘等。

  25. 软件系统 • 软件是指所有程序和数据的总称。通常我们将它分为系统软件和应用软件两大类。 • 系统软件主要用来对计算机系统实际运行进行控制,管理和服务的。它主要分为操作系统(如DOS、 Unix 、windows 、Macintosh、Linux等),诊断程序,调试程序和语言处理程序如编译程序、解释程序和汇编程序等。 • 应用软件指的是用户自己编写的各类应用程序。

  26. INTEL8086/8088 16位机的系统结构 • Intel 8086/8088是第三代微处理器。在汇编语言一级,它们与第二代微处理器8080/8085是兼容的。8086有20条地址线,16条数据线,直接寻址的内存空间可达1MB(220)。8088和8086内部组成完全相同,不同的是8088外部数据总线只有8条。因此8088被称为准16机。IBM PC 机及其兼容机上广泛采用了8088CPU。

  27. 8086/8088 CPU按功能可分为二个部分:总线接口单元(BIU: Bus Interface Unit)和执行单元(EU: Execute Unit)。 • BIU由地址加法器,指令指针寄存器IP,指令流字节队列和四个段寄存器(ES、CS、SS、DS)所组成的,它主要负责CPU与存储器及外部设备之间的信息传输。 • EU由算术逻辑单元ALU(Arithmetic and Logic Unit),执行单元控制系统,8个16位寄存器和一个标志寄存器PSW组成,它负责全部指令的执行,即负责向总线接口单元提供数据和地址,并对通用寄存器和标志寄存器进行管理,在ALU中进行算术运算和逻辑运算。

  28. 8086/8088CPU的寄存器 • 8086/8088的寄存器分为4种类型: • (1)通用寄存器 • (2)指针和变址寄存器 • (3)段寄存器 • (4)标志寄存器

  29. (1)通用寄存器

  30. (2)指针与变址寄存器

  31. (3)段寄存器

  32. (4)标志寄存器 • 标志寄存器长度为16位,其中9个位有定义。 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 × × × × OF DF IF TF SFZF × AF × PF × CF

  33. 1000 0001 1000 0000 0000 0001 1000 0000 1000 0001 1111 1111 + - 1 1 CF, Carry Flag, 进位标志, 两数相加,最高位向前的进位; 或两数相减最高位向前的借位, 举例:

  34. AF, Auxiliary Carry Flag, 辅助进位标志, 两数相加,第3位向前的进位; 或两数相减第3位向前的借位, 举例: 0000 1001 0000 1000 0001 0001 0000 0000 0000 0001 1111 1111 + -

  35. PF, Parity Flag, 奇偶标志, 两数操作(算术或逻辑),结果的低8位中含有1的位数是偶还是奇。举例: 1000 0101 1010 1100 1001 1101 1001 0111 1000 0101 1000 0100 ∧ 结果: PF=1

  36. ZF, Zero Flag, 零标志, 操作结果为0,则ZF为1。 举例: 1111 1111 0000 0001 0000 0000 + 操作结果为0, ZF=1 进位1

  37. SF, Sign Flag, 符号标志, 操作结果的符号位(即最高位的状态)。 举例: 1000 0101 1010 1100 1001 1101 1001 0111 1000 0101 1000 0100 ∧ 结果: SF=1

  38. OF, Overflow Flag, 溢出标志, 算术操作,结果超过目标所能容纳的范围。举例: 0111 1110 (+126) 0000 0011 (+3) 1000 0001 (-127) +

  39. 8086/8088存储器结构 • 存储器的分段结构 • 实际地址的产生

  40. 存储器的分段结构 段地址:段首单元在整个1MB单元中的编号,其最低4位一定为0,高16位保存在段寄存器中。 偏移地址:单元所在位置距离其所在段段首单元的距离,段首单元的偏移地址为0000H,后续的单元顺次增1。 因此,对于存储空间中的任意一个单元,我们都可以通过段地址和段内的偏移地址唯一地确定。 段地址 XXXX0H 偏移地址 : 长度≤64KB :

  41. 存储器的分段结构

  42. 存储器的分段结构 指针变址寄存器SI,DI,BP,SP存放的是在某一段内寻址的单元的偏移地址。其中SI和DI存放的是数据段内某单元的偏移地址,而BP和SP存放的则是堆栈段内某单元的偏移地址。 指令指针IP用以存放下一条要执行的指令在当前代码段内的偏移地址。

  43. 实际地址的产生 实际地址:也称物理地址,是该单元在整个1MB单元中的编号,用一个20位的二进制数表示,范围从00000H~FFFFFH,该地址是唯一的。CPU与存储器进行数据交换时所使用的地址即是实际地址。 逻辑地址:由两部分组成,即段地址和偏移地址。我们在编写程序时所使用的地址即是逻辑地址。首先将存储器分段之后段地址的高16位存入相应的段寄存器中,然后再通过段内的偏移地址对所需的单元进行访问。

  44. 实际地址的产生 逻辑地址 物理地址 (实际地址) 段地址 偏移地址 00450H 0000H 0001H 0002H 0003H 0004H : : : FFFDH FFFEH FFFFH 00450H 00451H 00452H 00453H 00454H : : : 1044DH 1044EH 1044FH : : :

  45. 实际地址的产生 举例: CS=9482, IP=2350, 实际地址为: 1001 0100 1000 0010 0010 0011 0101 0000 1001 0110 1011 0111 0000 一个实际地址可以对应多个逻辑地址。

  46. 堆栈 • 堆栈是按先进后出的原则在内存中组织的一个特殊的存储区域。该区域一端固定一端活动,固定的一端称为栈底,而活动的一端称为栈顶。往堆栈中存入或取出信息总是在堆栈的栈顶单元进行的。CPU中的堆栈指针指示器SP总是指向堆栈的栈顶,而堆栈段寄存器SS则指明了堆栈段的起始位置。

  47. 80386 32位机的系统结构 • Intel 80386是为满足高性能的应用领域与多用户、多任务的操作系统的需要而设计的,其最大的特点是在CPU芯片上集成了一个存储器管理部件(MMU),可对246字节的虚拟存储器和4千兆字节的物理存储器进行分段和分页管理,段的最大长度为4千兆字节。 • 80386采用CHMOS工艺,陶瓷网格阵列(Plastic Grid Array, PGA)封装,全32位结构,它的时钟频率有16MHZ和20MHZ两种,总线周期只有2个时钟周期。

  48. 体系结构 • 80386的内部结构由六个功能部件组成:总线接口部件BIU(Bus Interface)、指令预取部件IPU(Instruction Prefetch Unit)、指令译码部件 IDU(Instruction Decode Unit)、存储器管理部件MMU(Memory Management Unit)、执行部件EU(Execution Unit)和控制部件。这6个部件可以并行地工作,构成一个六级流水线体系结构。这样,可以同时处理多条指令以减少程序实际执行时间。

More Related