汇编语言的基本语法.ppt

上传人:xin****828 文档编号:15930777 上传时间:2020-09-14 格式:PPT 页数:52 大小:389KB
收藏 版权申诉 举报 下载
汇编语言的基本语法.ppt_第1页
第1页 / 共52页
汇编语言的基本语法.ppt_第2页
第2页 / 共52页
汇编语言的基本语法.ppt_第3页
第3页 / 共52页
资源描述:

《汇编语言的基本语法.ppt》由会员分享,可在线阅读,更多相关《汇编语言的基本语法.ppt(52页珍藏版)》请在装配图网上搜索。

1、第5章 汇编语言的基本语法,主要内容 汇编语言程序的结构 汇编语言语句类型和组成 汇编语言程序设计,5.1 汇编语言的特点,1、机器指令:计算机能识别的代码,机器指令是由二进制数组成的。 例如: PUSH AX 机器指令为:01010000 2、汇编语言:汇编语言是一种符号语言,用助记符表示操作码,用符号或符号地址表示操作数或操作数地址,它与机器指令是一一对应的。 3 、高级语言:面向过程(如C, FORTRAN)或对象(如C+, Java)的语言,不依赖于机器,因而有很好的通用性和可移植性,汇编语言与高级语言的比较,采用汇编语言进行程序设计的优点: 可充分利用机器的硬件功能和结构特点,加快程

2、序的执行速度,减少目标程序所占用的存储空间。 常用来编写实时控制程序、实时通信程序,有时也用来编制某些系统软件程序。,文件名.ASM 文件名.OBJ 文件名.EXE,汇编语言 源程序,汇编,目标 程序,连接,执行/调试 程序,编辑程序 EDIT.EXE,汇编程序 MASM.EXE,连接程序 LINK.EXE,汇编语言程序的开发过程,ML 文件名.ASM,DATA SEGMENT ;数据段 NUM DW 0011101000000111B NOTES DB The result is : , $ DATA ENDS,STACK SEGMENT STACK STA DB 50 DUP(?) TOP

3、 EQU LENGTH STA STACK ENDS,CODE SEGMENT ;代码段 ASSUME CS:CODE,DS:DATA BEGIN: MOV AX, DATA MOV DS,AX MOV DX,OFFSET NOTES ;显示提示信息 MOV AH,9H INT 21H MOV BX,NUM ;将数装入BX MOV CH,4 ;CH作循环计数器,ROTATE : DISPLAY: MOV CL, 4 ;CL中放移位位数 MOV DL, AL ;显示16进制数 ROL BX,CL MOV AH,2 MOV AL,BL INT 21H AND AL,0FH ;AL中为一位16进制数

4、 DEC CH ADD AL,30H ;转换为ASCII码值 JNZ ROTATE CMP AL,9 ;是09的数码? MOV AX,4C00H;返回DOS JL DISPLAY INT 21H ADD AL,07H ;在AF之间 CODE ENDS ;代码段结束 END BEGIN ;模块结束,2、结构 DATA SEGMENT DATA ENDS STACK SEGMENT STACK STACK ENDS CODE SEGMENT CODE ENDS ENDS,源程序由若干条语句组成 程序由最多4个段组成,数据段、堆栈段、代码段、附加段 每个段有一名字,并以符合SEGMENT表示段的开始

5、,以END作为段的结束符号,5.2 汇编语言程序结构和基本语法,汇编语言的基本语法:词法和句法 一、词法 字符集、标识符、保留字、数的表示、运算符和表达式 1、字符集 英文字符:A - Z,a - z; 数字字符:0 - 9 算术运算符号:+ - * / 关系运算符号: 分隔符:, :;( ) TAB 控制符:CR、LF、FF 其他字符:如 Memory: 45H,23H,01H,00H ? 表达式,不带引号的?表示可预置任何内容 例: DA_B DB ? , ? ;要求分配两个字节单元 DA_W DW ? , ? ;要求分配两个字单元 字符串表达式 数据项可以写成字符串形式,但只能用DB、D

6、W、DD定 义,而且DW、DD语句定义的串只允许包含两个字符。,例: S1 DB ABCDEF S2 DW AB, CD, EF S3 DD AB, CD 这几个变量在存储器中存放情况如下: S1 41H S2 42H S3 42H 42H 41H 41H 43H 44H 00H 44H 43H 00H 45H 46H 44H 46H 45H 43H 00H 00H,注意:定义多于两个以上字符的字符串时,只能使 用DB伪指令,不能使用DW和DD等伪指令。,格式2: 变量名 伪指令名表达式DUP(表达式) 用于定义重复的数据或分配一数据块空间 例: D_B1DB 20H DUP(?) ;保留20

