第4章汇编语言程序设计汇总_第1页
第4章汇编语言程序设计汇总_第2页
第4章汇编语言程序设计汇总_第3页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第4章汇编语言程序设计主要内容汇编语言源程序的结构汇编语言语句格式伪指令功能调用汇编语言程序设计§4.1汇编语言源程序了解:汇编语言源程序的结构汇编语言语句类型及格式一、汇编语言源程序结构1. 汇编语言源程序与汇编程序汇编语言源程序用助记符编写汇编程序源程序的编译程序汇编语言源程序汇编程序机器语言目标程序2. 汇编语言程序设计与执行过程输入汇编语言源程序(EDIT)汇编(MASM) 链接(LINK) 调试(TD)源文件ASM目标文件.OBJ 可执行文件.EXE 最终程序二、汇编语言语句类型及格式1. 汇编语言语句类型指令性语句CPU执行的语句,能够生成目标代码指示性语句CPU不执行,

2、而由汇编程序执行的语句,不生成目标代码2. 汇编语言语句格式指令性语句:标号:前缀助记符操作数,操作数;注释指令的符号地址标号后要有冒号操作码注释前加分号指示性语句格式名字伪指令助记符 操作数,操作数,;注释变量的符号地址指示性语句中至其后不加冒号有一个操作数3. 标号、名字标号后有冒号,在指令性语句前;名字后不加冒号,在指示性语句前。英文字母、数字及专用字符组成,最人长度不能超过31个,且不能由数字打头,不能用 保留字(如寄存器名,指令助记符,伪指令)。4. 操作数寄存器存储器单元常量变量或标号表达式常量数字常量字符串常量用单引号引起的字符或字符串例:'A'MOVAL,

3、9; A'例 J AECD'汇编时被译成对应的ASCII码 41H, 42H, 43H, 44H用单引号引起的字符或字符串变量代表内存中的数据区,程序中视为存储器操作数变量的属性: 段值 偏移量变量所在段的段地址 变量单元地址与段首地址之 间的位移量。类型字节型、字型和双字型表达式算术运算逻辑运算*关系运算取值运算和属性运算其它运算算术运算和逻辑运算符 算术运算符*, /, MOD逻辑运算符AND,OR, NOT, XOR例:MOVAL, 8AND4MOVAL, 8+4-1取值运算符用于分析存储器操作数的属性 获取变量的属性值OFFSET取得其后变量或标号的偏移地址SEG取得其

4、后变量或标号的段地址TYPELENGTHSIZE取变量的类型取所定义存储区的长度 取所定义存储区的字节数取值运算符例MOV AX, SEG DATAMOV DS, AXMOV EX, OFFSET DATALEA BX, DATA取值运算符例若BUFFER存储区用如下伪指令定义:BUFFER DW 200 DUP(O)则:TYPE BUFFER等于 2LENGTH BUFFER等于 200SIZE BUFFER 等于 400属性运算符用于指定其后存储器操作数的类型运算符:PTR例:MOV BYTR PTRBX. 12H其它运算符方括号:方括号中内容为操作数的偏移地址段重设符段寄存器名:用于修改

5、默认的段基地址§4.2伪指令掌握:伪指令的格式及实现的操作伪指令的应用伪指令由汇编程序执行的“指令系统” 作用:定义变量;分配存储区 定义逻辑段; 指示程序开始和结束: 定义过程等。常用伪指令数据定义伪指令符号定义伪指令 段定义伪指令结束伪指令过程定义伪指令宏命令伪指令一、数据定义伪指令用于定义数据区中变屋的类型及人小格式:变量名 伪指令助记符 操作数,;注释符号地址定义变量类型定义变量值及区域大小1. 数据定义伪指令助记符DB定义的变量为字节型DW定义的变量为字类型(双字节)DD定义的变量为双字型(4字节)DQ定义的变量为4字型(8字节)DT定义的变量为10字节型数据定义伪指令例D

6、ATA1 DBDATA2 DWDATA3 DD11H, 22H, 33H, 44H11H, 22H, 3344H11H*2, 22H, 33445566HDATA1 11223344DATA2 110022DATA3 2200022000044330XX66554433数据定义伪指令的几点说明伪指令的性质决定所定义变量的类型;定义字符串必须用DB伪指令 例:DATA1 DB 4ABCD 66H41H,A'42H43HC,44H,D'66H数据定义伪指令例变量在内存中的分布2. 重复操作符作用:为一个数据区的各单元设置相同的初值目的:常用于声明一个数据区格式:变量名 伪指令助记符

7、n DUP (初值,)例:BW 20 DUP (0)Ml DB 10 DUP (0)3. “? ”的作用表示随机值,用于预留存储空间MEM1 DB 34H,'?随机数占1个字节单元DW 20 DUP (?)预留40个字节单元,每单元为随机值数据定义伪指令例MlDB4How are you?"M2DW3 DUP(llH),3344HDB4 DUP (?)M3DB3 DUP (22H,11H, ?)变量在内存中的分区数据定义伪指令例MlM2 11HM3 22HOOH11H11HXXOOH22H11H11HOOHXX44H22H33H11HXXXXXXXXXX二、符号定义伪指令格式

