

免费预览已结束,剩余56页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章 ibm pc 80x86汇编语言程序设计 冶金工业出版社 第四章 汇编语言程序结构 4.1汇编语言语句格式 4.2 伪指令 4.3汇编语言源程序结构 4.4汇编语言的上机过程 第4章 ibm pc 80x86汇编语言程序设计 冶金工业出版社 4.1汇编语言的语句格式 一、语句种类 汇编语言程序由有序的汇编语言语句组成。 汇编语句 指令语句 伪指令语句 指令语句:完成一定操作功能,能够翻译成机器代码的语句, 即指令语句与机器指令有对应关系。 伪指令语句(指示性语句):为汇编程序在翻译汇编语言 源程序提供有关信息,如分配存储单元,给符号赋值、段 的定义等,它不翻译成机器代码。 第4章 ibm pc 80x86汇编语言程序设计 冶金工业出版社 二、语句格式 指令语句和伪指令语句的格式类似,格式如下: 名字 操作码 操作数/参数 ;注释 其中: v方括号 的项是可选项,可以省略。 v一般每行为一个语句,也可用定义byte_var word_var dw 6918h 类型为字节 mov al,byte_var ;al=18h mov bx, word_var ;bx=6918h again equ this far ;定义标号 mov ax,si again有 far属性 jmp again 第4章 ibm pc 80x86汇编语言程序设计 冶金工业出版社 6、变量的类型 用伪指令定义的变量是有类型的,在指令中使用变量做操 作数时,要操作数类型的匹配。 如:有如下数据定义: opr1 db 23h,4ah opr2 dw 127fh,25a6h 则:mov ax,opr1 mov bl,opr2 应使用合成操作符ptr: mov ax,word ptr opr1; ax=4a23h mov bl,byte ptr opr2 ; bl=7fh 第4章 ibm pc 80x86汇编语言程序设计 冶金工业出版社 三、段定义伪指令 datasegment ;data段定义开始 buf1 db 2dh dataends ;data段定义结束 extra segment ;extra段定义开始 buf2 db ? extra ends ;extra段定义结束 staksegment ;stak段定义开始 top dw 50 dup(?) stak ends ;stak段定义 code segment ;code段定义开始 assume cs:code,ds:data ;规定段的性质 assume ss:stak,es:extra start: mov ax,data mov ds,ax mov ax,extra mov es,ax mov ax,stak mov ss,ax mov ah,4ch int 21h code ends end start 返回dos 第4章 ibm pc 80x86汇编语言程序设计 冶金工业出版社 三、段定义伪指令 格式: 段名 segment 定位 组合类型段长度 ;段体 段名 ends 1、定位类型 用于通知连接程序,逻辑段的目标代码在存储 器中如何存放。即下一个逻辑段的起始地址与上段 结尾的间隔值。 第4章 ibm pc 80x86汇编语言程序设计 冶金工业出版社 para:段地址从能被16整除的地址开始依次存放 byte:段地址从下一个可用字节开始。 word:段地址从偶地址开始依次存放 page:段地址从能被256整除的地址开始依次存放 2、组合类型 告诉连接程序如何组合相同名字的段 none:表示与其他模块的段无关 public:连接时,本段与其他同名、同类别的段依次连接合 并成一个物理段,长度为各段之和。 common:将同名、同类别的段相覆盖,长度为各段最长者 第4章 ibm pc 80x86汇编语言程序设计 冶金工业出版社 四、段寻址伪指令 运行程序时,需要通过段寄存器访问存储单元,assume指令 就是用来建立段寄存器与段之间关系,但不能用来设置段寄存器的 内容。 格式:assume 段寄存器:段名,段寄存器:段名 功能:指示相关的段寄存器访问哪个逻辑段。 例如:assume cs:code,ds:data 三点说明 assume通常放在代码段的第一个语句 assume并没有给段寄存器赋值 cs的值由dos自动给加载的可执行文件赋的,其他段寄存器的 值需要通过mov指令来设置 第4章 ibm pc 80x86汇编语言程序设计 冶金工业出版社 程序段1:datasegmentpublic var1db5 dataends codesegmentpublic start: codeends 程序段2:datasegmentpublic var2dw 2 codesegmentpublic codeends endstart 第4章 ibm pc 80x86汇编语言程序设计 冶金工业出版社 stack:指示该段为堆栈段,连接方法与public相同。.对于 堆栈段,stack不可少。 3、类别 类别用来区分是代码段、数据段或堆栈段等,使用时必 须用单引号括起来,习惯上数据段用data,代码段用 code,堆栈段用stack,连接程序会把类别相同的逻 辑段,存放于连续的存储器中。 4、段长度 分为16位段和32位段 16位段用user16表示,32位段用user32表示 第4章 ibm pc 80x86汇编语言程序设计 冶金工业出版社 例如:若data为数据段名 则可通过如下方法给ds赋值 mov ax,data mov ds,ax 或: mov ax,seg data mov ds,ax 五、定位伪指令org和地址计数器$ 汇编程序在汇编源程序时,每遇到一个段,就会为该段设 置一个地址计数器$,用来每个数据或指令在段 中的相对位置 即偏移量。在程序中用$来表示地址计数器当前值,段内偏移 地址一般从0开始顺序使用,如果需要,可以用org来指定以某 个单元为起示地址。 第4章 ibm pc 80x86汇编语言程序设计 冶金工业出版社 例: data segment org 10h var1 dw 200h,300h org $+5 var2 db 15h dup(0) cont equ $-var2 data ends code segment assume cs:code,ds:data org 20h begin: mov ax,data var1在data段中的 便移量为10h var2的便移量为19h cont为var2所占的 字节数。 在代码段code中,第 一条指令从便移量为 20h单元开始存放。 第4章 ibm pc 80x86汇编语言程序设计 冶金工业出版社 动态求数据项个数的方法 string db c programming counts equ $-string ;counts=13 varw dw 1,2,3,4,5,6 countw equ ($-varw)/2 ;countw=(6*2)/2=6 buffer db 10 dup(2 dup(6),a) ;数据的个数为 10*(2+1)=30 countl equ $-buffer ;countl=30 mov cl,counts ;cl=13 mov cx,countw ;cx=6 mov cx, countl ;cx=30 第4章 ibm pc 80x86汇编语言程序设计 冶金工业出版社 五、简化段定义伪指令 (masm 5.0以上) 1、模式选择伪指令 . model 格式:.model 模式选择符 功能:指明所用的内存模式 tiny:微模式,四段合一模式,可生成.com文件 small:小模式,一个数据段,一个代码段 medium:中模式,一个数据段,允许多个代码段,用段名 区分不同的cs段 compact:压缩模式,一个代码段,允许多个数据段 large:大模式,可有多个代码段和多个数据段。 第4章 ibm pc 80x86汇编语言程序设计 冶金工业出版社 2、数据段定义伪指令(.data) 格式:.data名字 功能:定义一个数据段,隐含名为data 3、堆栈段定义伪指令(.stack) 格式:.stack长度 功能:定义一个堆栈段,形成ss和sp,sp的默认值1024, 隐含段名stack 4、代码段定义伪指令(.code) 格式:.code 功能:定义一个代码段,隐含段名为code 第4章 ibm pc 80x86汇编语言程序设计 冶金工业出版社 5、程序返回伪指令.exit 格式:.exit 功能:返回dos 6、程序开始伪指令.startup 格式:.startup 功能:指示程序的开始位置。并给ds等赋值 六、结束伪指令和模块名伪指令 格式:end标号 标号是程序的起始标号。 name 模块名 title 文本 第4章 ibm pc 80x86汇编语言程序设计 冶金工业出版社 七、指令集选择伪指令 如:.586 ; 选择pentium指令集 .586p; 选择pentium指令集,包括特 权指令 八、过程定义伪指令 格式: proc near/far (缺省为near) ret endp 第4章 ibm pc 80x86汇编语言程序设计 冶金工业出版社 4.3、汇编语言源程序结构 汇编语言源程序采用分段结构,有完整定义, 简化定义,程序段前缀结构和.com文件结构4中结 构形式。 一、完整段定义结构 用到的数据段和代码段都用段定义进行定义, 并用assume伪指令进行段约定。 二、简化段定义结构 利用简化段定义伪指令进行段的定义,不用 assume来规定段的性质,在程序前要说明模式。 第4章 ibm pc 80x86汇编语言程序设计 冶金工业出版社 三、程序段前缀结构 dos系统在将任何一个.exe文件装入存储器时,都 会生成一个“程序段前缀”(psp) int 20h 程序段前缀区 程序区 程序加载结构 ds 终止用户程序,返回 dos系统的功能 256个字节 第4章 ibm pc 80x86汇编语言程序设计 冶金工业出版社 程序段前缀结构与完整段定义结构的不同,仅仅 在于程序执行完返回dos 的方法。前者就是通过 执行psp单元的int 20h来返回dos。 这种方法要求: (1)将程序的代码段设置成一个过程,类型为far (2)在给ds赋值前,用下列3条指令将int 20h的地址 ds:0000h压入堆栈, push ds psp的段基址压栈 mov ax,0或xor ax,ax push ax psp的偏移量压栈 第4章 ibm pc 80x86汇编语言程序设计 冶金工业出版社 (3)以ret指令结尾,可将压栈的中断指令地址弹出送入cs、ip 中,ret指令执行后,就执行“int 20h”指令返回dos。 终止用户程序并返回dos系统的另一方法是,在程序结 束时使用以下两条指令: mov ah,4ch ;mov ax,4c00h int 21h int 21h 四、.com 文件结构 (1)四段合一,程序最大空间64kb; (2)第一条可执行指令存放在偏移地址0100h处存放; (3)不支持32位指令集,即使在程序中加.386之类也不行。 特点 第4章 ibm pc 80x86汇编语言程序设计 冶金工业出版社 综上所述:汇编语言程序常用结构模块的方法编写 ,源程序一般由几个段构成,每个段均以segment语 句开始,以ends语句结束。在代码段中又可定义若 干个子程序。 源程序 堆栈段数据段代码段debug直接编程 初始化输入运算处理转换输出返回dos 数值运算非数值运算 第4章 ibm pc 80x86汇编语言程序设计 冶金工业出版社 4.4 汇编语言的上机过程 (用masm进行汇编)上机步骤如下: v用编辑程序(edit.com)形成汇编语言源程序 (.asm文件) v用汇编程序(masm.exe)对源程序进行汇编 ,形成目标文件(.obj文件) v用连接程序(link.exe)把目标文件转换成可 执行文件(.exe) 第4章 ibm pc 80x86汇编语言程序设计 冶金工业出版社 (用tasm进行汇编)上机步骤如下: v用编辑程序(edit.com)形成汇编语言源程序 (.asm文件) v用汇编程序(tasm.exe)对源程序进行汇编, 形成目标文件(.obj) v用连接程序(tlink.exe)把目标文件转换成 可执行文件(.exe) 第4章 ibm pc 80x86汇编语言程序设计 冶金工业出版社 4.4 汇编语言的上机过程 上机步骤如下: 一、建立扩展名为.asm的源文件程序。 可用任何文本编辑器编辑源文件均可。如记事 本、word、wps等,通常用dos自带的edit编辑文件 。 二、用汇编程序masm或tasm产生目标文件 masm是支持宏指令的宏汇编程序(microsoft公司) tasm也是支持宏指令的汇编程序 (borland公司) 汇编程序的汇编对象是.asm文件 第4章 ibm pc 80x86汇编语言程序设计 冶金工业出版社 汇编的结果产生三个文件: .obj 文件 ,默认与源文件同名的二进制目标文 件。 .lst 文件,列表文件,此文件包括源程序和机 器语言程序清单,以及使用的标号和变量的列 表。方便查错。默认不建立。 .crf 文件,用于产生交叉引用表文件.ref(.crf 文件经过cref.exe文件再处理后,产生.ref交 叉引用表文件,可用type 阅读) 第4章 ibm pc 80x86汇编语言程序设计 冶金工业出版社 如果源程序有错,汇编会报告是那类错误 ,有多少错,其中(warning errors)为警 告错误,是一般性错误,不影响.obj文件的生 成。若存在严重错误(severe errors)则影 响目标文件的生成,需要返回到编辑环境对源 程序进行修改,直到没有错为止。 tasm 的完整格式为: e:tasm option source ,object ,listing ,xref 主要option参数 /l,/c,/z,/zi 第4章 ibm pc 80x86汇编语言程序设计 冶金工业出版社 例:e:tasm test 只生成test.obj文件 e:tasm test/l/zi 生成test.obj和test.lst 文件(含调试信息 ) 三、用link和tlink程序产生.exe文件。 因为.obj文件还不是可执行文件,需要经 过link/tlink程序处理后,才能得到可执行文 件即.exe文件。 格式为:tlink objectfiles ,exefile ,mapfile ,libfiles 第4章 ibm pc 80x86汇编语言程序设计 冶金工业出版社 tlink 的主要参数: /t,/x,/v,/3 例:e:tlink test 生成test.exe和test.map文件 e:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 森林防灭火知识培训简讯课件
- 森林管护培训课件
- 森林消防知识培训
- 森林安全知识培训简报课件
- 2.1住宿革新乡宿品牌的打造与推广2024040376课件
- 2025年新闻媒体行业编辑岗位招聘笔试预测试题集
- 2025年PMP项目经理认证考试题库及答案
- 2025教师资格考试题库及答案
- 2025年建筑设计师招聘考试模拟题及解题技巧
- 2025年边防巡逻员招聘面试常见问题与答案
- 《分娩指导及助产技巧》课件
- 图像数据采集与处理方法-洞察分析
- 云南省昆明市官渡区2023-2024学年九年级上学期期末语文试卷(解析版)
- JTGT 3832-2018 公路工程预算定额 说明部分
- (新)旅行社部门设置及其职责
- 酒店会议服务标准流程作业指导书
- 网络攻防原理与技术 第3版 教案 -第12讲 网络防火墙
- 第一响应人应急培训
- 初中数学七年级上册思维导图
- 《认识感官》课件
- 工程伦理课程课件
评论
0/150
提交评论