汇编语言程序设计实训教程.docx
《汇编语言程序设计实训教程.docx》由会员分享,可在线阅读,更多相关《汇编语言程序设计实训教程.docx(135页珍藏版)》请在文库网上搜索。
1、21 世纪 高等 学校 电子 信息 类专 业规 划教 材汇编语言程序设计 实训教程秦莲主编殷肖 川姬伟 锋孙鹏编著清 华 大 学 出 版 社北 京交 通大 学出 版社 北京 内 容 简 介汇编语言程序设计是高校计算机专业的经 典课程 之一。本书 是与 汇 编语言 程序设 计教材 配套的 实训教程, 编写的目的是使学生通过实验练习 加深对 理论课 程的理 解, 全书选 用多个 具有代 表性的 实验, 对汇编语言结构化和模块化程序进行了深入的解析, 详细叙述了汇编语言 程序的编程 与调试过程, 并给出 正确结果。全书正文共 6 章, 主要内容包括: 汇编 语言程 序的语 句组成、汇编 语言源 程序
2、的 书写格 式和汇 编语言 源程序上机调试运行方法; 汇编语言程序设计基本结构实验, 即顺序程序实验、分支程 序实验、循环程序实 验; 汇编语言程序子程序调用实验和模块化程序设计实验; I / O 程序实 验, 即键 盘扫描 实验、显示控 制实验 和串口通信实验; WIN32 汇编程序实验, 即显 示程序 实验、键盘消 息处理 实验和 鼠标消 息处 理实 验; 汇编 语言与 C / C + + 语言的混合程序 设计 方式, 即 C/ C + + 嵌 入汇 编程 序 实验 和 C/ C + + 调 入汇 编 程序 模块 实验。本书可作为高校计算机专业、自动化控制专 业及相 关专业 本科生 汇编语
3、 言程序 设计实 验课程 的教科 书, 也可作为相关领域的工程技术人员的实验参考书。版权所有, 翻印必究。举报电话: 010 - 62782989 13501256678 13801310933本书封面贴有清华大学出版社防伪标签, 无标签者不得销售。本书防伪标签采用特殊防伪技术, 用户可通过在图案表面涂抹清水, 图案消失, 水干后 图案复现; 或将表面 膜揭下, 放在白纸上用彩笔涂抹, 图案在白纸上再现的方法识别真伪。图书在版编目( C IP ) 数据汇编语言程序设计 实训 教 程 / 秦莲 主 编. 北 京: 清 华大 学 出版 社; 北 京 交 通大 学 出版 社, 2005. 5( 21
4、 世纪高等学校电子信息类专业规划教材)ISBN 7 - 81082 - 524 - 0. 汇. 秦. 汇编语言 - 程序设计 - 高等学校 - 教材. TP313中国版本图书馆 CIP 数据核字( 2005 ) 第 045601 号责任编辑: 周益丹出版者:清 华 大 学 出 版 社邮编: 100084电话: 010 - 62776969http: / / www. tup. com. cn北京交通大学出版社邮编: 100044电话: 010 - 51686414http: / /press. bjtu. edu. cn印 刷 者: 北京鑫海金澳胶印有限公司 发 行 者: 新华书店总店北京发行
5、所开本: 185 260印张: 8. 5字数: 205 千字版次: 2005 年 5 月第 1 版2005 年 5 月第 1 次印刷书号: ISBN 7 - 81082 - 524 - 0 / TP194印数: 1 4 000 册定价: 14. 00 元本书如有质量问题, 请向北京交通大学出版社质监组反映。对您的意见和批评, 我们表示欢迎和感谢。 投诉电话: 010 - 51686043, 51686008; 传真: 010 - 62225406; E-mail: press center. bjtu. edu. cn。前言汇编语言是提供给用户直接访问计算机系 统最 快而又 最为 有效的 一种
6、 编程 语言, 使用 汇编语言编写程序能够充分发挥计算机硬件系统的功能, 具有占用存储空间少、运行速度快 以及代码质量高等优点, 那些需要对计算机硬件进 行控制 或对 运行 时间和 效率 有要求 的系 统软件或应用软件, 通常都是用汇编语言编写的, 因此熟练掌握汇编语言源程序的设计方法 是非常重要的。本书是与 汇编语言程序设计教材配套的实训 教程, 目的是 使学生通 过实验加 深对理 论课程的理解。本书在整个编写过程中, 努力做 到实验 简单 明了, 具有 一定 的代 表性, 文字 解释清晰, 通俗易懂。全书正文共 6 章。第 1 章介绍了汇编语言与机器语言的特点, 对汇编语言程序的语句组成、
7、汇编语言源程 序的书写格式和汇编语言源程序上机调试运行方法进行了重点论述。第 2 章介绍了汇编语言程序设计基本结构实验, 即顺序程序实验、分支程序实验和循环 程序实验。对每类实验都进行了详细的问题分析, 实验验证。第 3 章介绍了汇编语言程序子程序调用实验和模块化程序设计实验。在子程序调用实 验中对主程序与子程序都进行了详细的论述。第 4 章介绍了 I / O 程序实验, 对键盘扫描实 验、显示控 制实 验、串口通 讯实 验等典 型实 验进行了详细论述。第 5 章介绍了 WIN32 汇编程序的 框架, 重 点叙述 了显 示程 序实验、键 盘 消息 处理 实验 和鼠标消息处理实验。第 6 章介绍
8、了汇编语言与 C / C + + 语言的混合程序设计方式, 重点叙 述了 C / C + + 嵌入 汇编程序实验和 C / C + + 调入汇编程序模块实验。本书由秦莲同志负责组织编写。具体编写分工是: 第 1, 2, 3 章由秦莲编写; 第 4 章由姬 伟锋编写; 第 5 章由孙鹏编写; 第 6 章由殷肖川编写。由于编者水平所限, 书中难免存在错误和不妥之处, 敬请广大读者批评指正。作者2005 年 5 月目录第 1 章概述( 1)1 . 1汇编语言简介( 1)1 . 1 . 1汇编语言与机器语言( 1)1 . 1 . 2汇编语言的语句组成( 2)1 . 1 . 3汇编语言中的常数与表达式(
9、 2)1 . 1 . 4汇编语言中的标号及变量( 3)1 . 2汇编语言源程序的典型结构( 3)1 . 2 . 1上机调试过程( 5)1 . 2 . 2常用 DEBUG 命令( 8)第 2 章基本结构实验( 13)2 . 1顺序程序实验( 13)2 . 1 . 1 【 实验 2. 1】查表求值( 13)2 . 1 . 2 【 实验 2. 2】BCD 码转换( 15)2 . 1 . 3 【 实验 2. 3】表达式计算( 17)2 . 2分支程序实验( 19)2 . 2 . 1 【 实验 2. 4】求函数值( 20)2 . 2 . 2 【 实验 2. 5】方程求解( 22)2 . 2 . 3 【
10、实验 2. 6】求最大值与最小值( 25)2 . 3循环程序实验( 28)2 . 3 . 1 【 实验 2. 7】函数调用( 29)2 . 3 . 2 【 实验 2. 8】“ 冒泡法”排序( 32)2 . 3 . 3 【 实验 2. 9】矩阵相乘( 35)第 3 章子程序与模块化程序实验( 39)3 . 1子程序实验( 39)3 . 1 . 1 【 实验 3. 1】显示程序( 39)3 . 1 . 2 【 实验 3. 2】计算 N!( 41)3 . 1 . 3 【 实验 3. 3】数据传送( 44)3 . 2模块化程序实验( 50)3 . 2 . 1 【 实验 3. 4】显示字符串( 50)3
11、 . 2 . 2 【 实验 3. 5】统计负数个数( 52)第 4 章I/O 程序实验( 56)4 . 1键盘扫描程序实验( 56)4 . 1 . 1 【 实验 4. 1】单字符输入程序( 56)4 . 1 . 2 【 实验 4. 2】多字符输入程序( 57)4 . 2显示控制程序实验( 60)4 . 2 . 1 【 实验 4. 3】在图形和字符显示方式下显示字符串( 60)4 . 2 . 2 【 实验 4. 4】在图形显示方式下画线( 63)4 . 2 . 3 【 实验 4. 5】显示十进制整数( 65)4 . 3文件实验( 67)【 实验 4. 6】磁盘文件管理( 67)4 . 4串口通信
12、实验( 69)【 实验 4. 7】串口通信( 69)4 . 5中断系统与中断程序实验( 73)4 . 5 . 1 【 实验 4. 8】中断服务程序( 73)4 . 5 . 2 【 实验 4. 9】驻留中断服务程序( 76)第 5 章WIN 3 2 汇编程序实验( 79)5 . 1WIN 32 汇编程序的框架( 79)【 实验 5. 1】消息框显示( 79)5 . 2显示程序实验( 83)5 . 2 . 1 【 实验 5. 2】简单窗口显示( 83)5 . 2 . 2 【 实验 5. 3】字符串显示( 86)5 . 2 . 3 【 实验 5. 4】菜单的使用( 90)5 . 3键盘消息处理程序实
13、验( 95)【 实验 5. 5】键盘消息处理( 95)5 . 4鼠标消息处理程序实验( 98)【 实验 5. 6】鼠标消息处理( 98)第 6 章汇编与 C /C + + 混合编程实验( 102)6 . 1混合编程方式概述( 102)6 . 2C /C + + 中嵌入汇编程序实验( 102)6 . 2 . 1 【 实验 6. 1】在 C 程序中嵌入汇编语句实现累加求和( 103)6 . 2 . 2 【 实验 6. 2】用嵌入汇编实现对任一 C 数组 array 元素自动求和( 104)6 . 2 . 3 【 实验 6. 3】利用嵌入式汇编编写 C 程序中的函数( 105)6 . 2 . 4 【
14、 实验 6. 4】嵌入式汇编调用 C 函数( 107)6 . 2 . 5 【 实验 6. 5】嵌入式汇编调用 C 标准库函数( 109)6 . 3C /C + + 调用汇编程序模块实验( 111)6 . 3 . 1 【 实验 6. 6】VC 程序调用汇编程序模块实现排序( 111)6 . 3 . 2 【 实验 6. 7】VC 程序调用汇编程序模块实现简单计算( 115)附录 AASC II 码表( 118)附录 BDO S 和 BIO S 的宏定义( 119)附录 CDE BUG 命令表( 129)参考文献( 130)第 1 章概述1.1汇编语言简介程序设计语言的种类很多, 总体可分为低级 语
15、言 和高级 语言 两种。低 级语 言有机 器语 言和汇编语言, 高级语言有 C / C + + , Pascal, BASIC 等。1 .1 .1汇编语言与机器语言计算机能够直接识别的是 二进 制数 0 和 1 组成的 代码。机 器指 令( Instruction) 就 是二 进制编码指令, 一条机器指令控制计算机完成一 个操 作。每种 处理 器都有 各自 的机器 指令 集, 某种处理器支持的所有指令的集 合就是 该处 理器的 指令 系统 ( Instruction Set) 。指 令集 及使用它们编写程序的规则被称作机 器语言 ( Maching Language) 。 用机器 语言 形成的
16、 程序 是计算机惟一能够直接识别并执行的程序, 而用其 他语言 程序 编写 的程序 必须 经过翻 译转 换成机器语言程序才能执行。因此, 机器语言程序常被称为目标程序( 或目的程序) 。机器指令一般由操作码( Opcode) 和操作数( Operand) 构成。操作 码是表 明操作性 质的 代码, 操作数则表明参加操作的数或数所在的地址。一条机器指令是一组二进制代码, 一个 机器语言程序就是一段二进制代码序列。用机 器语 言编写 程序 的最大 缺点 是难 以理解, 因 而极易出错, 也难以发现错误。所以只是在计算机发展的早期或不得已的情况下, 才用机器 语言编写程序。现在除了有时在程序某处需要
17、 直接 采用机 器指 令填充 外, 几乎 没有人 采用 机器语言编写程序了。为了克服机器语言的缺点, 人们采用便于记忆、并能描述指令功能的符号来表达机器指 令。表示指令操作码的符号称为指令助记符, 简称助记符; 助记符一般是表明指令功能的英 语单词或其缩写。指令操作数同样也可以用易于记忆的符号表示。用助记符表示的指令就 是汇编格式指令。汇编格式指 令以 及使用 它们 编写程 序的 规则 就形成 汇编 语言 ( Assembly Language) 。用汇编语言编写的程序就是汇编语言程序。汇编语言是 一种符号 语言, 它用助 记符表示操作码, 比机器语言容易理解和掌握, 也 容易 调试和 维护。
18、但 是, 汇编 语言源 程序 要翻译成机器语言程序才可以由处理器执行。这个翻 译的过程 称为“ 汇编”, 完成汇 编工作 的程序就是汇编程序( Assembler) 。用汇编语言编程时, 程序员可以直接使用存储器、寄存 器、I / O 端 口进行处 理, 同 时也能 直接使用 CPU 指令系统及其提供 的各种 寻址 方式, 编出 高质 量的 程序, 所以 用汇 编语 言编 写的程序要比与它等效的高级语言程序生成的目的代码精简很多, 因此占用内存少, 执行速 度快。但是汇编语言程序与所要解决问题的数 学模 型之间 的关 系不直 观, 使得 编程难 度增 大, 出错可能性也增大, 因而进行程序设计
19、和调试的时间比较 长。另外, 不同的 CPU 系列具 有不同的汇编语言, 因此汇编语言在不同机器间的可移植性较差。2汇编语言程序设计实训教程1 .1 .2汇编语言的语句组成汇编语言源程序是由一条条语句组成的, 语句则由名称、操作助记符、操作数、注释 4 部 分组成。例如:NEXT: MOV AL, 80 H; AL80 HDATADB02 H, 03 H, 04 H, 05 H, 0 6H, 07 H, 08 H1. 名称语句中的名称是一个标识符, 可以由字母 ( a, b, c, d, e, z) , 数 字( 0, 1, 2, 9) 及特 殊符号( ? , . , , - ,) 组成。名称
20、必 须由 字 母开 头, 若名 称 中有 圆点 符, 则 圆点 符必 须用 第一个字符。注意, 数字不能用作第一个字 符。构成 名称 的字符 总数 可多 达 31 个, 若超31 个字符, 则只有前 31 个字符有效。2. 操作助记符操作助记符将指出该语句的基本操作功能, 每条语句必须有操作助记符, 它是汇编语言 中规定了明确含义的一组专用符号, 所以不能随意使用。例如, MOV 是传送指 令的助 记符, ADD 是加法指令的助记符, DB 是定义字节变量的伪指令助记符。3. 操作数语句的操作数部分, 可以 是数 据 本身, 也 可以 是 数据 所在 的地 址。前 者 可 以是 一 个常 数,
21、 也可以是代表常数的一个标识符或表达式, 后者通常是以某种寻址方式给出的存放操作 数的地址。不是每条语句都必须含有操作数的, 例如: HALT 暂停指令就不含操作数。4. 注释注释仅用作对语句或程 序段 的 说明, 它 不是 程 序的 可执 行部 分, 汇 编时 不 形成 目 标代 码, 注释必须以分号“ ; ”开头, 它可以作为语句的一个部分, 也可以作为一个单独的语句。1 .1 .3汇编语言中的常数与表达式1. 常数常数可以分为数值常数和字符串常数两 类。数值 常数 按其 基数的 不同, 可 以有二 进制 数、八进制数、十进制数、十六进制数等几种不同的表示形式, 汇编语言采用不同的后缀加以
22、 区分。例如: 101010B = 52O = 42D = 2 AH另外, 应该注意, 汇编语言中的数值常数的 第一位 必须 是数 字, 否则汇 编时 将被看 成是 标识符。例如: AFH 应写成 0AFH字符串常数是以单引号“ ”括起来的一串字符, 例如: WELCOME TO YOU ; 1234567 需要指出的是, 此处单引号中的内容在计算机内部均是以 ASCII 码表示的。2. 表达式表达式由操作数和操作符组成, 操作数可以是常数或标识符, 也可以是子表达式。操作 符在宏汇编语言中非常丰富, 可分为算术操作符、逻辑操作符、关系操作符、属性操作符及其 他操作符等。具体内容如下。算术操作
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序设计 教程