宏汇编语言程序设计
西华师范大学计算机学院
钟乐海
E-mail:lhzhong@cwnu.edu.cn
西










Macro Assembly Language Programming
MOV AX,BX
MOV ADDR,AX
ADD AX,ADDR
.,,,,
教师简介
钟乐海,男,1963年 2月生,四川广安人,博士
研究生,教授,硕士导师。
担任的主要课程有:, 计算机导论,,, 算法
语言,,, 数据结构,,, 微机原理与接口技术,,, 宏
汇编语言程序设计,,, 数据库技术及应用,,, 软件工
程,,, 操作系统,,, 计算机网络原理及应用,,, 实
用网络技术, 等本科生课程和, 组网原理与技术,,
,TCP/IP原理及应用, 等研究生课程。
已经完成和正在研究的项目有, 考试信息系统工
程,,, 普通教育评价信息系统及建模研究,,, 四川师
范学院计算机校园网络建设,,, 水泥生料配料微机控制
系统,,, 微机原理与接口技术课程教学改革研究,,
,基于计算机校园网络的自动化办公系统的设计与实现,,
,网络安全技术研究, 等四川省重点科学技术研究项目、
面向 21世纪教学改革研究项目和四川省重点开发推广项目。
曾经获得四川省科技进步奖一项,出版专著和
教材三部,发表研究论文 30余篇。
西










课程有关信息
? Instructor
? 钟乐海 ( lhzhong@cwnu.edu.cn)
? TA( Teaching Assistant)
? 张蕾、杨华
? Office
? 综合楼二楼计算机学院主任办公室, Tel,2314365
? E-mail is the best way to communicate
? Course Web page
? http://www.cwnu.edu.cn/xygk/yxjs15.htm
西










课程介绍
? 专业基础课、必修课
? 计算机组成原理的一个部分
? 软件开发的一个组成部分
? 一种低级语言的程序设计
? 高级语言程序设计的扩展
西










相关课程
?先修课
? 计算机导论
? 高级语言程序设计
?后续课
? 计算机组成原理
? 微机原理及接口技术
? 单片机原理及应用
? 计算机控制技术
西










课程的任务、目的和基本要求
? 了解微型计算机的基本结构
? 了解和掌握微型计算机的基本工作原理
? 掌握 Intel 8086/8088CPU的基本结构及其基
本工作原理
? 掌握 Intel 8086/8088CPU汇编语言及其应用
? 学会汇编语言的一些基本设计方法,为以后
相关课程的学习和研究打下基础
? 认真完成作业和上机任务
? 能对立完成简单的汇编语言程序设计
? 能调试汇编语言程序
西










主要教学内容和学时分配
第一章 基础知识
第二章 IBM PC微型计算机
第三章 寻址方式与指令系统
第四章 汇编语言
第五章 程序设计基本技术
第六章 算术运算
第七章 串和表的处理
第八章 代码转换
第九章 高级宏汇编语言
第十章 输入 /输出程序设计
第十一章 汇编语言程序的开发
西










教学特点
? 采用最新汇编程序 MASM
? 采用简化段定义源程序格式
? 强调对基本指令的理解和掌握
? 重点介绍汇编系统和伪指令的基本内容
? 强调上机实践,要求熟练进行编程和调试
? 运用多媒体教学手段
西










教学要求
? 课堂上注意听讲、重要的是理解
? 部分补充例题等内容需要笔记
? 课堂外一定要看书复习或预习、完成作业
? 充分利用上机时间、多编程练习西










主要参考书
一、教材
王正智编者,,8086/8088宏汇编语言程序设
计教程,,电子工业出版社出版
二、参考书
1,DAVID J,BRADLEY,Assembly Language
Programming for the IBM Personal Computer,
Prentice-Hall,Inc.1984
2,The 8086 Family Use’s Manual,Intel
Corp.1979
3,iapx 88 BOOK,Intel Corp.1981
4、宏汇编语言 masm 4.0使用手册
5,Debug调试工具使用手册
西










参考文献
钱晓捷 陈涛 编著
16/32微机原理
汇编语言及接口技术
机械工业出版社
2001.7
西