7、H个字节 D_B2 DB 10H DUP(ABCD) ;字符串ABCD ;重复10H次 D_W1 DW 10H DUP(4) ;字4重复10H次,3、段定义语句 段开始语句SEGMENT和段结束语句ENDS 段定义格式: 段名 SEGMENT 定位类型 组合类型 类别 段名 ENDS 定位类型:用来规定段起始边界的要求,可以为以下四种,缺省为 PARA) PAGE: 16位段地址的最低8位必须为0,即从一页的起点开始; PARA: 16位段地址的最低4位必须为0,即从一段的起点开始; WORD: 16位段地址的最低1位必须为0,即从偶地址开始; BYTE: 16位段地址可以为任意值,即段可以从

8、任何字节开始。,组合类型 告诉连接程序本段与其他段的关系 NONE 本段与其他段逻辑上不发生关系,每段有独立段基地址; PUBLIC 将本段与用PUBLIC说明的同名同类别的其他段连接成一个段,所有这些段用同一个段基地址; COMMON 同名同类段相重叠,段的长度为其中最长段的长度 STACK 表示本段是堆栈段,连接方式同PUBLIC MEMORY 该段在连接时被放在所有段的最后 AT 把本段装在表达式的值所指定的段基地址处 类别,段分配语句ASSUME,CPU对存储器的访问必须通过一个段寄存器来提供段基址,ASSUME用来建立段与段寄存器之间的联系。 格式:ASSUME 段寄存器名:段名,段

9、寄存器名:段名 DATA SEGMENT DATA ENDS STACK SEGMENT STACK STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK CODE ENDS END,DATA1 SEGMENT VAR1 DB 12H DATA1 ENDS DATA2 SEGMENT VAR2 DB 34H DATA2 ENDS CODE SEGMENT VAR3 DB 56H ASSUME CS:CODE,DS:DATA1 START: INC VAR1 INC VAR2 INC VAR3 CODE ENDS END START,例:

10、,4、过程定义语句 在程序设计中,常将多次重复使用的具有一定功能的程序段组成一个子程序,称为过程,可用CALL调用,RET返回。 定义格式: 过程名 PROC NEAR/FAR 过程名 ENDP NEAR过程只允许段内调用,FAR允许段间调用,5.宏指令 宏定义语句格式: 宏指令名 MACRO 形式参数1,形式参数2 ENDM 宏调用: 宏指令名 实参数,实参数,,SHIFT MACRO X MOV CL,X SAL AL,CL ENDM,SHIFT 6,宏扩展: + MOV CL,6 + SAL AL,CL,5.4 汇编语言程序的上机过程,汇编语言程序上机运行的过程有以下几个步骤: (1)

11、用编辑程序建立.ASM源文件; (2)用宏汇编程序MASM等汇编源文件,生成.OBJ目标码文件; (3)用连接程序LINK对目标码文件等模块进行连接,生成.EXE可执行文件; (4) 键入可执行文件名执行该文件,分析执行结果; (5) 用DEBUG等工具调试.ASM源程序,再汇编、连接、运行,直到得出正确结果。 为此,除了DOS系统软件和编辑程序外,还需要备置如下程序: 汇编程序 masm.exe或asm.exe或tasm.exe等 连接程序 link.exe或tlink.exe等 汇编调试程序 等 交叉引用程序 cref.exe符号索引文件处理程序等,1、建立源文件 可使用任何一种能建立AS

12、CII文本文件的编辑程序来建立汇编源程序文件,扩展名为.ASM。 在使用各种文字编辑程序时,被编辑的源文件(.ASM)中不应有排版格式控制符。,2、汇编 编辑生成的.ASM源程序文件,须经汇编程序进行汇编,生成二进制代码的目标文件。 常见的汇编程序有行汇编和宏汇编两种类型。行汇编常用DEBUG.EXE的A命令,生成的目标代码可作为.COM文件存盘,也可在DEBUG环境下直接运行。 行汇编简单直观,生成的目标程序所占用的内存空间最小;但汇编按绝对地址进行,长度限制在64KB范围内,目标程序没有与其它程序模块连接的信息,要由用户或安装程序实现各个目标程序在内存中的地址分配,这样既可能使各程序之间产

