第四章 汇编语言 程序设计 历些毛子利技大任课教师:王晓甜 XID粪 N IT Y xtwang@mail,xidian.edu.cn
第四章 汇编语言 程序设计 xtwang@mail.xidian.edu.cn 任课教师:王晓甜
本章要点 xtwang@mail.xidian.edu.cn >汇编语言程序设计基础 2>源程序的汇编、链接与调试 3>分支程序的设计 4>循环程序的设计 5 子程序的设计 6 综合程序的设计 历毛子大字 XIDIAN UNIVERSITY
xtwang@mail.xidian.edu.cn 本章要点 1 汇编语言程序设计基础 2 源程序的汇编、链接与调试 3 分支程序的设计 4 循环程序的设计 5 子程序的设计 6 综合程序的设计
1汇编语言程序设计基础 xtwang@mail.xidian.edu.cn 算法 所谓算法,简单地说就是计算机能够实现的有限的解题 步骤。我们知道,计算机只能进行最基本的算术运算和逻 辑运算,要完成较为复杂的运算和控制操作,必须选择合 适的算法,这是正确编程的基础。 若题目涉及到某种运算,则必须写出适合程序设计的正 确算法,若题目要完成的功能未涉及到运算,也要写出编 程思想。 历毛子大字 XIDIAN UNIVERSITY
xtwang@mail.xidian.edu.cn 1.汇编语言程序设计基础 算法 所谓算法,简单地说就是计算机能够实现的有限的解题 步骤。我们知道,计算机只能进行最基本的算术运算和逻 辑运算,要完成较为复杂的运算和控制操作,必须选择合 适的算法,这是正确编程的基础。 若题目涉及到某种运算,则必须写出适合程序设计的正 确算法,若题目要完成的功能未涉及到运算,也要写出编 程思想
1汇编语言程序设计基础 xtwang@mail.xidian.edu.cn 4.4.1程序设计的基本过程 程序设计的一般步骤 汇编语言程序设计基本上与高级语言程序设计一样,一般步骤 1.分析问题并抽象出数学模型。 2.确定最佳算法。 画出程序结构框图和流程图。 4.合理分配内存工作单元和寄存器,并了解IO接口地址。 5.编程并调试。(有时需要用注释行说明程序,便于阅读和修改。) 评价程序质量的标准 模块化设计方法 1.合理组织数据,发挥存贮器、Rg的作用。“自顶向下,逐 2.程序逻辑结构好,便于二次开发。 步细化 3.可读性强。 结构化编码方法 4.高可靠性和可维护性。 顺序、分支、循 环三种基本结构 5.效率高(代码少)。 历螺毛子拌执大字 XIDIAN UNIVERSITY
xtwang@mail.xidian.edu.cn 1.汇编语言程序设计基础 4.4.1 程序设计的基本过程 一、程序设计的一般步骤 汇编语言程序设计基本上与高级语言程序设计一样,一般步骤: 1.分析问题并抽象出数学模型。 2.确定最佳算法。 3.画出程序结构框图和流程图。 4.合理分配内存工作单元和寄存器,并了解I/O接口地址。 5.编程并调试。(有时需要用注释行说明程序,便于阅读和修改。) 二、评价程序质量的标准 1.合理组织数据,发挥存贮器、Reg的作用。 2.程序逻辑结构好,便于二次开发。 3.可读性强。 4.高可靠性和可维护性。 5.效率高(代码少)。 ◆模块化设计方法 ➢“自顶向下,逐 步细化” ◆结构化编码方法 ➢顺序、分支、循 环三种基本结构
1汇编语言程序设计基础 xtwang@mail.xidian.edu.cn 编写程序 采用汇编语言编写程序应注意以下几个问题: (1)必须详细了解CPU的编程模型、指令系统、 寻址方式及相关伪指令; (2)必须进行存储空间和工作单元的合理分配; (3)多次使用的程序段可采用子程序或宏指令 4)尽可能用标号或变量来代替绝对地址和常数; 毛孑种技大亭 XIDIAN UNIVERSITY
xtwang@mail.xidian.edu.cn 1.汇编语言程序设计基础 编写程序 采用汇编语言编写程序应注意以下几个问题: (1)必须详细了解CPU的编程模型、指令系统、 寻址方式及相关伪指令; (2)必须进行存储空间和工作单元的合理分配; (3)多次使用的程序段可采用子程序或宏指令; (4)尽可能用标号或变量来代替绝对地址和常数;
§1.元编语言基本元橐
6 §1.1 汇编语言基本元素
1.1.1汇编语言的语与格实 由汇编语言编写的源程序是由许多语句(也可称 为汇编指令)组成的。每个语句由1~4个部分组成, 其格式是 「标识符]指令助记符{操作数l;注解 其中用方括号括起来的部分,可以有也可以 没有。每部分之间用空格(至少一个)分开,一行最 多可有132个字符
7 由汇编语言编写的源程序是由许多语句(也可称 为汇编指令)组成的。每个语句由1~4个部分组成, 其格式是: [标识符] 指令助记符 [操作数][;注解] 其中用方括号括起来的部分,可以有也可以 没有。每部分之间用空格(至少一个)分开,一行最 多可有132个字符。 1.1.1 汇编语言的语句格式
(1)标识符:给指令或一存值单元地加所起的名字 标识符由下列字符组成:(以字母或圆点开头) 字母:A~Z,a-2;数字:09;特殊字符:?@_S 数字不能作标识符的第一个字符,而.仅能 作标识符的第一个字符,标识符最长为31个字符。 标识符后跟冒号时表示标号,代表该行指令的起 始地址,标号可以被转移、调用指令直接引用。 标识符后不带冒号时表示变量 伪指令前的标识符不加冒号
8 (1)标识符:给指令或某一存储单元地址所起的名字。 标识符由下列字符组成:(以字母或圆点开头) 字母: A~Z, a~z; 数字: 0~9; 特殊字符: ? . @ _ $ 数字不能作标识符的第一个字符,而. 仅能 作标识符的第一个字符,标识符最长为31个字符。 标识符后跟冒号时表示标号,代表该行指令的起 始地址, 标号可以被转移、调用指令直接引用。 标识符后不带冒号时表示变量。 伪指令前的标识符不加冒号
(2)指令助记符 表示不间操作的指,可以是80868088的指令助 记符,也可以是伪指令。 (3)操作数 是指令执行的矿象。依指令的要求,可能有一个、 两个、没有或者多个。 例如:RET ;无操作数 COUNT: INC CX;一个操作数 MOV CX,DI;两个操作数 ADD AX,IBP十4;第二个操作数为表达式 (4)注释 该项可有可无,是为源程序所加的注解,用于提高 程序的可读性
9 (2)指令助记符 表示不同操作的指令,可以是8086/8088的指令助 记符,也可以是伪指令。 (3)操作数 是指令执行的对象。依指令的要求,可能有一个、 两个、没有或者多个。 例如: RET ;无操作数 COUNT: INC CX ;一个操作数 MOV CX,DI ;两个操作数 ADD AX,[BP十4] ;第二个操作数为表达式 (4)注释 该项可有可无,是为源程序所加的注解,用于提高 程序的可读性
11.2汇编语言算符 汇编语言运算符:是汇编程序在光编时计算的 与运算指令不同,指令是在程序运行时计算的。 1、算术运算符、逻辑运算符、关系运算符 如:+、一、×、/、AND、OR、LT等 MOV AX, DI+BXI ADD AX. FIRST+1 MOV AX,((choice LT 20)AND 5) OR ((choice GE 20)AND 6) 10
10 汇编语言运算符:是汇编程序在汇编时计算的, 与运算指令不同,指令是在程序运行时计算的。 1、算术运算符、逻辑运算符、关系运算符 如:+、-、×、/ 、 AND、OR、LT等 MOV AX, [DI+BX] ADD AX, FIRST+1 MOV AX, ((choice LT 20) AND 5) OR ((choice GE 20) AND 6 ) 1.1.2 汇编语言运算符