参考文献
钱晓捷 编著
大学计算机学习指导系列
汇编语言程序设计
学习与解题指南
华中科技大学出版社
2002.8
西










作业、实验和考试
? 作业 (5 ~ 10%),1次 /周。
? 实验 (20 ~ 25%),6
? 考试 (70%):期末,闭卷考试。
? Deadline means deadline
西










请提宝贵意见和建议
Feel free to express yourself !
西










Chapter 1 基础知识
§ 1.1 汇编语言程序的一般概念
一、机器语言
1、计算机内部使用二进制码(机器语言)
2、每类计算机都有其独立的机器语言
3、使用机器语言编制程序和阅读程序都很困难
二、汇编语言
1、汇编语言是符号化了的机器语言
2、汇编语言和机器语言一一对应
3、汇编语言与计算机硬件相关
西










Chapter 1 基础知识
§ 1.1 汇编语言程序的一般概念
三、汇编语言程序设计的一般概念
从程序设计的观点可认为计算机是执行各种语言的机
器,但其最终执行的是 CPU提供的机器指令。汇编语言将机
器语言符号化(与机器语言一一对应)。
对于不同的计算机系统( CPU),有相应的机器语
言和汇编语言,本书以 8086/8088为例。
西










什么是汇编语言 ( 1)
? 汇编语言是一种面向机器的低级程序设计语言
? 汇编语言以助记符形式表示每一条计算机指令
? 助记符( mnemonic)是便于人们记忆、并能
描述指令功能和指令操作数的符号
? 助记符一般就是表明指令功能的英语单词或其
缩写西华









什么是汇编语言 ( 2)
? 用助记符表示的指令就是汇编语言中的汇编
格式指令
? 汇编格式指令以及使用它们编写程序的规则
就形成汇编语言( Assembly Language)
? 用汇编语言书写的程序就是汇编语言程序,
或称汇编语言源程序
? 汇编程序将汇编语言程序“汇编”成机器代
码目标模块
西










什么是汇编语言 ( 3)
? 汇编语言的主要特点:
? 汇编语言程序与处理器指令系统密切相关
? 程序员可直接、有效地控制系统硬件
? 形成的可执行文件运行速度快、占用主存
容量少
汇编语言程序与汇编程序是两个概念
西










汇编语言和高级语言 ( 1)
? 汇编语言与处理器密切相关
↘ 汇编语言程序的通用性、可移植性较差
? 高级语言与具体计算机无关
↗ 高级语言程序可以在多种计算机上编译后执行
汇编语言,× 高级语言,√
西










汇编语言和高级语言 ( 2)
? 汇编语言功能有限、涉及硬件细节
↘ 编写程序比较繁琐,调试起来也比较困难
? 高级语言提供了强大的功能,不必关心
琐碎问题
↗ 类似自然语言的语法,易于掌握和应用
汇编语言,× 高级语言,√
西










汇编语言和高级语言 ( 3)
? 汇编语言本质上就是机器语言
↗ 可以直接、有效地控制计算机硬件
↗ 易于产生速度快、容量小的高效率目标程序
? 高级语言不针对具体计算机系统
↘ 不易直接控制计算机的各种操作
↘ 目标程序比较庞大、运行速度较慢
汇编语言,√ 高级语言,×
西










汇编语言和高级语言 ( 4)
? 汇编语言的优点:
? 直接控制计算机硬件部件
? 可以编写在“时间”和“空间”两方面最有效
的程序
? 汇编语言的缺点:
? 与处理器密切有关
? 需要熟悉计算机硬件系统、考虑许多细节
? 编写繁琐,调试、维护、交流和移植困难
汇编语言,? 高级语言,?
西










汇编语言和高级语言 ( 5)
? 汇编语言的优点使得它在程序设计中占有重
要的位置,是不可被取代的
? 汇编语言的缺点使得人们主要采用高级语言
进行程序开发工作
? 有时需要采用高级语言和汇编语言混合编程
的方法,互相取长补短,更好地解决实际问

混合编程 取长补短
西










汇编语言的应用场合
? 程序要具有较快的执行时间,或者只能占用较小
的存储容量
? 程序与计算机硬件密切相关,程序要直接、有效
地控制硬件
? 大型软件需要提高性能、优化处理的部分
? 没有合适的高级语言、或只能采用汇编语言的时

