资源预览内容
第1页 / 共78页
第2页 / 共78页
第3页 / 共78页
第4页 / 共78页
第5页 / 共78页
第6页 / 共78页
第7页 / 共78页
第8页 / 共78页
第9页 / 共78页
第10页 / 共78页
亲,该文档总共78页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
12教学目的及要求1)理解汇编语言源程序的结构2)深入理解伪指令系统3)深入理解DOS功能调用4)掌握汇编语言源程序的设计方法34.1 汇编语言源程序理解:n汇编语言源程序的结构n汇编语言语句类型及格式4一、汇编语言源程序结构51. 汇编语言源程序与汇编程序n汇编语言源程序n汇编程序用助记符编写汇编程序汇编语言源程序机器语言 目标程序源程序的编译程序62. 汇编语言程序设计与执行过程n输入汇编语言源程序(EDIT)n汇编(MASM)n链接(LINK)n调试(TD)源文件 . ASM目标文件 .OBJ可执行文件.EXE最终程序7汇编语言源程序结构数据段名 SEGMENT数据段名 ENDS附加段名 SEGMENT附加段名 ENDS堆栈段名 SEGMENT 堆栈段名 ENDS代码段名 SEGMENT 代码段名 ENDSEND 8一个完整源程序结构例DSEG SEGMENTDATA1 DB 1,2, 3 DUP(?)DATA2 DW 1234H DSEG ENDS ESEG SEGMENTDB 20 DUP(?) ESEG ENDS SSEG SEGMENT STACK STACKDB 200 DUP(?) SSEG ENDS表示该逻辑 段的段地址此处还不能 确定逻辑段 的性质9一个完整源程序结构例CSEG SEGMENTASSUME CS:CSEG,DS:DSEG,ES:ESEG,SS:SSEGSTART:MOV AX,DSEGMOV DS,AXMOV AX,ESEGMOV ES,AXMOV AX,SSEGMOV SS,AXCSEG ENDSEND START源程序代码段寄存器初始化 将段地址送 相应的段寄存器说明各 逻辑段 的性质源程序的结构特点n(1)汇编语言程序通常由若干段组成,段由伪指令SEGMENT与ENDS定义,各 段顺序任意,段的数目按需要确定,原则上不受限制。n(2)段由若干语句组成,语句以指令为主体而构成。一条语句写在一行上, 书写时语句的各部分应尽量对齐n(3)汇编语言程序中至少要有一个启动标号,作为程序开始执行时目标代码 的入口地址。启动标号常用START、BEGIN、MAIN等命名。n(4)同时需要配合ASSUME伪指令指明逻辑段是代码段、堆栈段、数据段还是 附加段n为增加程序的可读性,可在汇编语言语句“;”后加上注释。n(5)每个源程序在代码中都必须有返回DOS操作系统的指令语名.汇编语言程序设计中,有多种返回DOS的方法,但一般利用DOS功能调用的4CH子 功能实现,它需要的入口参数是AL返回数码(通常用0表示程序没有错误) mov ax,4c00hint 21h11二、汇编语言语句类型及格式121. 汇编语言语句类型指令性语句指示性语句CPU执行的语句, 能够生成目标代码CPU不执行,而由汇 编程序执行的语句, 不生成目标代码132. 汇编语言语句格式指令性语句:标号: 前缀 助记符 操作数,操作数 ;注释指令的符号地址标号后要有冒号操作码 注释前加分号14指示性语句名字 伪指令助记符 操作数 ,操作数, ;注释变量的符号地址其后不加冒号指示性语句中至 少有一个操作数153. 标号、名字n标号后有冒号,在指令性语句前;名字后不加冒号 ,在指示性语句前。n英文字母、数字及专用字符组成,最大长度不能超过 31个,且不能由数字打头,不能用保留字(如寄存器名 ,指令助记符,伪指令)。 164. 操作数寄存器存储器单元常量变量或标号表达式17常 量n数字常量n字符串常量n例:A nMOV AL,An例:ABCD汇编时被译成对应的ASCII 码4141H H,4242H H,43H43H,44H44H用单引号引起的字符或字符串18变 量n代表内存中的数据区,程序中视为存储器 操作数n变量的属性:变量所在段的段地址变量单元地址与段首地址之间的位移量。字节型、字型和双字型段 值偏移量类 型19表达式算术运算逻辑运算*关系运算取值运算和属性运算其它运算20算术运算和逻辑运算符n算术运算符n+,-,*,/,MODn逻辑运算符nAND,OR,NOT,XORn例:nMOV AL,8 AND 4nMOV AL,8+4-121取值运算符取得其变量或标号的偏移地址取得其变量或标号的段地址TYPE 取变量的类型变量的类型 LENGTH 取所定义存储区的长度 SIZE 取所定义存储区的字节数n用于分析存储器操作数的属性n获取变量的属性值OFFSETSEG22取值运算符例MOV AX,SEG DATAMOV DS,AXMOV BX,OFFSET DATALEA BX,DATA等价于23取值运算符例n若BUFFER存储区用如下伪指令定义: BUFFER DW 200 DUP(0)则:TYPE BUFFER 等于2LENGTH BUFFER等于200SIZE BUFFER等于40024属性运算符n 用于指定其后存储器操作数的类型n 运算符:PTRn 例:MOV BYTE PTRBX,12H25其它运算符n方括号: n段重设符段寄存器名: 方括号中内容为操作数的偏移地址用于修改默认的段基地址264.2 伪指令掌握:n伪指令的格式及实现的操作n伪指令的应用27伪指令n由汇编程序执行的“指令系统”n作用:n定义变量;n分配存储区n定义逻辑段;n指示程序开始和结束;n定义过程等。28常用伪指令数据定义伪指令符号定义伪指令段定义伪指令结束伪指令过程定义伪指令宏命令伪指令29一、数据定义伪指令n用于定义数据区中变量的类型及大小n格式:变量名 伪指令助记符 操作数, ;注释符号地址定义变量类型定义变量值 及区域大小301. 数据定义伪指令助记符nDB 定义的变量为字节型nDW 定义的变量为字类型(双字节)nDD 定义的变量为双字型(4字节)nDQ 定义的变量为4字型(8字节)nDT 定义的变量为10字节型31数据定义伪指令例nDATA1 DB 11H,22H,33H,44HnDATA2 DW 11H,22H,3344HnDATA3 DD 22H,22H, 33445566H以上变量在内存 中的存放形式32数据定义伪指令例_变量在内存中的分布DATA111 22 33 44DATA2224411 000033DATA3220 022 000066 55 44 3333数据定义伪指令的几点说明n伪指令的性质决定所定义变量的类型;n定义字符串必须用DB伪指令n例:DATA1 DB ABCD,66HA B C D41H 42H 43H 44H 66H342. 重复操作符n作用:n为一个数据区的各单元设置相同的初值n目的:n常用于声明一个数据区n格式:变量名 伪指令助记符 n DUP(初值,)n例:M1 DW 20 DUP(0) M2 DB 10 DUP(5)20个初值为0的字单元10个初值为5的字节单元353. “?”的作用n表示随机值,用于预留存储空间nMEM1 DB 34H,A,?DW 20 DUP(?)预留40个字节单元,每单元初值为随机值随机数 占1个字节单元36数据定义伪指令例nM1 DB How are you?nM2 DW 3 DUP(11H),3344Hn DB 4 DUP(?)nM3 DB 3 DUP(22H,11H,?)变量在内存中的分区37数据定义伪指令例M1H o w aM211H11H 00H 44H 33Hre y o u ?11H 00H00H随机数M311H22H 11H22H 11H22HXXXXXXXX XX XX XX38二、符号定义伪指令n格式:n符号名 EQU 表达式n操作:n用符号名取代后边的表达式,不可重新定义n例:nCONSTANTEQU100nVAR EQU 30H+99HEQU说明的表达式不占用内存空间39三、段定义伪指令n说明逻辑段的起始和结束;n说明不同程序模块中同类逻辑段之间的联系形态40段定义伪指令格式段名 SEGMENT 定位类型 组合类型 类别段名 ENDS 说明逻辑段 的起点说明不同模块中同名段的 组和连接方式41定位类型nPARA: 段的起点从节边界开始(16个字节为1节)nBYTE: 段的起点从存储器任何地址开始nWORD:段的起点从偶地址开始nPAGE: 段的起点从页边界开始(256个字节为1页)42组合类型n与其它模块中的同名段在满足定位类型的前提下具有的组合方式:nNONE: 不组合nPUBLIC: 依次连接(顺序由LINK程序确定)nCOMMON: 覆盖连接nSTACK: 堆栈段的依次连接nAT 表达式:段定义在表达式值为段基的节边界nMEMORY: 相应段在同名段的最高地址处。43类别n不同模块连接时将相同类别的段放在连续的内存区域中44段定义伪指令例DATA SEGMENT MEM1 DB 11H,22HMEM2 DB Hello!MEM3 DW 2 DUP(?)DATA ENDS变量在逻辑段 中的位置就代 表了它的偏移 地址表示变量所在 逻辑段的段地 址表示变量的类 型45四、设定段寄存器伪指令n说明所定义逻辑段的性质n格式:ASSUME 段寄存器名:段名,段寄存器名:段名,46五、结束伪指令n表示源程序结束n格式:END 标号实际编程中必有,该 处标号须与程序第1条 指令前的标号一致。47六、过程定义伪指令n用于定义一个过程体n格式:过程名 PROC NEAR / FAR RET过程名 ENDPP157例过程的入 口地址过程定义及调用例n定义延时子程序 nDELAY PROCn PUSH BXn PUSH CXn MOV BL,2nNEXT: MOV CX,4167nW10M: LOOP W10Mn DEC BLn JNZ NEXTn POP CXn POP BXn RETnDELAY ENDP 48n调用延时子程序: nCALL DELAY 49七、宏命令伪指令n 源程序中由汇编程序识别的具有独立功能的一段程序代码n格式:宏命令名 MACRO ENDM宏体宏八、其它伪指令段内程序代码或变量的起始偏移地址n格式:nORG 表达式n例:nDATA SEGMENTn ORG 200n M1 DB 12H,4 DUP(0)n M2 DW 1234HnDATA ENDS计算值为 非负常数ORGM100 34 1212 00M2200205514.3 功能调用nBIOSn驻留在ROM中的基本输入/输出系统n加电自检,装入引导,主要I/O设备处理程序及接口控制nBIOS功能调用使程序员不必了解硬件操作的细节而 实现相应的操作。nDOSn磁盘操作系统n相比BIOS,对硬件的依赖性小nDOS功能与BIOS功能均通过中断方式调用。DOS中断与BIOS中断nDOS中断包括:n设备管理,目录目录管理管理,文件管理文件管理,其它其它n在某些情况下,同样的
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号