汇编语言程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《汇编语言程序设计》课程教学大纲
学时:32 学分:2
理论学时:24 实验学时:8
面向专业:电科、电信、通信课程代码:B2700009
先开课程:C语言程序设计课程性质:必修
执笔人:王艳春审定人:陈龙猛、张金政
第一部分:理论教学部分
一、说明
1、课程的性质、地位和任务
本课程属于专业基础课,是电科、电信和通信专业学生必修的核心课程之一,是进一步学习微机原理、操作系统等课程的基础。掌握它有助于提高学生对计算机系统的设计、研究、开发和应用能力。汇编语言是一种面向机器、实践性很强的程序设计语言,必须结合一种实际的计算机来组织教学。因此,本课程选择最广泛使用的IBM PC作为具体的机型来介绍。通过课堂教学和上机实践,培养学生用汇编语言进行编程的思路、方法,养成良好的程序设计习惯,并了解底层I/O 驱动软件的编程方法,熟悉源程序汇编、链接和调试运行的步骤和方法,掌握dos、BIOS功能的调用方法及使用debug工具的调试手段,为后续课的学习打下扎实的基础。
2、课程教学和教改基本要求
课程的目的与教学基本要求:本课程主要介绍汇编语言和宏汇编的基本概念,80X86CPU的指令系统和寻址方式;介绍汇编语言程序格式、伪操作和上机全过程。通过实际例子,详细叙述顺序、分支、循环、子程序等基本程序结构以及程序设计的基本方法和技巧。学习这门课程,应达到以下几个要求:
①掌握汇编语言的基本理论知识和有关概念;掌握用汇编语言编写源程序的基本原则、方法和技巧;
②具有阅读,分析汇编语言程序的能力;
③通过上机实践,能够熟练地掌握汇编语言程序的编辑、汇编、连接、运行
过程及debug工具的调试手段。
课堂授课采用多媒体教学,采用由浅入深、循序渐进学习步骤,主要讲解设计思想、实现技巧,通过提问题引导学生思考,提高学生的学习兴趣,从而加深学生对理论课的理解,提高学生的动手能力。
二、教学内容与课时分配
第一章基础知识(2学时)
1.1 机器语言及汇编语言的产生
1.2 汇编语言的组成
1.3 存储器
1.4 指令和数据
1.5 存储单元及CPU对存储器的读写
1.6 三大总线
1.7 主板、接口卡及各类存储器芯片
1.8 内存地址空间
教学的重点与难点:指令和数据在内存或磁盘上没有区别;内存地址空间。
建议教学方法:讲授
思考题:
1. 1个CPU的寻址能力为8KB,那么它的地址总线宽度是多少?
2. 8080、8088、80286、80386的地址总线宽度分别为16根、20根、24根、32根,那么它们的寻址能力分别为多少?
3. 8080、8088、80286、80386的数据总线宽度分别为8根、8根、16根、16根,则它们一次可以传送的数据为多少字节?
4. 在存储器中,数据和程序以什么形式存放?
5. 为什么机器语言和汇编语言没有通用性?
第二章寄存器(3学时)
2.1 通用寄存器
2.2 字在寄存器中的存储
2.3 几条汇编指令
2.4 物理地址、8086CPU给出物理地址的方法
2.5 段的概念及段寄存器
2.6 代码段及相关寄存器
教学的重点与难点:8086CPU给出物理地址的方法;段的概念。
建议教学方法:讲授
思考题:
1. 给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围是?
2. 有一个数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻址到此单元,则SA的最小值和最大值分别是多少?
3. 执行下面3条指令,CPU修改几次IP?是在什么时候?最后IP的值是?
mov ax, bx
sub ax, ax
jmp ax
第三章寄存器(内存访问)(3学时)
3.1 内存中字的存储
3.2 DS和[address]
3.3 字的传送
3.4 mov、add、sub指令
3.5 数据段
3.6 栈、CPU提供的栈机制
3.7 栈顶超界问题
3.8 push和pop指令
3.9 栈段
教学的重点与难点:对[address]的理解;栈的概念及其实现。
建议教学方法:讲授
思考题:
1. 在debug中,用“d 0:0 1f”查看内存,结果如下:
0000:0000 70 80 F0 30 EF 60 30 E2 00 80 80 12 66 20 22 60
0000:0010 62 26 E6 D6 CC 2E 3C AB BA 00 00 26 06 66 88
下面程序执行前,ax=0,bx=0,写出每条指令执行完后相应寄存器中的值。
mov ax, 1
mov ds, ax
mov ax, [0000] ax=_______
mov bx, [0001] bx=_______
mov ax, bx ax=_______
mov ax, [0000] ax=_______
mov bx, [0002] bx=_______
add ax, bx ax=_______
add ax, [0004] ax=_______
mov ax, 0 ax=_______
mov al, [0002] ax=_______
mov bx, 0 bx=_______
mov bl, [000C] bx=_______
add al, bl ax=_______
2. 补全下面的程序,使其可以将10000H-1000FH中的8个字,逆序复制到
20000H-2000FH中。
mov ax, 1000h
mov ds, ax
_______________
_______________
_______________
push [0]
push [2]
push [4]
push [6]
push [8]
push [A]
push [C]
push [E]
3. 补全下面的程序,使其可以将10000H-1000FH中的8个字,逆序复制到
20000H-2000FH中。
mov ax, 2000h
mov ds, ax
_______________
_______________
_______________
pop [E]
pop [C]
pop [A]
pop [8]
pop [6]
pop [4]
pop [2]
pop [0]
第四章第一个程序(2学时)
4.1 源程序从写出到执行的过程
4.2 源程序、编辑源程序、编译、连接
4.3 可执行文件的执行