1
第4章 汇编语言程序设计
(Assembly Language Programming)
汇编语言概述4.1汇编语言源程序格式4.2汇编语言程序设计4.3DOS 功能调用
4.42
4.1 汇编语言概述
机器指令:用二进制编码的指令如:1000 1001 1101 1000
机器语言编写程序烦琐,难记忆,易出错。
符号指令:由助记符、符号组成,与机器指令一一对应MOV AX ,BX
1000 1001 1101 1000
汇编:机器只能识别机器指令,所以需要将符号指令翻译成机器指令,翻译的过程称作汇编。汇编程序:完成汇编任务的程序。
34.1 汇编语言概述(续)
汇编语言源程序:用符号指令书写的程序。
1E PUSH DS 2B C0SUB AX ,AX 50
PUSH AX
B8 34 12MOV AX ,12348E D8
MOV DS ,AX
汇编语言源程序
汇编程序
目标文件
4
图4.1 汇编语言程序的建立、汇编和连接过程
编辑程序Prog.asm 文件
汇编程序Prog.obj 文件
连接程序Prog.exe 文件
Edit.exe
Masm.exe
Link.exe
54.2 汇编语言源程序格式
汇编语言源程序采用分段式结构。
一个汇编语言源程序由若干段组成,一般有数据段、代码段、扩展段和堆栈段四种类型,源程序可以根据实际需要来确定段的数目。
汇编语言的语句格式4.2.1伪指令
4.2.2汇编语言源程序的结构
4.2.36
4.2.1 汇编语言的语句格式
汇编语言的语句分类1汇编语言语句的格式
2
11
3)操作数
根据不同的指令,可能是单操作数或双操作数,也可能不带操作数。
伪指令语句中的操作数可以是一个或多个,操作数之间用逗号隔开。
操作数可以是:常量
★变量★标号★寄存器★表达式
★
19④分析运算符
取地址偏移量运算符OFFSET ★取段基址运算符SEG ★取类型运算符TYPE
★取变量元数个数运算符LENGTH ★取变量字节数运算符 SIZE
★
25⑤合成运算符
可对变量、标号或存储器操作数的类型属性进行修改。
类型设置运算符PTR
★27
4.2.2 伪指令
伪指令是给汇编程序的控制命令,在汇编过程中由汇编程序进行处理。
翻译成目标程序后,这些伪指令就不存在了。
符号定义伪指令1数据定义伪指令2段定义伪指令3过程定义伪指令4源程序结束伪指令
5
28
1.符号定义伪指令
符号定义伪指令用来给一个符号重新命名,或定义新的类型属性等。
这些符号包括汇编语言中所用的变量名、标号名、过程名、寄存器名以及指令的助记符等。
符号定义伪指令有:
等价伪指令★等号伪指令
★
38
3.段定义伪指令
一个汇编语言源程序由若干个逻辑段组成,所有的指令、变量分别存放在各个逻辑段中。
段定义伪指令用来定义汇编语言源程序的逻辑段。
常用的段定义伪指令有:
SEGMENT/ENDS ★ASSUME ★ORG
★
63
4.3 汇编语言程序设计
程序设计的基本步骤4.3.1顺序结构4.3.2分支结构4.3.3循环结构4.3.4子程序结构
4.3.5
来实现的。
70
图4.4
循环结构图
72
例4.17流程图
75例4.18
流程图
编写子程序的注意事项
81
4.4 DOS 功能调用
DOS(Disk Operation System) 和BIOS(Basic Input and Output System)为用户提供两组系统服务程序。用户程序可以调用这些系统服务程序。
DOS 提供若干功能调用。包括基本输入/输出管理、内存储器读/写管理、磁盘文件的读/写管理、时间和日期的设置功能。
BIOS 在较低层次上为用户提供一组I/O 程序,要求用户对硬件有一定的了解,但也不要求用户直接控制外设。BIOS 驻留在ROM 中,独立于操作系统。
用户通过软中断指令INT n 去调用DOS 和BIOS 中的服务程序来访问系统。
系统功能调用的方法4.4.1常用的系统功能调用
4.4.282
4.4.1 系统功能调用的方法
INT 21H 是一个具有多个子功能的中断服务程序,这些子功能的编号称为功能号。INT 21H 一般称为系统功能调用。
调用步骤:
置入口参数
功能号→AH INT 21H 执行分析出口参数
视具体情况而定
83
4.4.2 常用的系统功能调用
返回操作系统(4CH 功能)
6
在屏幕上输出字符串(09H 功能)4字符串输入(0AH 功能)5在打印装置上输出单个字符(05H 功能)3在屏幕上输出单个字符(02H 功能)2读取键盘单个字符并回显(01H 功能)
1