




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章 汇编语言与汇编程序 宏汇编语言及编程 汇编语言:一种面向机器的程序设计语言,是一种用符号表示的低 级程序设计语言(机器语言的符号化描述)。 宏汇编语言:增加伪、宏指令语句构成汇编语言程序设计语言。 汇编: 汇编语言编写的程序不能由机器直接执行,必须经汇编程序 翻译成机器语言程序。 检查源程序的语法错误,并给出出错信息。 产生目标文件(.OBJ);列表文件;(.LST)和交叉索引文件 (.CRF文件)。 展开宏指令。 汇编过程 列表文件(.LST文件); 同时列出汇编语言源程序和机器语言目标程序的文件。 交叉索引文件(.CRF文件) 列出程序中使用的符号、变量和标号以及引用情况。 汇编过程 汇编与连接 EXAM.ASM ASCII 源程序 EXAM.OBJ 可选 EXAM.LST EXAM.CRF 机器码目 标程序 MASM.EXE 汇编 汇编程序 EXAM.EXE EXAM.COM LINK.EXE 连接 连接程序 可执行程序 宏汇编语句的基本格式 指令性语句由指令构成 标号: 操作码操作数;注释 如:START:MOVAX ,DATA 指示性语句由命令(伪指令)构成 名字/变量命令参数;注释 如:DATA SEGMENT AT 2000H (代码段不能如此指定段地址) 常量、变量和标号 常量 汇编源程序翻译成机器码目标程序期间已经有确定数值的量。分 为数字常量和符号常量两类。 2.1符号指令中的表达式 数字常量:直接用数字进行表示的常量。 二进制:10000100B、11110001020100B 十进制:12356D 十六进制:12ABH、0F56AH (字母打头必须前面补0,否则将出现汇编语法错误。) 如: MOVAX,100D MOVBL,0FAH MOVCL,1010 1000B 2.1.1常量和数值表达式 常量 符号常量:用标识符(常量名)表示的常量。 命名规则: 1)ASCII码字符 2)由AZ、az、09 、?、$及下划线构成。 3)?不能单独作为标识符。 4)不能为保留字及运算符。 合法标识符: STA_124$ MOV_? 103 非法标识符: STA+124$ MOV ? 2.1符号指令中的表达式 符号常量定义 常量名EQU(=)数值或字母 例如:AAEQU30 BB=1000H CCEQU10001010B QQ= ABC MOV AX,AA MOV AL,AA MOV BX,BB 改善程序的可读性,程序的修改调试方便。 “=”可重复定义 EQU不可重复定义 常量不占有内存单元 2.1符号指令中的表达式 2. 变量和地址表达式 变量是存储器中的数据或数据区的符号表示。 变量名即是数据的地址或数据区的首地址。 地址表达式是由变量、常量、寄存器(SI、DI、 BX、BP)的内容和运算符组成的有意义的式子 。 变量或地址表达式可给出指令中的存储器的地址。 由于存储器是分段使用的,因此变量或地址表达式 都具有3重属性:段地址、偏移地址和类型。 变量的段地址是指变量所在段的段首地址 除以10H之商; 变量的偏移地址是指变量所在段的段首址 到该变量的字节距离; 变量的段地址和偏移地址分别用SEG或 OFFSET两个算符来指定。 例如:变量W的段地址和偏移地址分别表示为 SEG W和OFFSET W。 变量的定义 变量名 数据定义伪指令 表达式, 变量名:数据的地址或数据区的首地址 数据定义伪指令:DB(定义字节)、DW(定义字)、DD(定义 双字)、DQ(定义4字)、DT(定义10字节) 表达式:数值表达式、ASCII码字符串、地址表达式、?及 n DUP(表达式) 例如,在数据段DATAl中定 义的变量如下: Wl DW B3; B1 DB AB$; W2 DW -5,1994H; B2 DB 4 DUP(?) ; D DD EB ; B3 DB 2 DUP(1) DB l DUP(10,E) DB 13,1,3 在附加数据段DATA2中定义 的变量如下: EB DB 8 DUP(?) EW DW AB,CD 3. 标号 标号是指令地址的符号表示,也可以是过程名。 标号的定义方式有两种: (1)用“:”定义,直接写在指令助记符前。 如 CYCLE:MOV AL,S1 (2)用PROC和ENDP伪指令定义过程。 标号代表指令的地址,因而它也有3个属性:段地址、 偏移地址和类型。 标号的段地址:定义该标号所在段的段地址。 标号的偏移地址:标号所在段的段首址到该标号定 义指令的字节距离。 标号的类型有NEAR和FAR两种。 4. 标量和标号类型的变更 格式: 类型 PTR 地址表达式 PTR算符用来明确指出某个变量、标号或地址表达式 的类型属性,或者使它们临时兼有与原定义所不同的 类型属性,但仍保持它们原来的段地址和偏移地址属 性不变。 如:BYTE PTR W1 指示性语句(伪指令) 4.1汇编语言的基本语法 段定义伪指令 格式:段名SEGMENT定位方式组合方式类别名 段名ENDS 定义了以段名命名的存贮段。汇编时给该段名分配一个段基值。 例如: DATA SEGMENT DATAENDS CODESEGMENT CODEENDS 定义了二个段,段名分别为DATA、CODE。 指示性语句(伪指令) 4.1汇编语言的基本语法 段定义伪指令的参数 格式:段名 SEGMENT 定位类型组合方式类别名 (X)定位方式:段的起始地址边界 PAGE指定起始地址的低8位是0,称页边界 XXXX XXXX XXXX 0000 0000B PARA指定起始地址的低4位是0,称段边界 XXXX XXXX XXXX XXXX 0000B WORD指定起始地址的低2位是0,称字边界 XXXX XXXX XXXX XXXX XX00B BYTE指定起始地址为任意值。 XXXX XXXX XXXX XXXX XXXXB PARA为缺省方式 指示性语句(伪指令) 汇编语言的基本语法 段定义伪指令的参数 格式:段名 SEGMENT 定位类型组合方式类别名 (X)组合方式:连接程序时设定本段与其它段的连接方式。 (模块化程序设计) STACK:同名段构成一个连续的堆栈段,自动初始化SP。 空缺(NONE)不与任何段相连接。各段有独立段基址。 (缺省方式) 指示性语句(伪指令) 4.1汇编语言的基本语法 段定义伪指令的参数 格式:段名 SEGMENT 定位类型组合方式类别名 (X)类别名:用单引号括起来的字符串。类别名相同的 段按先后顺序存放在一连续的存贮区中,形成统一的物理段 。(模块化程序设计) 指示性语句(伪指令) 4.1汇编语言的基本语法 段寄存器说明伪指令 格式:ASSUME 段寄存器:段名1,段寄存器:段名2 在代码段,告诉汇编程序CS、DS、ES、SS应具有的符号段基址, 但是段寄存器(CS除外)还必须用传送指令赋值。一般紧跟在 SEGMENT语句之后 例如:CODESEGMENT PARA ASSUME CS:CODE,DS:DATA MOVAX,DATA MOVDS,AX;传送指令赋值 CODEENDS DATASEGMENT DATAENDS 指示性语句(伪指令) 4.1汇编语言的基本语法 过程(子程序)定义伪指令 格式:过程名 PROC NEARFAR 过程名 ENDP 过程名:过程的起始地址,如子程序定义。 类型:NEAR近过程(主、子同段) FAR 远过程(主、子在两个不同的代码段) 过程应由RET指令返回与远近无关。 宏汇编语言的基本格式 4.1汇编语言的基本语法 PUSH DS SUBAX,AX PUSHAX MOVAX,DATA MOVDS,AX DATA SEGMENT DATA ENDS STACK SEGMENT STACK STACK STACK ENDS CODE SEGMENT BEGIN PROC FAR ASSUME CS:CODE,DS: DATA,SS:STACK RET BEGIN ENDP CODE ENDS ENDBEGIN 由几个段构成,一般有数据 段、代码段、堆栈段或附加数 据段组成,至少要有一代码段 。 代码段第一条指令必须有汇 编起始标号START。 2.5.1 系统功能调用 系统功能调用是IBM PC微机系统为汇编用户提 供的一个程序接口。系统功能调用共有4类。我们仅 介绍设备管理系统功能调用中基本的I/O管理功能。 使用系统功能调用的一般过程为:把调用号放入 AH中,设置入口参数,然后执行INT 21H指令,最后 分析处理出口参数。 键盘和显示器的DOS功能调用如表2-3所列。 本节仅介绍常用的1、2、9、10等4个系统功能调 用。 调用方法 设置入口参数 在AH设置功能号m 执行中断指令INT N 分析、应用出口参数 1. 1号功能调用 MOV AH,1 INT 21H 执行该调用时将等待键入,一旦有键按下就 将该按键字符的ASCII码读入AL,并同时显示该 字符。 2 . 2号功能调用 MOV DL,待显示字符的ASCII码 MOV AH,2 INT 21H 本调用执行后,显示器显示待显示的字符。 3. 9号功能调用 MOV DX,待显示字符串的首偏移地址 MOV AH,9 INT 21H 本调用执行后,显示器显示待显示的字符串。执 行前要在DS数据段定义一以$结尾的字符串。 当需要输出数据区中某一字符串时,若该字符串 的尾部无 $,一定要在其尾部置入一个 $;若该字符 串中间就有 $,则要采用2号功能调用逐个输出该字 符串中的字符。 4. 10号功能调用 MOV DX,数据区的首偏移地址 MOV AH,10 INT 21H 当需要输入字符串时,应在DS数据段中事先定 义一个变量数据区IBUF,其定义格式如下: IBUF DB 数据区大小,0,数据区大小 DUP(0) 其中:数据区大小是一个无符号数(2255)。 执行该调用时将等待键入1254个字符,键入的 字符数可以少不能多,最后以回车结束本调用。 DUP(0)前的“数据区大小”应与前面一个“数据 区大小”一致,因为数据区的大小是由前面的即第1 个单元规定的,从第3个单元开始是预留给10号功能 调用装载键入字符的,留多了不能多装,是浪费;留 少了可多装,当输入的字符数超过预留的单元数时, 数据区就会自动往下延伸,冲掉紧跟其后的存储单元 中的内容,造成程序运行的混乱。第2个单元是预留 给装载10号功能调用时实际键入字符数的,实际键入 的字符数不包括回车(0DH)。 最后,要特别强调的是:2号功能调用、9号功能 调用和10号功能调用虽然未使用AL,但调用后也会破 坏AL中原来的内容。为防止AL中原来的内容被破坏 ,在调用前应先保护AL,调用后再恢复。 2.5.2 功能调用应用举例 例2 .5 编写汇编语言源程序,在显示器上显示 “wish you success!“。 只需将欲显示字符串的ASCII码存放到字节变量 数据区中(字节变量数据区一定要以 $ 结束),用9 号功能调用即可显示该字符串。程序如下: OBF DB wish you success!$ MOV DX, OFFSET OBF MOV AH, 9 INT 21H 例2 .6 将键入的4位十进制数(如5,则 键入0005)以压缩BCD数形式存入字变量 SW中。 程序如下: IBUF DB 5, 0, 5 DUP (0) MOV DX, OFFSET IBUF ;10号功能调用 MOV AH, 10 INT 21H MOV AX, WORD PTR IBUF+4 ;键入数的个位和十位送AX AND AX, 0F0FH ; ASCII码变非压缩BCD数 MOV CL, 4 SHL AL ,CL ;将十位移至AL的高4位 OR AL, AH ;将10位和个位拼合在AL中 MOV BYTE PTR SW,AL ;存BCD数字的十位和个位 MOV AX, WORD PTR IBUF+2 ;键入数的百位和千位送AX AND AX, 0F0FH ; ASCII码变非压缩BCD数 SHL AL ,CL ;将千位移至AL的高4位 OR AL, AH ;千位和百位拼合在AL中 MOV BYTE PTR SW+1,AL;存千位和百位 例2 .7 “镜子“程序。 “镜子”程序的功能是接收并回显键盘输入的一 串字符,然后在下一行再将该串字符显示出来。可见 该功能主要由10号功能调用和9号功能调用来完成。 根据10号功能调用的入口参数,在数据段定义了字节 变量IBUF。第1个单元是允许键入字符数FFH,即最 多可接收除回车外的254个任意字符和一个回车;第2 单元是预留装载实际键入字符个数的;从第3单元开 始是预留装载键入字符的。 10号功能调用结束后,只要把字符 $放入存放回 车的单元 ,即可使用9号功能调用把自IBUF+2单元 开始的字符送显示器显示。 “镜子“程序如下: OBUF DB , 0DH, 0A
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 赤峰职业技术学院《软件项目开发综合实践》2024-2025学年第一学期期末试卷
- 沈阳工程学院《全球环境和气候治理》2024-2025学年第一学期期末试卷
- 广西医科大学《社会工作综合能力初级》2024-2025学年第一学期期末试卷
- 吉首大学《露天矿绿色开采》2024-2025学年第一学期期末试卷
- 黄冈职业技术学院《数学教学技能与训练》2024-2025学年第一学期期末试卷
- 2025清海公务员试题及答案
- 河南司法警官职业学院《项目施工技术与管理实训》2024-2025学年第一学期期末试卷
- 2025青海金融面试题及答案
- 2025企业金融业务知识考试题及答案
- 2025南开金融口语面试题目及答案
- 光伏居间的合同8篇
- GB/T 45418-2025配电网通用技术导则
- 医疗风险防控培训课件
- 机械设计部绩效考核制度
- 诊疗规范培训课件
- 《KANO模型培训》课件
- 复苏室患者的交接流程
- 【人教版化学】选择性必修1 知识点默写小纸条(答案背诵版)
- DB21-T 2523-2015矿山地质环境恢复治理规程
- 新能源集控中心建设方案
- 《中国老年糖尿病诊疗指南(2024版)》解读课件
评论
0/150
提交评论