13、生太大的空隙(造成浪费)、也可能造成各程序的内存存储冲突。宏汇编MASM对汇编语言源程序*.ASM进行汇编常用方法。,DEBUG的使用方法,1DEBUG的运行 2DEBUG的主要命令 D,显示内存单元内容; U,反汇编命令; R,显示与修改寄存器内容; E,修改内存单元内容; A,汇编命令; T、P,单步执行指令; G,连续执行指令; N,指定装入文件名或写入文件名; L,装入N指定的文件; W,将指定内容写入N指定的文件; Q,退出DEBUG程序,返回操作系统状态。,5.3 ROM BIOS中断调用和DOS系统功能调用,5.3.1 ROM BIOS中断调用,BIOS(Basic Input

14、Output System) 基本输入输出系统,是一组固化到计算机内主板ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序, 提供最低级、最直接的硬件控制,是硬件与软件之间的接口。,BIOS的功能: 系统自检及初始化 对硬件设备进行自检;对外部设备初始化;设置中断向量;引导操作系统等; 程序服务处理 为操作系统和应用程序提供与I/O有关的系统服务。BIOS直接与I/O设备打交道,通过端口与I/O设备传送数据,使应用程序脱离具体的硬件操作。 硬件中断处理 提供硬件中断服务程序,BIOS的服务功能是通过调用中断服务程序来实现的,中断:CPU执

15、行程序的过程中,由于出现了某个事件,CPU暂停当前程序,转而去执行其他程序,处理完后,返回被暂停的程序继续执行,这个过程称为中断,引起中断的事件称为中断源。处理该事件的程序称中断服务程序。 中断号:8086系统允许256种中断,每种中断对应0255之间的一个数,称为中断号。 每种中断都对应于一种中断服务,在实模式下,将中断服务程序的入口地址称为中断向量,存放256个中断向量的内存区域称为中断向量表,BIOS中断调用: BIOS由许多功能模块组成,每个功能模块的入口地址都在中断向量表中。通过软件中断指令“INT n”可以直接调用这些模块。CPU响应中断后,把控制权交给指定的BIOS功能模块,由它

16、提供相应的服务。 基本方法: 将所要调用功能的功能号送入AH寄存器; 根据所要调用功能的规定设置入口参数; 执行“INT 中断号”指令,进入相应的服务子程序; 中断服务子程序执行完毕后,可按规定取得出口参数。,1. INT 10H 显示输出 INT 10H包含了与显示器有关的功能,可以用来设置显示方式、光标大小和位置、显示字符等。 AH=0AH,显示字符 入口参数;AL=预显示字符的ASCII码 功能:在当前光标位置显示AL中的字符,光标位置不变 AH=0EH,显示字符 功能:类似0AH功能,但显示字符后光标随之移动,并可解释回车、换行和退格等控制符,2. INT 16H 键盘输入 AH=0,

17、从键盘读一键 出口参数:AL=ASCII码,AH=扫描码 功能:从键盘读入一个键返回,按键不显示在屏幕上。对于无相应ASCII码的键,如功能键等,AL返回0 AH=1,判断是否有键可读 出口参数:若ZF=0,则有键可读,AL=ASCII码,AH=扫描码;否则,无键可读; AH=2,返回变换键的当前状态 出口参数:AL=变换键状态 变换键指Ctrl,Alt,Num lock等;,例:读键盘输入,显示其中的ASCII字符,按回车键退出。 CODE SEGMENT START: READNEXT: MOV AH,0 INT 16H CMP AL,ODH JE EXIT CMP AL,0 JZ REA

18、DNEXT EXIT:MOV AH,4CH MOV AH,0EH INT 21H INT 10H CODE ENDS JMP READNEXT END START,5.3.2 DOS功能调用,前面一些程序的运行结果,或是保留在寄存器中,或是保留在存储器中,不能方便直观的看到。要了解运算的结果,应在显示器上输出,方便的方法是调用操作系统中的I/O子程序,操作系统的核心是许多有关I/O驱动,磁盘读写以及文件管理等子程序。这些子程序都编了号,调用时把子程序号(或称系统功能调用号)送到INT 21H。 通常按照如下4个步骤进行: 在AH寄存器中设置系统功能调用号 在指定寄存器中设置入口参数 执行指令I

19、NT 21H 实现中断服务程序的功能调用 根据出口参数分析功能调用执行情况,1、 键盘输入字符 调用格式: MOV AH, 01H INT 21H 功能:等待从键盘输入一个字符并将输入字符的ASCII码送入寄存器AL中,同时在显示器上显示该字符。 入口参数: 无 出口参数: AL=输入的ASCII码字符 2、 控制台输入 调用格式: MOV AH, 08H INT 21H 功能:与1号相似,但只从键盘上输入而不显示字符。 入口参数: 无 出口参数: AL=输入的ASCII码字符,DOS功能调用,3. 向显示器输出一个字符(2号功能调用) 功能号:AH02H 入口参数:DL字符的ASCII码 功

