欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    汇编语言程序设计教案.docx

    • 资源ID:14449847       资源大小:35.14KB        全文页数:40页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    汇编语言程序设计教案.docx

    1、汇编语言程序设计教案汇编语言程序设计 教 案编 号:1 第一章 基础知识教学目的:(1) 了解机器语言 (2) 理解汇编语言的涵义(3) 理解8086CPU硬件系统结构教学重点与难点:汇编语言的涵义,CPU对存储器的读写原理,内存地址空间的分配教学方法:讲授、示例、练习教学过程:1. 提出三个问题什么是汇编语言为什么学汇编语言如何学习汇编语言2. 介绍本书内容结构与特点3. 教学内容 引言汇编语言是直接在硬件之上工作的编程语言,首先要了解硬件系统的结构,才能有效的应用汇编语言对其编程。1.1 机器语言机器语言是机器指令的集合。阐述机器语言的原理,发展与弊端。 1.2 汇编语言的产生汇编语言的主

    2、体是汇编指令。汇编指令是机器指令的助记符 (两者一一对应)。1.3 汇编语言的组成汇编语言由以下3类组成:1、汇编指令(机器码的助记符)2、伪指令 (由编译器执行)3、其它符号(由编译器识别)汇编语言的核心是汇编指令,它决定了汇编语言的特性。 1.4 存储器CPU 是计算机的核心部件它控制整个计算机的运作并进行运算,要想让一个CPU 工作,就必须向它提供指令和数据。指令和数据在存储器中存放,也就是平时所说的内存。1.5 指令和数据指令和数据是应用上的概念。在内存或磁盘上,指令和数据没有任何区别,都是二进制信息。1.6 存储单元存储器被划分为若干个存储单元,每个存储单元从0开始顺序编号;例如:一

    3、个存储器有128个存储单元, 编号从0127。存储器的计量单位B、KB、MB、GB、TB1.7 CPU对存储器的读写CPU要想进行数据的读写,必须和外部器件(标准的说法是芯片)进行三类信息的交互:存储单元的地址(地址信息)地址总线器件的选择,读或写命令(控制信息)数据总线读或写的数据(数据信息)数据总线CPU在内存中读或写的数据演示:读演示、写演示机器码:10对应的汇编指令:MOV AX,3含义:传送3 号单元的内容到AX1.8 地址总线CPU是通过地址总线来指定存储单元的。一个CPU有N根地址总线,则可以说这个CPU的地址总线的宽度为N。这样的CPU最多可以寻找的N次方个内存单元。1.9 数

    4、据总线CPU与内存或其它器件之间的数据传送是通过数据总线来进行的。数据总线的宽度决定了CPU和外界的数据传送速度。1.10 控制总线CPU对外部器件的控制是通过控制总线来进行的。在这里控制总线是个总称,控制总线是一些不同控制线的集合。有多少根控制总线,就意味着CPU提供了对外部器件的多少种控制。所以,控制总线的宽度决定了CPU对外部器件的控制能力。1.11 内存地址空间(概述)什么是内存地址空间不同的计算机系统的内存地址空间分配情况是不同的。讲解8086PC机内存地址空间分配的基本情况作业:汇编语言程序设计 教 案编 号:2 第二章 寄存器教学目的:(1) 理解通用寄存器的逻辑结构与其存储原理

    5、(2) 理解物理地址、段地址与偏移地址的本质含义(3) 理解8086CPU读取执行指令的工作原理,与代码段寄存器CS和指令指针寄存器IP的含义,并掌握其使用方法教学重点与难点:8086CPU读取执行指令的工作原理,与代码段寄存器CS和指令指针寄存器IP的使用方法教学方法:讲授、示例、练习教学过程:1.CPU概述一个典型的CPU由运算器、控制器、寄存器等器件组成,这些器件靠内部总线相连。内部总线实现CPU内部各个器件之间的联系。外部总线实现CPU和主板上其它器件的联系。2.寄存器概述8086CPU有14个寄存器 它们的名称为: AX、BX、CX、DX、SI、DI、SP、BP、 IP、CS、SS、

    6、DS、ES、PSW。3. 教学内容2.1 通用寄存器8086CPU所有的寄存器都是16位的,可以存放两个字节。AX、BX、CX、DX 通常用来存放一般性数据被称为通用寄存器。讲解寄存器的逻辑结构。为保证兼容性,这四个寄存器都可以分为两个独立的8位寄存器使用。2.2 字在寄存器中的存储一个字可以存在一个16位寄存器中,这个字的高位字节和低位字节自然就存在这个寄存器的高8位寄存器和低8位寄存器中。2.3 几条汇编指令汇编指令不区分大小写注意:在进行数据传送或运算时,要注意指令的两个操作对象的位数应当是一致的。2.4 物理地址CPU访问内存单元时要给出内存单元的地址。所有的内存单元构成的存储空间是一

    7、个一维的线性空间。每一个内存单元在这个空间中都有唯一的地址,这个唯一的地址称为物理地址。2.5 16位结构的CPU概括的讲,16位结构描述了一个CPU具有以下几个方面特征:1、运算器一次最多可以处理16位的数据。2、寄存器的最大宽度为16位。3、寄存器和运算器之间的通路是16位的。2.6 8086CPU给出物理地址的方法8086CPU采用一种在内部用两个16位地址合成的方法来形成一个20位的物理地址。地址加法器合成物理地址的方法: 物理地址=段地址16+偏移地址2.7 “段地址16+偏移地址=物理地址”的本质含义用两个比喻说明2.8 段的概念错误认识:内存被划分成了一个一个的段,每一个段有一个

    8、段地址。 其实: 内存并没有分段,段的划分来自于CPU,由于8086CPU用“(段地址16)+偏移地址=物理地址”的方式给出内存单元的物理地址,使得我们可以用分段的方式来管理内存。两点需要注意(1)段地址16 必然是 16的倍数,所以一个段的起始地址也一定是16的倍数;(2)偏移地址为16位,16 位地址的寻址能力为 64K,所以一个段的长度最大为64K。结论:CPU可以用不同的段地址和偏移地址形成同一个物理地址。2.9节2.12节1、段地址在8086CPU的寄存器中存放。当8086CPU要访问内存时,由段寄存器提供内存单元的段地址。8086CPU有4个段寄存器,其中CS用来存放指令的段地址。

    9、2、CS存放指令的段地址,IP存放指令的偏移地址。 8086机中,任意时刻,CPU将CS:IP指向的内容当作指令执行。3、8086CPU的工作过程:(1)从CS:IP指向内存单元读取指令,读取的指令进入指令缓冲器;(2)IP指向下一条指令;(3)执行指令。(转到步骤(1),重复这个过程。)4、8086CPU提供转移指令修改CS、IP的内容。作业:汇编语言程序设计 教 案编 号:3 第三章 寄存器(内存访问)教学目的:(1) 掌握汇编指令访问内存的方法(2) 理解汇编指令mov、add、sub的格式与含义,并掌握其使用方法(3) 理解CPU的堆栈机制,掌握汇编指令push、pop的含义与其使用方

    10、法(4) 理解数据段、代码段、栈段的内涵教学重点与难点:汇编指令访问内存的方法,汇编指令格式,与堆栈机制教学方法:讲授、示例、练习教学过程:1.引言在第2章中,我们主要从 CPU 如何执行指令的角度讲解了8086CPU的逻辑结构、形成物理地址的方法、相关的寄存器以与一些指令。这一章中,我们从访问内存的角度继续学习几个寄存器。2.教学内容3.1 内存中字的存储结论:任何两个地址连续的内存单元,N号单元和 N+1号单元,可以将它们看成两个内存单元 ,也可以看成一个地址为N的字单元中的高位字节单元和低位字节单元。3.2 DS和addressCPU要读取一个内存单元的时候,必须先给出这个内存单元的地址

    11、;在8086PC中,内存地址由段地址和偏移地址组成。8086CPU中有一个 DS寄存器,通常用来存放要访问的数据的段地址。问题:如何用mov指令从10000H中读取数据?结论:mov bx,1000H mov ds,bx mov al ,0注意:8086CPU不支持将数据直接送入段寄存器的操作,ds是一个段寄存器。 (硬件设计的问题)mov ds,1000H 是非法的。3.3 字的传送因为8086CPU是16位结构,有16根数据线,所以,可以一次性传送16位的数据,也就是一次性传送一个字。3.4 mov、add、sub指令已学mov指令的几种形式: mov 寄存器,数据 mov 寄存器,寄存器

    12、 mov 寄存器,内存单元 mov 内存单元,寄存器 mov 段寄存器,寄存器根据已知指令进行推测:mov 段寄存器,寄存器mov 寄存器,段寄存器(验证)mov 内存单元,寄存器mov 内存单元,段寄存器mov 段寄存器,内存单元注意:add和sub指令同mov一样,都有两个操作对象。3.5 数据段定义:将一组长度为N(N64K)、地址连续、起始地址为16的倍数的内存单元当作专门存储数据的内存空间,从而定义了一个数据段。访问数据段中的数据:用 ds 存放数据段的段地址,再根据需要,用相关指令访问数据段中的具体单元。示例3.6 栈栈是一种具有特殊的访问方式的存储空间。它的特殊性就在于,最后进入

    13、这个空间的数据,最先出去。栈有两个基本的操作:入栈和出栈。入栈:将一个新的元素放到栈顶;出栈:从栈顶取出一个元素。栈顶的元素总是最后入栈,需要出栈时,又最先被从栈中取出。栈的操作规则:LIFO(Last In First Out,后进先出)3.7 CPU提供的栈机制8086CPU提供入栈和出栈指令: (最基本的) PUSH(入栈) POP (出栈) push ax:将寄存器ax中的数据送入栈中; pop ax :从栈顶取出数据送入ax。注意:8086CPU的入栈和出栈操作都是以字为单位进行的。push 指令的执行过程:push ax(1)SP=SP2;(2)将ax中的内容送入SS:SP指向的内

    14、存单元处,SS:SP此时指向新栈顶。pop 指令的执行过程:pop ax(1)将SS:SP指向的内存单元处的数据送入ax中;(2)SP = SP+2,SS:SP指向当前栈顶下面的单元,以当前栈顶下面的单元为新的栈顶。3.8 栈顶超界的问题当栈满的时候再使用push指令入栈,栈空的时候再使用pop指令出栈,都将发生栈顶超界问题。栈顶超界是危险的。我们在编程的时候要自己操心栈顶超界的问题 ,要根据可能用到的最大栈空间,来安排栈的大小,防止入栈的数据太多而导致的超界;执行出栈操作的时候也要注意,以防栈空的时候继续出栈而导致的超界。3.9 push、pop指令push和pop指令的格式(1)push

    15、寄存器:将一个寄存器中的数据入栈pop寄存器:出栈,用一个寄存器接收出栈的数据push和pop指令的格式(2)push 段寄存器:将一个段寄存器中的数据入栈pop段寄存器:出栈,用一个段寄存器接收出栈的数据push和pop指令的格式(3)push 内存单元:将一个内存单元处的字入栈(栈操作都是以字为单位)pop 内存单元:出栈,用一个内存字单元接收出栈的数据3.10 栈段定义:将长度为 N(N 64K )的一组地址连续、起始地址为16的倍数的内存单元,当作栈来用,从而定义了一个栈段。访问:如何使用如push、pop 等栈操作指令访问我们定义的栈段呢? 将SS:SP指向我们定义的栈段。3、段的综

    16、述我们可以将一段内存定义为一个段,用一个段地址指示段,用偏移地址访问段内的单元。这完全是我们自己的安排。我们可以用一个段存放数据,将它定义为“数据段”;我们可以用一个段存放代码,将它定义为“代码段”;我们可以用一个段当作栈,将它定义为“栈段”;一段内存,可以既是代码的存储空间,又是数据的存储空间,还可以是栈空间,也可以什么也不是。关键在于CPU中寄存器的设置,即: CS、IP、SS、SP、DS的指向。作业:汇编语言程序设计 教 案编 号:4 第四章 第一个程序教学目的:(1) 掌握源程序书写格式(2) 理解一个源程序从写出到执行的过程(3) 掌握程序的执行过程与其跟踪方法教学重点与难点:汇编语

    17、言源程序的书写格式,执行过程与跟踪方法教学方法:讲授、示例、练习教学过程:4.1 一个源程序从写出到执行的过程编写源程序编译链接执行注意:解释可执行文件4.2 源程序汇编指令:有对应的机器码的指令,可以被编译为机器指令,最终为CPU所执行。1.伪指令没有对应的机器码的指令,最终不被CPU所执行。3种伪指令(1)段定义伪指令segment和ends(2)汇编结束伪指令END(3)ASSUME 段分配伪指令 2.标号:一个标号指代了一个地址。(代表某一存储单元地址的名字)字母:AZ 数字:09 特殊字符:? . _ $codesg:放在segment的前面,作为一个段的名称,这个段的名称最终将被编

    18、译、连接程序处理为一个段的段地址。start:放在某个指令前,作为程序的入口,程序加载到内存后,CS:IP会指向这个标号,从start指向的指令开始运行。3.源程序中的“程序”汇编源程序:伪指令(编译器处理)、汇编指令(编译为机器码)程序:源程序中最终由计算机执行、处理的指令或数据。4.汇编语言源程序的结构 一般来说,一个完整的汇编源程序应由三个程序段组成,即代码段、数据段和堆栈段,每个段都以SEGMENT开始,以ENDS结束,代码段包含程序要执行的指令;堆栈段用来在内存中建立一个堆栈区;数据段用来在内存中建立一个适当容量的工作区,以存放程序中所需的数据。 注意:一个源程序中,代码段是必须的,

    19、而数据段和堆栈段可以没有或有其中一个。段定义时一般最后定义代码段。5.程序返回我们的程序最先以汇编指令的形式存在源程序中,经编译、连接后转变为机器码,存储在可执行文件中,那么,它怎样得到运行呢?(讨论)现在,我们知道,一个程序结束后,将CPU的控制权交还给使它得以运行的程序,我们称这个过程为:程序返回。应该在程序的末尾添加返回的程序段。 mov ax,4c00H int 21H注意:几个和结束相关的内容:段结束、程序结束、程序返回6.语法错误和逻辑错误语法错误:程序在编译时被编译器发现的错误;容易发现。逻辑错误:程序在编译时不能表现出来的、在运行时发生的错误;不容易发现。4.3.编辑源程序使用

    20、工具:可使用各种文本编辑工具(记事本、写字板、WORD等),我们使用notepad+文本编辑器。功能:产生一个存储源程序的文本文件。使用方法:输入汇编源程序并保存为.asm文件。4.4 对源程序进行编译使用工具:使用MASM6.15编译器功能:使用编译器对源程序文件进行编译,生成包含机器代码的目标文件 ( .obj)。使用方法:在dos下运行masm.exe程序对源程序的编译结束,编译器输出的最后两行告诉我们这个源程序有没有警告错误和必须要改正的错误。4.5 对目标文件进行连接使用工具:使用 LINK . EXE连接器功能:对目标文件(.obj)进行连接,从而得到一个可执行文件 . EXE 。

    21、使用方法:在DOS下运行link.exe程序: 注意讲解连接的作用4.6 以简化的方式进行编译和连接用一种较为简捷的方式进行编译、连接。C: MASM masm XXX;C: MASM link XXX;C: MASM ml XXX.asm;4.7 1.exe的执行提问:程序到底运行没有?程序运行了,只是从屏幕上不可能看到任何运行结果。我们的程序没有像显示器输出任何信息。程序只是做了一些将数据送入寄存器和加法的操作,而这些事情,我们不可能从显示屏上看出来。程序执行完成后,返回,屏幕上再次出现操作系统的提示符。4.8 谁将可执行文件中的程序装载进入内存并使它运行?1.exe的执行过程:(1)我们

    22、在提示符“C:masmml 1.asm” ,按Enter键。(编译连接)(2)1.exe中的程序运行;问题4.1(3)运行结束,返回,再次显示提示符“C:masm”。问题4.2两个问题问题4.1:执行第(2)步操作,有一个正在运行的程序将1.exe中的程序加载入内存,这个正在运行的程序是什么?它将程序加载入内存后,如何使程序得以运行?问题4.2:执行第(3)步操作,程序运行结束后,返回到哪里?回答问题4.1和4.2(1)我们在DOS中直接执行 1.exe 时,是正在运行的command将1.exe中的程序加载入内存。(2)command设置CPU的CS:IP指向程序的第一条指令(即程序的入口)

    23、,从而使程序得以运行。(3)程序运行结束后,返回到command中,CPU继续运行command。4.9 程序执行过程的跟踪使用工具:debug功能:观察程序的运行过程 (Debug 可以将程序加载入内存,设置CS:IP指向程序的入口,但Debug并不放弃对CPU 的控制,这样,我们就可以使用Debug 的相关命令来单步执行程序 ,查看每条指令指令的执行结果。)使用方法:在DOS下运行DEBUG . EXE程序。 C: debug xxx.exe(后缀不能省略)作业:汇编语言程序设计 教 案编 号:5 第五章 bx和loop指令教学目的:(1) 理解汇编语言的循环结构(2) 掌握bx和loop

    24、联合使用访问内存实现循环结构的方法(3) 掌握汇编指令loop的格式,理解其工作原理(4) 掌握段前缀的使用教学重点与难点:bx和loop联合使用实现循环结构,与loop指令的工作原理教学方法:讲授、示例、练习教学过程:1、几个概念1.bx和内存单元的描述2.loop:英文单词“loop”有循环的含义,显然这个指令和循环有关。3.描述性符号“( )”:为了描述上的简洁,在以后的课程中,我们将使用一个描述性的符号 “( ) ”来表示一个寄存器或一个内存单元中的内容。4.约定符号idata表示常量2、教学内容5.1 bx下面指令的功能:mov ax,bx 功能:bx 中存放的数据作为一个偏移地址E

    25、A ,段地址SA 默认在ds 中,将SA:EA处的数据送入ax中。即: (ax)=(ds) *16 +(bx);mov bx,ax 功能:bx中存放的数据作为一个偏移地址EA,段地址SA默认在ds中,将ax中的数据送入内存SA:EA处。即:(ds *16 +(bx) = (ax)。5.2 Loop指令(循环控制指令)格式:loop 标号CPU 执行loop指令的时候,要进行两步操作: (cx)=(cx)-1; 判断cx中的值,不为零则转至标号处执行程序,如果为零则向下执行。注意:loop循环中用CX作计数器控制程序的循环次数。补充:通用寄存器:AX:Accumulator 累加器 常用于存放算

    26、术逻辑运算中的操作数BX:Base register 基址寄存器 常用来存放访问内存时的基址(段地址)CX:Count register计数器 在循环和串操作指令中用作计数器DX:Data register一般数据寄存器在进行乘、除运算时,它可作为默认的操作数参与运算,也可用于存放I/O的端口地址。 5.3 在Debug中跟踪用loop指令实现的循环程序示例:计算ffff:0006单元中的数乘以3,结果存储在dx中。分析:(1)运算后的结果是否会超出dx所能存储的范围?(2)我们用循环累加来实现乘法,用哪个寄存器进行累加?(3) ffff:0006单元是一个字节单元,ax是一个 16 位寄存器

    27、,数据长度不一样,如何赋值?5.4 Debug和汇编编译器Masm对指令的不同处理示例任务:将内存2000:0、2000:1 、2000:2、2000:3单元中的数据送入al,bl,cl,dl中。(1)在Debug中编程实现(2)汇编程序实现5.6 段前缀 在访问内存单元的指令中,用于显式地指明内存单元的段地址的“段寄存器:”(ds:、cs:、ss:或es:),在汇编语言中称为段前缀。5.7 一段安全的空间在8086模式中,随意向一段内存空间写入内容是很危险的 ,因为这段空间中可能存放着重要的系统数据或代码。汇编语言程序直接面向机器,如果我们要向内存空间写入数据时,要保证所写入的内存中没有重要

    28、的数据,否则会影响系统的正常运行,在一般的PC机中都不使用0:2000:2ff(00200h002ffh)这段256个字节内存空间,所以我们可以放心使用这段安全的空间。5.8 段前缀的使用将内存ffff:0ffff:b段元中的数据拷贝到 0:2000:20b单元中。作业:汇编语言程序设计 教 案编 号:6 第六章 包含多个段的程序教学目的:(1) 理解在代码段中使用数据的原理与不便之处(2) 理解在代码段中使用栈的原理与不便之处(3) 掌握将数据、代码、栈放入不同的段的应用教学重点与难点:将数据、代码、栈放入不同的段的应用教学方法:讲授、示例、练习教学过程:1、引言前面我们写的程序中,只有一个

    29、代码段。现在有一个问题是:如果程序需要用其他空间来存放数据,我们使用哪里呢?我们将以这样的顺序来深入地讨论多个段的问题:(1)在一个段中存放数据、代码、栈,我们先来体会一下不使用多个段时的情况;(2)将数据、代码、栈放入不同的段中。 6.1 在代码段中使用数据(将数据定义在代码段中)示例:编程计算以下8个数据的和,结果存在ax 寄存器中: 0123H,0456H,0789H,0abcH,0defH,0fedH,0cbaH,0987H。6.3 将数据、代码、栈放入不同的段在前面的内容中,我们在程序中用到了数据和栈,我们将数据、栈和代码都放到了一个段里面。我们在编程的时候要注意何处是数据,何处是栈

    30、,何处是代码。这样做显然有两个问题:(1)把它们放到一个段中使程序显得混乱;(2)前面程序中处理的数据很少,用到的栈空间也小,加上没有多长的代码,放到一个段里面没有问题。但如果数据、栈和代码需要的空间超过64KB,就不能放在一个段中(一个段的容量不能大于64 KB,是我们在学习中所用的8086模式的限制,并不是所有的处理器都这样)。 所以,我们应该考虑用多个段来存放数据、代码和栈。 作业:汇编语言程序设计 教 案编 号:7 第七章 更灵活的定位内存地址的方法教学目的:(1) 掌握汇编逻辑运算指令and和or的格式与含义(2) 理解字符串大小写转换问题,并掌握其实现方法(3) 掌握内存的寻址方式,并会灵活应用教学重


    注意事项

    本文(汇编语言程序设计教案.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开