? 分析具体系统尤其是该系统的低层软件、加密解
密软件、分析和防治计算机病毒等等
汇编语言的作用实在不小 !
西










Chapter 1 基础知识
§ 1.2 为什么要学习汇编语言
一、可以从根本上认识和理解计算机的工作过程
1、了解和认识程序的执行过程
2、了解计算机的内部结构
3、充分发挥计算机的硬件功能
二、某些功能只能靠汇编语言来实现
1、机器自检
2、系统的初始化
3,I/O设备的操作
三、提高程序效率
节约空间和提高运行速度
四、一般高级语言都有与汇编语言的接口功能
西










Chapter 1 基础知识
§ 1.3 进位计数制及其相互转换
一,进位计数制
基数,每个数位上有限数码个数
权,个、十、百、千位 …
对任一数 KnRnKn- 1Rn- 1… K- mR- m都可以表示为:
-m
S= ∑ KiRi (其中 R表示基数)
i=n
西










1、基本概念
2、进位制
( 1)二进制
( 2)十进制
( 3)十六进制
( 4)汇编语言一般使用二进制或十六进制
Chapter 1 基础知识
按权相加法
西










2、两种方法
( 1)十进制转换为二进制
整数部分,除 2取余
小数部分,乘 2取整
( 2)任何进制转换为十进制
二、数制之间的转换
1、两个原则
(1),四位二进制对应一位十六进制
(2),三位二进制对应一位八进制
所以二、八和十六进制与二进制之间的相互转换可转化
为二、十进制之间的相互转换。
Chapter 1 基础知识
§ 1.4 带符号数的表示
一、基本概念
1,真值,日常用+或-表示的数2,机器数,把二进制的最高位符号化所表示的数
机器数最高位为 0:表示正数
机器数最高位为 1:表示负数
3、在计算机中为把减法转换为加法,引入了原码、补码
的概念。
二、原码
正数、负数的符号位分别用 0,1表示的方法。
例,X= 105 [X]原 = 01101001
X=- 105 [X]原 = 11101001
西










西










Chapter 1 基础知识
8位带符号数表示的范围:
01111111~ 1111111 即- 127~ + 127
0的两种表示,0000000表+ 0,10000000表- 0
原码表示要判断符号:加或减运算、结果的符号。
为把减法转变为加法,引入补码的概念。
三、补码
1、定义
带符号数 X的补码表示法:
[X]补 = M+ X ( MOD M)
M为模,根据机器数的位数而定,对 8位二进制其模为 28
西










Chapter 1 基础知识
2、范围
对 8位机器数 - 128~+ 127
没有+ 0、- 0的区别,[+0]补 = [- 0]补 = 00000000
3,正数的补码与原码相同
在此只讨论负数的补码
负数的补码为其真值数(包括符号位)按位取反后加
1。如变换前已是原码,则符号位不变。
注,(1)、由真值数或原码变换为补码可使用简便方法:
自低位向高位遇到的第一个 1不变,以后各位按位变反
(如变换前已是原码,则符号位不变)
(2),[X]补<==求补运算== > [- X]补
求补运算为:按位变反后加 1
西










Chapter 1 基础知识
(3)、当负数用补数表示时,减法转换为加法。
4、补码的加、减运算
加,[X]补 + [Y]补 = [X+ Y]补
减,[X]补 - [Y]补 = [X]补 + [- X]补 = [X- Y]补
(4),IBM PC汇编语言采用补码表示数,即一个字节表示
-128~+127,一个字表示 -32768~+32767。
§ 1.5 字符编码
一,ASCⅡ 码
字符编码采用 ASCⅡ 码( American Standard Code
for Information Interchange),即美国标准信息交换代
码。
二,ASCⅡ 码的编码方式
Chapter 1 基础知识
西










字符编码
校验位
三,ASCⅡ 码字符的分类
1,ASCⅡ 码的字符个数,128个( 27)
2,ASCⅡ 码的字符分类
非打印类(控制代码),33个,如回车( 0DH)、
换行( 0AH)等
打印类,95个,包括英文字符、数字和其他可打印
的符号等。