第4章-汇编语言程序设计课件.ppt
《第4章-汇编语言程序设计课件.ppt》由会员分享,可在线阅读,更多相关《第4章-汇编语言程序设计课件.ppt(78页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1第4章 汇编语言程序设计2教学目的及要求教学目的及要求 1 1)理解理解汇编语言源程序的结构汇编语言源程序的结构2 2)深入理解深入理解伪指令系统伪指令系统3 3)深入理解深入理解DOSDOS功能调用功能调用4 4)掌握掌握汇编语言源程序的设计方法汇编语言源程序的设计方法34.1 汇编语言源程序理解:理解:n汇编语言源程序的结构汇编语言源程序的结构n汇编语言语句类型及格式汇编语言语句类型及格式4一、汇编语言源程序结构62.汇编语言程序设计与执行过程n输入汇编语言源程序(输入汇编语言源程序(EDIT)n汇编(汇编(MASM)n链接(链接(LINK)n调试(调试(TD)源文件源文件.ASM目标文
2、件目标文件.OBJ可执行文件可执行文件.EXE最终程序最终程序7汇编语言源程序结构数据段名数据段名 SEGMENT 数据段名数据段名 ENDS附加段名附加段名 SEGMENT 附加段名附加段名 ENDS堆栈段名堆栈段名 SEGMENT 堆栈段名堆栈段名 ENDS代码段名代码段名 SEGMENT 代码段名代码段名 ENDS END 8一个完整源程序结构例DSEG SEGMENT DATA1 DB 1,2,3 DUP(?)(?)DATA2 DW 1234HDSEG ENDSESEG SEGMENT DB 20 DUP(?)(?)ESEG ENDSSSEG SEGMENT STACK STACK D
3、B 200 DUP(?)(?)SSEG ENDS表示该逻辑表示该逻辑段的段地址段的段地址此处还不能此处还不能确定逻辑段确定逻辑段的性质的性质源程序的结构特点n(1)汇汇编编语语言言程程序序通通常常由由若若干干段段组组成成,段由伪指令SEGMENT与ENDS定义,各段顺序任意,段的数目按需要确定,原则上不受限制。n(2)段段由由若若干干语语句句组组成成,语语句句以以指指令令为为主主体体而而构构成成。一条语句写在一行上,书写时语句的各部分应尽量对齐n(3)汇汇编编语语言言程程序序中中至至少少要要有有一一个个启启动动标标号号,作作为为程程序序开开始始执执行行时时目目标标代代码码的入口地址的入口地址。
4、启动标号常用START、BEGIN、MAIN等命名。n(4)同时需要配合ASSUME伪指令指明逻辑段是代码段、堆栈段、数据段还是附加段n为增加程序的可读性,可在汇编语言语句为增加程序的可读性,可在汇编语言语句“;”后加上注释。后加上注释。n(5)每个源程序在代码中都必须有返回DOS操作系统的指令语名.汇汇编编语语言言程程序序设设计计中中,有有多多种种返返回回DOSDOS的的方方法法,但但一一般般利利用用DOSDOS功功能能调调用用的的4CH4CH子子功功能能实实现现,它它需需要要的的入入口口参参数数是是ALAL返返回回数数码码(通通常常用用0 0表表示示程程序序没没有有错错误误)mov ax,
5、4c00hmov ax,4c00h int 21h int 21h11二、汇编语言语句类型及格式二、汇编语言语句类型及格式132.汇编语言语句格式 指令性语句:指令性语句:标号:标号:前缀前缀 助记符助记符 操作数操作数,操作数操作数 ;注释;注释指令的符号地址指令的符号地址标号后要有冒号标号后要有冒号操作码操作码注释前加分号注释前加分号153.标号、名字n标号后有冒号,在指令性语句前;名字后不加冒号,标号后有冒号,在指令性语句前;名字后不加冒号,在指示性语句前。在指示性语句前。n英文字母、数字及专用字符组成英文字母、数字及专用字符组成,最大长度不能超过最大长度不能超过3131个个,且不能由数
6、字打头且不能由数字打头,不能用保留字不能用保留字(如寄存器名如寄存器名,指令助记符指令助记符,伪指令伪指令)。164.操作数寄存器寄存器存储器单元存储器单元常量常量变量或标号变量或标号表达式表达式18变 量n代表内存中的数据区,程序中视为存储器代表内存中的数据区,程序中视为存储器操作数操作数n变量的属性:变量的属性:变量所在段的段地址变量所在段的段地址 变量单元地址与段首地址之变量单元地址与段首地址之 间的位移量。间的位移量。字节型、字型和双字型字节型、字型和双字型段段 值值偏移量偏移量类类 型型19表达式算术运算算术运算逻辑运算逻辑运算*关系运算关系运算取值运算和属性运算取值运算和属性运算其
7、它运算其它运算20算术运算和逻辑运算符n算术运算符算术运算符n+,-,*,/,MODn逻辑运算符逻辑运算符nAND,OR,NOT,XORn例:例:nMOV AL,8 AND 4nMOV AL,8+4-121取值运算符取得其变量或标号的偏移地址取得其变量或标号的偏移地址取得其变量或标号的段地址取得其变量或标号的段地址TYPE 取取变量的类型变量的类型变量的类型变量的类型LENGTH 取所定义存储区的长度取所定义存储区的长度SIZE 取所定义存储区的字节数取所定义存储区的字节数n用于分析存储器操作数的属性用于分析存储器操作数的属性n获取变量的属性值获取变量的属性值OFFSETSEG22取值运算符例
8、 MOV AX,SEG DATA MOV DS,AX MOV BX,OFFSET DATA LEA BX,DATA等价于等价于24属性运算符n 用于指定其后存储器操作数的类型用于指定其后存储器操作数的类型n 运算符:运算符:PTRn 例:例:MOV BYTE PTRBX,12H25其它运算符n方括号:方括号:n段重设符段重设符 段寄存器名:段寄存器名:方括号中内容为操作数的偏移地址方括号中内容为操作数的偏移地址用于修改默认的段基地址用于修改默认的段基地址264.2 伪指令掌握:掌握:n伪指令的格式及实现的操作伪指令的格式及实现的操作n伪指令的应用伪指令的应用28常用伪指令数据定义伪指令数据定义
9、伪指令符号定义伪指令符号定义伪指令段定义伪指令段定义伪指令结束伪指令结束伪指令过程定义伪指令过程定义伪指令宏命令伪指令宏命令伪指令29一、数据定义伪指令n用于定义数据区中用于定义数据区中变量变量的类型及大小的类型及大小n格式:格式:变量名变量名 伪指令助记符伪指令助记符 操作数,操作数,;注释注释符号地址符号地址定义变量类型定义变量类型定义变量值定义变量值及区域大小及区域大小31数据定义伪指令例nDATA1 DB 11H,22H,33H,44HnDATA2 DW 11H,22H,3344HnDATA3 DD 22H,22H,33445566H以上变量在内存以上变量在内存中的存放形式中的存放形式
10、32数据定义伪指令例_变量在内存中的分布变量在内存中的分布DATA111223344DATA2224411000033DATA322002200006655443333数据定义伪指令的几点说明n伪指令的性质决定所定义变量的类型;伪指令的性质决定所定义变量的类型;n定义定义字符串字符串必须用必须用DB伪指令伪指令n例:例:DATA1 DB ABCD,66HAB CD41H42H43H44H66H342.重复操作符n作用:作用:n为一个数据区的各单元设置相同的初值为一个数据区的各单元设置相同的初值n目的:目的:n常用于声明一个数据区常用于声明一个数据区n格式:格式:变量名变量名 伪指令助记符伪指令
11、助记符 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(
12、22H,11H,?),?)变量在内存中的分区变量在内存中的分区37数据定义伪指令例M1How aM211H11H00H44H33H r e you?11H00H00H随机数随机数M311H22H11H22H11H22HXXXXXXXXXXXXXX38二、符号定义伪指令n格式:格式:n符号名符号名 EQU EQU 表达式表达式n操作:操作:n用符号名取代后边的表达式,不可重新定义用符号名取代后边的表达式,不可重新定义n例:例:nCONSTANTCONSTANTEQUEQU100100nVAR EQU 30H+99HVAR EQU 30H+99HEQU说明的表达式不占用内存空间说明的表达式不占用内
13、存空间39三、段定义伪指令n说明逻辑段的起始和结束;说明逻辑段的起始和结束;n说明不同程序模块中同类逻辑段之间的联系形态说明不同程序模块中同类逻辑段之间的联系形态40段定义伪指令格式段名段名 SEGMENT SEGMENT 定位类型定位类型 组合类型组合类型 类别类别 段名段名 ENDSENDS说明逻辑段说明逻辑段的起点的起点说明不同模块中同名段的说明不同模块中同名段的组和连接方式组和连接方式41定位类型nPARA:段的起点从节边界开始段的起点从节边界开始 (16个字节为个字节为1节)节)nBYTE:段的起点从存储器任何地址开始段的起点从存储器任何地址开始nWORD:段的起点从偶地址开始段的起
14、点从偶地址开始nPAGE:段的起点从页边界开始段的起点从页边界开始 (256个字节为个字节为1页)页)42组合类型n与其它模块中的同名段在满足定位类型的前提与其它模块中的同名段在满足定位类型的前提 下具有的组合方式:下具有的组合方式:nNONE:不组合不组合nPUBLIC:依次连接(顺序由依次连接(顺序由LINK程序确定)程序确定)nCOMMON:覆盖连接覆盖连接nSTACK:堆栈段的依次连接堆栈段的依次连接nAT 表达式:段定义在表达式值为段基的节边界表达式:段定义在表达式值为段基的节边界nMEMORY:相应段在同名段的最高地址处。相应段在同名段的最高地址处。43类别n不同模块连接时将相同类
15、别的段放在连不同模块连接时将相同类别的段放在连续的内存区域中续的内存区域中44段定义伪指令例DATA SEGMENT MEM1 DB 11H,22H MEM2 DB Hello!MEM3 DW 2 DUP(?)(?)DATA ENDS变变量量在在逻逻辑辑段段中中的的位位置置就就代代表表了了它它的的偏偏移移地址地址表表示示变变量量所所在在逻逻辑辑段段的的段段地地址址表表示示变变量量的的类类型型45四、设定段寄存器伪指令n说明所定义逻辑段的性质说明所定义逻辑段的性质n格式:格式:ASSUME 段寄存器名段寄存器名:段名段名,段寄存器名,段寄存器名:段名,段名,46五、结束伪指令n表示源程序结束表示
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序设计 课件
限制150内