《汇编语言程序设计》教案.pdf
《《汇编语言程序设计》教案.pdf》由会员分享,可在线阅读,更多相关《《汇编语言程序设计》教案.pdf(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!1 汇编语言程序设计 教 案 编 号:1 第一章 基础知识 教学目的:(1)了解机器语言 (2)理解汇编语言的涵义(3)理解 8086CPU 硬件系统结构 教学重点及难点:汇编语言的涵义,CPU 对存储器的读写原理,内存地址空间的分配 教学方法:讲授、示例、练习 教学过程:1.提出三个问题 什么是汇编语言 为什么学汇编语言 如何学习汇编语言 2.介绍本书内容结构及特点 3.教学内容 引言 汇编语言是直接在硬件之上工作的编程语言,首先要了解硬件系统的结构,才能有效的应用汇编语言对其编程。1.1 机器语言
2、 机器语言是机器指令的集合。阐述机器语言的原理,发展及弊端。1.2 汇编语言的产生 汇编语言的主体是汇编指令。汇编指令是机器指令的助记符(两者一一对应)。1.3 汇编语言的组成 汇编语言由以下 3 类组成:1、汇编指令(机器码的助记符)2、伪指令 (由编译器执行)3、其它符号(由编译器识别)汇编语言的核心是汇编指令,它决定了汇编语言的特性。1.4 存储器 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2 CPU 是计算机的核心部件 它控制整个计算机的运作并进行运算,要想让一个 CPU 工作,就必须向它提供指令和数据。指令和数据在存储器中存放,也就
3、是平时所说的内存。1.5 指令和数据 指令和数据是应用上的概念。在内存或磁盘上,指令和数据没有任何区别,都是二进制信息。1.6 存储单元 存储器被划分为若干个存储单元,每个存储单元从 0 开始顺序编号;例如:一个存储器有 128 个存储单元,编号从 0127。存储器的计量单位 B、KB、MB、GB、TB 1.7 CPU 对存储器的读写 CPU 要想进行数据的读写,必须和外部器件(标准的说法是芯片)进行三类信息的交互:存储单元的地址(地址信息)地址总线 器件的选择,读或写命令(控制信息)数据总线 读或写的数据(数据信息)数据总线 CPU 在内存中读或写的数据演示:读演示、写演示 机器码:1010
4、00000000001100000000 对应的汇编指令:MOV AX,3 含义:传送 3 号单元的内容到 AX 1.8 地址总线 CPU 是通过地址总线来指定存储单元的。一个 CPU 有 N 根地址总线,则可以说这个 CPU 的地址总线的宽度为 N。这样的 CPU 最多可以寻找的 N 次方个内存单元。1.9 数据总线 CPU 与内存或其它器件之间的数据传送是通过数据总线来进行的。数据总线的宽度决定了 CPU 和外界的数据传送速度。1.10 控制总线 CPU 对外部器件的控制是通过控制总线来进行的。在这里控制总线是个总称,控制总线是一些不同控制线的集合。有多少根控制总线,就意味着 CPU 提供
5、了对外部器件的多少种控制。所以,控制总线的宽度决定了 CPU 对外部器件的控制能力。1.11 内存地址空间(概述)什么是内存地址空间 不同的计算机系统的内存地址空间分配情况是不同的。讲解 8086PC 机内存地址空间分配的基本情况 作业:欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!3 汇编语言程序设计 教 案 编 号:2 第二章 寄存器 教学目的:(1)理解通用寄存器的逻辑结构及其存储原理(2)理解物理地址、段地址及偏移地址的本质含义(3)理解 8086CPU 读取执行指令的工作原理,及代码段寄存器 CS 和指令指针寄存器 IP的含义,并掌握其
6、使用方法 教学重点及难点:8086CPU 读取执行指令的工作原理,及代码段寄存器 CS 和指令指针寄存器 IP 的使用方法 教学方法:讲授、示例、练习 教学过程:1.CPU 概述 一个典型的 CPU 由运算器、控制器、寄存器等器件组成,这些器件靠内部总线相连。内部总线实现 CPU 内部各个器件之间的联系。外部总线实现 CPU 和主板上其它器件的联系。2.寄存器概述 8086CPU 有 14 个寄存器 它们的名称为:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW。3.教学内容 2.1 通用寄存器 8086CPU 所有的寄存器都是 16 位的,可以存放两个字节
7、。AX、BX、CX、DX 通常用来存放一般性数据被称为通用寄存器。讲解寄存器的逻辑结构。为保证兼容性,这四个寄存器都可以分为两个独立的 8 位寄存器使用。2.2 字在寄存器中的存储 一个字可以存在一个 16 位寄存器中,这个字的高位字节和低位字节自然就存在这个寄存器的高 8 位寄存器和低 8 位寄存器中。2.3 几条汇编指令 汇编指令不区分大小写 注意:在进行数据传送或运算时,要注意指令的两个操作对象的位数应当是一致的。欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!4 2.4 物理地址 CPU 访问内存单元时要给出内存单元的地址。所有的内存单元构
8、成的存储空间是一个一维的线性空间。每一个内存单元在这个空间中都有唯一的地址,这个唯一的地址称为物理地址。2.5 16 位结构的 CPU 概括的讲,16 位结构描述了一个 CPU 具有以下几个方面特征:1、运算器一次最多可以处理 16 位的数据。2、寄存器的最大宽度为 16 位。3、寄存器和运算器之间的通路是 16 位的。2.6 8086CPU 给出物理地址的方法 8086CPU 采用一种在内部用两个 16 位地址合成的方法来形成一个 20 位的物理地址。地址加法器合成物理地址的方法:物理地址=段地址16+偏移地址 2.7“段地址16+偏移地址=物理地址”的本质含义 用两个比喻说明 2.8 段的
9、概念 错误认识:内存被划分成了一个一个的段,每一个段有一个段地址。其实:内存并没有分段,段的划分来自于 CPU,由于 8086CPU 用“(段地址16)+偏移地址=物理地址”的方式给出内存单元的物理地址,使得我们可以用分段的方式来管理内存。两点需要注意(1)段地址16 必然是 16 的倍数,所以一个段的起始地址也一定是 16 的倍数;(2)偏移地址为 16 位,16 位地址的寻址能力为 64K,所以一个段的长度最大为 64K。结论:CPU 可以用不同的段地址和偏移地址形成同一个物理地址。2.9 节2.12 节 1、段地址在 8086CPU 的寄存器中存放。当 8086CPU 要访问内存时,由段
10、寄存器提供内存单元的段地址。8086CPU 有 4 个段寄存器,其中 CS 用来存放指令的段地址。2、CS 存放指令的段地址,IP 存放指令的偏移地址。8086 机中,任意时刻,CPU 将 CS:IP 指向的内容当作指令执行。3、8086CPU 的工作过程:(1)从 CS:IP 指向内存单元读取指令,读取的指令进入指令缓冲器;(2)IP 指向下一条指令;(3)执行指令。(转到步骤(1),重复这个过程。)4、8086CPU 提供转移指令修改 CS、IP 的内容。作业:欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!5 汇编语言程序设计 教 案 编 号
11、:3 第三章 寄存器(内存访问)教学目的:(1)掌握汇编指令访问内存的方法(2)理解汇编指令 mov、add、sub 的格式及含义,并掌握其使用方法(3)理解 CPU 的堆栈机制,掌握汇编指令 push、pop 的含义及其使用方法(4)理解数据段、代码段、栈段的内涵 教学重点及难点:汇编指令访问内存的方法,汇编指令格式,及堆栈机制 教学方法:讲授、示例、练习 教学过程:1.引言 在第 2 章中,我们主要从 CPU 如何执行指令的角度讲解了 8086CPU 的逻辑结构、形成物理地址的方法、相关的寄存器以及一些指令。这一章中,我们从访问内存的角度继续学习几个寄存器。2.教学内容 3.1 内存中字的
12、存储 结论:任何两个地址连续的内存单元,N 号单元和 N+1 号单元,可以将它们看成两个内存单元,也可以看成一个地址为 N 的字单元中的高位字节单元和低位字节单元。3.2 DS 和address CPU 要读取一个内存单元的时候,必须先给出这个内存单元的地址;在 8086PC 中,内存地址由段地址和偏移地址组成。8086CPU 中有一个 DS 寄存器,通常用来存放要访问的数据的段地址。问题:如何用 mov 指令从 10000H 中读取数据?结论:mov bx,1000H mov ds,bx mov al,0 注意:8086CPU 不支持将数据直接送入段寄存器的操作,ds 是一个段寄存器。(硬件
13、设计的问题)mov ds,1000H 是非法的。3.3 字的传送 因为 8086CPU 是 16 位结构,有 16 根数据线,所以,可以一次性传送 16 位的数据,也就是一次性传送一个字。欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!6 3.4 mov、add、sub 指令 已学 mov 指令的几种形式:mov 寄存器,数据 mov 寄存器,寄存器 mov 寄存器,内存单元 mov 内存单元,寄存器 mov 段寄存器,寄存器 根据已知指令进行推测:mov 段寄存器,寄存器 mov 寄存器,段寄存器(验证)mov 内存单元,寄存器 mov 内存单元
14、,段寄存器 mov 段寄存器,内存单元 注意:add 和 sub 指令同 mov 一样,都有两个操作对象。3.5 数据段 定义:将一组长度为 N(N64K)、地址连续、起始地址为 16 的倍数的内存单元当作专门存储数据的内存空间,从而定义了一个数据段。访问数据段中的数据:用 ds 存放数据段的段地址,再根据需要,用相关指令访问数据段中的具体单元。示例 3.6 栈 栈是一种具有特殊的访问方式的存储空间。它的特殊性就在于,最后进入这个空间的数据,最先出去。栈有两个基本的操作:入栈和出栈。入栈:将一个新的元素放到栈顶;出栈:从栈顶取出一个元素。栈顶的元素总是最后入栈,需要出栈时,又最先被从栈中取出。
15、栈的操作规则:LIFO(Last In First Out,后进先出)3.7 CPU 提供的栈机制 8086CPU 提供入栈和出栈指令:(最基本的)PUSH(入栈)POP (出栈)push ax:将寄存器 ax 中的数据送入栈中;pop ax:从栈顶取出数据送入 ax。注意:8086CPU 的入栈和出栈操作都是以字为单位进行的。push 指令的执行过程:push ax 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!7(1)SP=SP2;(2)将 ax 中的内容送入 SS:SP 指向的内存单元处,SS:SP 此时指向新栈顶。pop 指令的执行过程:
16、pop ax(1)将 SS:SP 指向的内存单元处的数据送入 ax 中;(2)SP=SP+2,SS:SP 指向当前栈顶下面的单元,以当前栈顶下面的单元为新的栈顶。3.8 栈顶超界的问题 当栈满的时候再使用 push 指令入栈,栈空的时候再使用 pop 指令出栈,都将发生栈顶超界问题。栈顶超界是危险的。我们在编程的时候要自己操心栈顶超界的问题,要根据可能用到的最大栈空间,来安排栈的大小,防止入栈的数据太多而导致的超界;执行出栈操作的时候也要注意,以防栈空的时候继续出栈而导致的超界。3.9 push、pop 指令 push 和 pop 指令的格式(1)push 寄存器:将一个寄存器中的数据入栈 p
17、op 寄存器:出栈,用一个寄存器接收出栈的数据 push 和 pop 指令的格式(2)push 段寄存器:将一个段寄存器中的数据入栈 pop 段寄存器:出栈,用一个段寄存器接收出栈的数据 push 和 pop 指令的格式(3)push 内存单元:将一个内存单元处的字入栈(栈操作都是以字为单位)pop 内存单元:出栈,用一个内存字单元接收出栈的数据 3.10 栈段 定义:将长度为 N(N 64K)的一组地址连续、起始地址为 16 的倍数的内存单元,当作栈来用,从而定义了一个栈段。访问:如何使用如 push、pop 等栈操作指令访问我们定义的栈段呢?将 SS:SP 指向我们定义的栈段。3、段的综述
18、 我们可以将一段内存定义为一个段,用一个段地址指示段,用偏移地址访问段内的单元。这完全是我们自己的安排。我们可以用一个段存放数据,将它定义为“数据段”;我们可以用一个段存放代码,将它定义为“代码段”;我们可以用一个段当作栈,将它定义为“栈段”;一段内存,可以既是代码的存储空间,又是数据的存储空间,还可以是栈空间,也可以什么也不是。关键在于 CPU 中寄存器的设置,即:CS、IP、SS、SP、DS 的指向。作业:欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!8 汇编语言程序设计 教 案 编 号:4 第四章 第一个程序 教学目的:(1)掌握源程序书写
19、格式(2)理解一个源程序从写出到执行的过程(3)掌握程序的执行过程及其跟踪方法 教学重点及难点:汇编语言源程序的书写格式,执行过程及跟踪方法 教学方法:讲授、示例、练习 教学过程:4.1 一个源程序从写出到执行的过程 编写源程序编译链接执行 注意:解释可执行文件 4.2 源程序 汇编指令:有对应的机器码的指令,可以被编译为机器指令,最终为 CPU 所执行。1.伪指令 没有对应的机器码的指令,最终不被 CPU 所执行。3 种伪指令(1)段定义伪指令 segment 和 ends(2)汇编结束伪指令 END(3)ASSUME 段分配伪指令 2.标号:一个标号指代了一个地址。(代表某一存储单元地址的
20、名字)字母:AZ 数字:09 特殊字符:?._$codesg:放在 segment 的前面,作为一个段的名称,这个段的名称最终将被编译、连接程序处理为一个段的段地址。start:放在某个指令前,作为程序的入口,程序加载到内存后,CS:IP 会指向这个标号,从 start 指向的指令开始运行。3.源程序中的“程序”汇编源程序:伪指令(编译器处理)、汇编指令(编译为机器码)程序:源程序中最终由计算机执行、处理的指令或数据。4.汇编语言源程序的结构 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!9 一般来说,一个完整的汇编源程序应由三个程序段组成,即代
21、码段、数据段和堆栈段,每个段都以 SEGMENT 开始,以 ENDS 结束,代码段包含程序要执行的指令;堆栈段用来在内存中建立一个堆栈区;数据段用来在内存中建立一个适当容量的工作区,以存放程序中所需的数据。注意:一个源程序中,代码段是必须的,而数据段和堆栈段可以没有或有其中一个。段定义时一般最后定义代码段。5.程序返回 我们的程序最先以汇编指令的形式存在源程序中,经编译、连接后转变为机器码,存储在可执行文件中,那么,它怎样得到运行呢?(讨论)现在,我们知道,一个程序结束后,将 CPU 的控制权交还给使它得以运行的程序,我们称这个过程为:程序返回。应该在程序的末尾添加返回的程序段。mov ax,
22、4c00H int 21H 注意:几个和结束相关的内容:段结束、程序结束、程序返回 6.语法错误和逻辑错误 语法错误:程序在编译时被编译器发现的错误;容易发现。逻辑错误:程序在编译时不能表现出来的、在运行时发生的错误;不容易发现。4.3.编辑源程序 使用工具:可使用各种文本编辑工具(记事本、写字板、WORD 等),我们使用 notepad+文本编辑器。功能:产生一个存储源程序的文本文件。使用方法:输入汇编源程序并保存为.asm 文件。4.4 对源程序进行编译 使用工具:使用 MASM6.15 编译器 功能:使用编译器对源程序文件进行编译,生成包含机器代码的目标文件(.obj)。使用方法:在 d
23、os 下运行 masm.exe 程序 对源程序的编译结束,编译器输出的最后两行告诉我们这个源程序有没有警告错误和必须要改正的错误。4.5 对目标文件进行连接 使用工具:使用 LINK.EXE 连接器 功能:对目标文件(.obj)进行连接,从而得到一个可执行文件.EXE。使用方法:在 DOS 下运行 link.exe 程序:注意讲解连接的作用 4.6 以简化的方式进行编译和连接 用一种较为简捷的方式进行编译、连接。欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!10 C:MASM masm XXX;C:MASM link XXX;C:MASM ml
24、XXX.asm;4.7 1.exe 的执行 提问:程序到底运行没有?程序运行了,只是从屏幕上不可能看到任何运行结果。我们的程序没有像显示器输出任何信息。程序只是做了一些将数据送入寄存器和加法的操作,而这些事情,我们不可能从显示屏上看出来。程序执行完成后,返回,屏幕上再次出现操作系统的提示符。4.8 谁将可执行文件中的程序装载进入内存并使它运行?1.exe 的执行过程:(1)我们在提示符“C:masmml 1.asm”,按 Enter 键。(编译连接)(2)1.exe 中的程序运行;问题 4.1(3)运行结束,返回,再次显示提示符“C:masm”。问题 4.2 两个问题 问题 4.1:执行第(2
25、)步操作,有一个正在运行的程序将 1.exe 中的程序加载入内存,这个正在运行的程序是什么?它将程序加载入内存后,如何使程序得以运行?问题 4.2:执行第(3)步操作,程序运行结束后,返回到哪里?回答问题 4.1 和 4.2(1)我们在 DOS 中直接执行 1.exe 时,是正在运行的 command 将 1.exe 中的程序加载入内存。(2)command 设置 CPU 的 CS:IP 指向程序的第一条指令(即程序的入口),从而使程序得以运行。(3)程序运行结束后,返回到 command 中,CPU 继续运行 command。4.9 程序执行过程的跟踪 使用工具:debug 功能:观察程序的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言程序设计 汇编语言 程序设计 教案
限制150内