240 likes | 497 Views
第 6 章 汇编语言程序设计. 本章主要教学内容. l 汇编程序基本语法 l Debug 基本运用 l 程序设计综合实例. 汇编程序整体结构. 汇编程序总体可分为两部分,即 数据定义部分(数据段) 代码部分(代码段). 数据定义语法规范(伪操作). 一般格式: 符号地址 助记符 数据值. 符号地址:偏移地址的符号化表示 助记符: 用来描述数据类型,分别是 DB :字节 DW :字 DD :双字 数据值: 可以是具体数、表达式、字符、字符串. 数据段定义举例. …. number1. 640. 3AH. -2.
E N D
第6章 汇编语言程序设计 本章主要教学内容 l 汇编程序基本语法 l Debug基本运用 l 程序设计综合实例
汇编程序整体结构 汇编程序总体可分为两部分,即 数据定义部分(数据段) 代码部分(代码段)
数据定义语法规范(伪操作) 一般格式:符号地址助记符数据值 符号地址:偏移地址的符号化表示 助记符:用来描述数据类型,分别是 DB:字节 DW:字 DD:双字 数据值:可以是具体数、表达式、字符、字符串
数据段定义举例 … number1 640 3AH -2 数 据 段 ave_value ? message t h e r e s …
常用操作符 ?:表示仅分配存储空间,但没有存储具体数值 DUP : 复制某个(些)操作数,其格式是: 重复次数DUP(操作数)
数据类型(属性)匹配问题 √ mov ax,array1 ╳ mov ax,array3 mov ax,word ptr array3 ╳ mov al,array1 mov al,byte ptr array1
代码段语法规范(伪操作) CODES SEGMENT ASSUME CS:CODES,DS:DATAS …… 具体代码 CODES ENDS END 代码部分首先要做的就是把事先定义的数据段的段地址送DS寄存器,一般如下: mov ax,datas mov ds,dx
子程序 子程序名PROC near(far) …… 具体代码 ret 子程序名ENDP 主程序中调用子程序可使用 CALL指令
汇编语言程序上机过程 1.硬件环境 目前8086汇编语言程序在IBM PC及其兼容机上运行 2.软件环境 (1)DOS操作系统 (2)宏汇编程序MASM (3)调试程序DEBUG
运行汇编语言程序的步骤 (1)用任何文本编辑程序建立扩展名为.ASM的源程序文件 (2)用宏汇编程序MASM(如微软宏汇编软件)将汇编语言源程序编译成可执行文件.EXE (3)在DOS命令状态下直接键入文件名就可执行该文件 备注: 若在编译过程中出现错误,根据错误信息提示(如语法、位置、类型、说明等),对源程序进行修改。
BIOS调用 • IBM PC系列机在只读存储器中提供了BIOS基本的输入输出系统,它占用系统板上8K字节的ROM区,又称为ROM BIOS。它为用户程序和系统程序提供主要外设的控制功能,即系统加电自检、引导装入及对键盘、磁盘、磁带、显示器、打印机、异步串行通信口等控制。计算机系统软件就是利用这些基本的设备驱动程序,完成各种功能操作。每个功能模块的入口地址都在中断矢量表中,通过软中断指令INT n可以直接调用。n=8~1FH是中断类型号,每个类型号n对应一种I/O设备的中断调用,每个中断调用又以功能号区分控制功能。
DOS 功能调用 • DOS磁盘操作系统的两个DOS模块:IBMBIO.COM和IBMDOS.COM,提供了更多的测试功能。DOS功能调用对硬件的依赖性更少,使DOS功能调用更方便、简单。 • DOS功能调用可完成对文件、设备、内存的管理。对用户来说,这些功能模块就是几十个独立的中断服务程序,这些程序的入口地址已由系统置入中断向量表中,在汇编语言程序中可用软中断指令直接调用。这样,用户就不必深入了解有关设备的电路和接口,只须遵照DOS规定的调用原则即可使用。
DOS功能调用的方法 要完成系统功能调用,基本按如下步骤: • 将入口参数送到指定寄存器中; • 功能号送入AH寄存器中; • 使用INT 21H指令。
键盘输入 • 此调用的功能是等待键盘输入一个字符,并将字符的键值(ASCII码)送入AL寄存器中,并在屏幕上显示该字符。 • 此调用没有入口参数。相当于C语言的Scanf • 功能号:01H送AH 例如:下列语句可实现键盘输入。 MOV AH,01H INT 21H
显示一个字符 • 此调用的功能是在显示器上显示一个字符。 • 入口参数:被显示字符的ASCII送DL • 功能号:02H送AH • 例如:要在屏幕上显示‘$’符号,可用以下指令序列 MOV DL,’$’ 或 mov dl,24H MOV AH,02H INT 21H
输出字符串 • 此调用的功能是在显示器上输出一个字符串。 • 入口参数:字符串的首地址送DX • 功能号:09H送AH • 例如:要在屏幕上显示’hello$’,可用以下指令序列 LEA DX,MESSAGE MOV AH,09H INT 21H
Debug基本运用 DEBUG是一个DOS实用程序,是供程序员使用的程序调试工具, 可以用它检查(修改)内存中任何地方的内容。 也可以用于逐条指令执行某个程序以验证程序运行的正确性。
随堂练习 任意给定一个数,统计其二进制表示形式中“1”的个数 举个例子,假设数是 3451D,程序要给出该数中“1”的个数 任意给定若干数据,编程求出其中最大者 备注:可自己任意指定一组数据,也可参照以下数据:345,-2345,10,5345,0,1,89,13A9H
上机练习 若有 N =1+2+3+……+n,编程求使N 不超过16位数的最大n值 更进一步,尝试把结果以十六进制显示出来。