20、能:在显示器当前光标位置显示给定的字符,光标右移一个字符位置。如按Ctrl-Break或Ctrl-C则退出 例:在当前显示器光标位置显示一个问号 mov ah,02h;设置功能号:ah02h mov dl,?;提供入口参数:dl? int 21h ;DOS功能调用:显示,DOS功能调用,4. 显示字符串(9号功能调用) 功能号:AH09H 入口参数: DS:DX欲显示字符串在主存中的首地址 字符串应以$(24H)结束 功能:在显示器输出指定的字符串 string db Hello,Everybody !,0dh,0ah,$ mov ah,09h mov dx,offset string int

21、 21h,DOS功能调用,5. 从键盘输入一个字符串(10号功能调用) 功能号:AH0AH 入口参数:DS:DX缓冲区首地址 执行该功能调用时,用户按键,最后用回车确认 缓冲区的定义: 第1字节事先填入最多欲接收的字符个数(包括回车字符,可以是1255) 第2字节将存放实际输入的字符个数(不包括回车符) 第3字节开始存放将输入的字符串 实际输入的字符数多于定义数时,多出的字符丢掉,且响铃,DOS功能调用,例: Buffer db 81 ;定义缓冲区 ;第1个字节填入可能输入的最大字符数 db 0 ;存放实际输入的字符数 db 81 dup(0) ;存放输入的字符串 . mov dx,seg b

22、uffer ;伪指令seg取得buffer的段地址 mov ds,dx;设置数据段DS mov dx,offset buffer mov ah,0ah int 21h,4. 文件管理系统调用: AH(功能号)功能 入口参数 出口参数 3C 建立文件 DS:DX=ASCII串地址 成功 AX= 文件代号 CX=文件属性 失败 AX=错误码 3D 打开文件 DS:DX=ASCII串地址 成功 AX= 文件代号 AL=0读,=1写,=2读写 失败 AX=错误码 3E 关闭文件 BX=文件代号 失败 AX=错误码 3F 读文件或设备 DS:DX=数据缓冲区地址 成功AX=实际读入字数 BX=文件代号

23、AX=0已到文件尾 CX=读取字节数 读错误:AX=错误码 40 写文件或设备 DS:DX=数据缓冲区地址 成功AX=实际写入字数 BX=文件代号 CX=写入字节数 写错误:AX=错误码 41 删除文件 DS:DX=ASCII串地址 成功 AX=00 错误AX=错误码,DOS功能调用,例:写数据文件,步骤:输入文件名,建立文件,写文件,关闭文件。 Datasegment;数据段 mesgndb16 dup(?) ;文件名字符区 dataregdb2048dup(?) ;数据区 Dataends Codesegment ;代码段 leasi, mesgn ;文件名字符区的偏移地址 Rep1:mo

24、vah,1;键入文件名 int21h cmpal ,0dh ;判断是否是回车键 jenext1 ;是,转next1;否继续输入,DOS功能调用,DOS功能调用,movsi,al;文件名字符送入 incsi jmprep1 Next1:leadx,mesgn;文件名区的偏移地址 movcx,0 ;文件属性为0 movah,3ch;建立文件 int21h movbx,ax;文件代号送bx leadx,datareg movcx,2048;写入的字节数 movah,40h;写文件 int21h movah,3eh;关闭文件 int21h Csegends end,例:读数据文件 Msegsegmen

25、t ; 数据段 mesgn db 16dup(?) errmesg db “File not found $” datareg db 2048dup(?) Csegsegment ;代码段 leasi, mesgn beg: movah, 1 ;键入文件名 int21h cmpal, 0dh jenext1 movsi, al incsi jmp beg Next1:leadx, mesgn moval, 0 movah, 3dh ;打开文件,int21h cmpal, 2;2为文件未找到 jneready;不等于2,转 leadx, errmesg movah, 9 ;显示字符串 int21h crlf;回车换行宏指令 jmpbeg Ready:leadx, datareg movcx, 2048 mov bx, ax;ax中为文件代号 movah, 3fh ;读文件 int21h movah, 3eh ;关闭文件 int21h ,DOS功能调用,DOS功能调用,4. 程序结束,返回DOS MOV AH,4CH INT 21H,

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!