8、:符号名 EQU 表达式操作:用符号名取代后边的表达式,不可重新定义 例:CONSTANT EQU 100VAR EQU 30H+99HEQU说明的表达式不占用内存空间三、段定义伪指令说明逻辑段的起始和结束;说明不同程序模块中同类逻辑段之间的联系形 态段定义伪指令格式段名SEGMENT 定位类型组合类型'类别'段名 ENDS说明逻辑段的起点说明不同模块中同名 段的组和连接方式定位类型PARA: 段的起点从节边界开始 (16个字节为1节)BYTE: 段的起点从存储器任何地址开始WORD:段的起点从偶地址开始PAGE:段的起点从页边界开始组合类型与其它模块中的同名段在满足定位类型的

9、前提 下具有的组合方式:NONE:PUBLIC:COMMON:STACK:AT表达式:不组合依次连接(顺序由LINK程序确定)覆盖连接堆栈段的依次连接段定义在表达式值为段基的节边界MEMORY:相应段在同名段的最高地址处o类别不同模块连接时将相同类别的段放在连续的内存区域中段定义伪指令例变量在逻辑段中的位置就代表了它的偏移地址DATA SEGMENTMEM1 DB 11H, 22HMEM2 DB <Hello!tMEM3 DW 2DUP (?)DATA ENDS表示变量所在逻辑段的段地址表示变量的类型四、设定段寄存器伪指令说明所定义逻辑段的性质 格式:ASSUME段寄存器名:段名,段寄存

10、器名:段名,五、结束伪指令表示源程序结束格式:END 标号汇编语言源程序结构数据段名SEGMENT堆栈段名SEGMENT数据段名 ENDS堆栈段名 ENDS附加段名SEGMENT代码段名SEGMENT附加段名 ENDS 代码段名ENDSEND一个完整源程序结构例DSEG SEGMENTDATA1 DB 1, 2,3 DUP (?)DATA2 DW 1234HDSEG ENDSESEG SEGMENTDB 20 DUP (?)ESEG ENDSSSEG SEGMENT STACK ' STACK'DB 200 DUP (?)SSEG ENDS一个完整源程序结构例CSEG SEGM

11、ENTASSUME CS: CSEG, DS: DSEG,ES: ESEG, SS: SSEGSTART: MOVAX,DSEGMOVDS,AX段寄存器初始化MOVAX,ESEG一一将段地址送MOVES,AX相应的段寄存MOVAX,SSEGMOViiSS,AX源程序代码CSEG ENDSEND START六、过程定义伪指令用于定义一个过程体格式:过程入口的符号地址过程名 PROC NEAR/FARIRET过程名 ENDP过程定义及调用例定义延时子程序调用延时子程序:DELAYPROCPUSH BXPUSH CXMOVBL, 2NEXT:MOVCX, 4167W10M:LOOPWIOMDECBL

12、JNZNEXTPOPCXPOPBXRETDELAYENDPCALL DELAY七、宏命令伪指令宏源程序中由汇编程序识别的具有独立功能的一段程序代码格式:宏命令名 MACRO 形式参数ENDM八、其它伪指令段内程序代码或变量的起始偏移地址ORG格式:ORG表达式例:计算值为非负常数ORG 2000H其它伪指令NAME为目标程序设定一个名字 格式:NAME模块名TITLE为程序清单指定打印标题 格式:TITLE标题名§ 4.3功能调用DOS功能调用BIOS功能调用DOS功能调用包含多个子功能的功能包;用软中断指令调用,中断类型码固定为21H: 各子功能采用功能号来区分。DOS功能调用设备

13、管理目录管理文件管理其它DOS功能调用调用格式:MOV AH,功能号置相应参数INT 21H一、单字符输入调用方法:MOV AH, 01INT 21H输入的字符在AL中单字符输入例交互式应 答程序注意问题:调用格式字符输入缓冲区的定义1 调用格式AHDS: DXINT 21H功能号OAH字符串在内存中的存放地址GET.KEY:MOVAH JINT21HCMPAL/Y,JZYESCMPAL/N,JZNOJMPGET.KEYYES:i iiNO:i ii2.定义字符缓冲区用户自定义缓冲区格式:N1N2存放字符个数:W255ODH存放键入的字符整个缓冲区实际键入字符数最人可键入字符数输入字符串程序段DAT1 DB 20, ? , 20 DUP (?):在数据段中定义LEA DX, DAT1MOV AH, OAHINT 21H输入缓冲区定义后的输入缓冲区初始状态:14H20个字节三、单字符显示输岀功能号O2HDLINT 21H待输出字符单字符显示输出例MOV AH, 02MOV DL, 41HINT 21H执行结呆: 屏幕显示A9四、字符串输出显Z5AHDS: DXINT 21H功能号O9H待输出字符串的偏移地址字符串输出显示被显示的字符串必须以乌'结束,且所显示的内容不应出现非可见的ASCH码字符串输出显示例DATASEGMENTMES

温馨提示

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

评论

0/150

提交评论