文档详情

汇编语言(天津大学)chapter 4.ppt

发布:2017-06-21约1.28万字共80页下载文档
文本预览下载声明
实验要求 1.掌握汇编上机过程 2.掌握TD的使用方法,在TD下完成3.19题 3.能够编写简单的程序,实现3.21题,3.30题,3.37题,并且利用TD观察实验结果。 源程序的两种格式书写 源程序分别用两种格式书写 第一种格式MASM 5.0以前就具有 完整段定义格式 第二种格式从MASM 5.0开始支持 简化段定义格式 存储模式伪指令 .MODEL 存储模式 使用简化段定义,必须有存储模式伪指令 .model语句必须位于所有段定义语句之前 存储模式决定一个程序的规模,确定进行子程序调用、指令转移和数据访问的缺省属性 MASM有7种不同的存储模式: ① TINY ② SMALL ③ COMPACT ④ MEDIUM ⑤ LARGE ⑥ HUGE ⑦ FLAT 存储模式—TINY微型模式 微型模式是MASM 6.0才引入的 用于创建COM类型程序 用微型模式编写汇编语言程序时,所有的段地址寄存器都被设置为同一值 这意味着代码段、数据段、堆栈段都在同一个段内,不大于64KB;访问操作数或指令都只需要使用16位偏移地址 存储模式—SMALL小型模式 一般的程序(例如本书的绝大多数程序示例和习题)都可用这种模式 在小型模式下,一个程序至多只能有一个代码段和一个数据段,每段不大于64KB 这里的数据段是指数据段、堆栈段和附加段的总和,它们共用同一个段基址,总长度不可超过64KB;因此小模式下程序的最大长度为128KB 访问操作数或指令都只需要使用16位偏移地址;这意味着诸如指令转移、程序调用以及数据访问等都是近属性(NEAR),即小型模式下的调用类型和数据指针缺省分别为近调用和近指针 存储模式—COMPACT紧凑模式 适合于数据量大但代码量小的程序 紧凑模式下,代码段被限制在一个不大于64KB的段内;而数据段则可以有多个 存储模式—MEDIUM中型模式 中型模式是与紧凑模式互补的模式 适合于数据量小但代码量大的程序 中型模式的代码段可以超过64KB,有多个;但数据段只能有一个不大于64KB的段 存储模式—LARGE大型模式 较大型程序通常采用的存储模式 大型模式允许的代码段和数据段都有多个 存储模式—HUGE(巨型模式) 与大型模式基本相同,允许数据段大小超过64KB 存储模式— FLAT平展模式 平展模式用于创建一个32位的程序, 它只能运行在32位x86 CPU上。 DOS下不能使用FLAT模式, 而编写32位Windows 9.x或Windows-NT的程序时,必须采用FLAT模式。 简化段定义伪指令 .STACK [大小] ;堆栈段开始 .DATA ;数据段开始 .CODE [段名] ;代码段开始 简化段定义伪指令指明一个逻辑段的开始,同时自动结束前面的一个段 采用简化段定义伪指令前,需有.model语句 使用简化段定义,各段名称和其他用户所需的信息可以使用MASM预定义符号,例如: @data表示由.data等定义的数据段的段名 堆栈段伪指令 .STACK [大小] 堆栈段伪指令.STACK创建一个堆栈段,段名是:stack 它的参数指定堆栈段所占存储区的字节数,默认是1KB(= 1024 = 400h字节) 数据段伪指令 .DATA 数据段伪指令.data创建一个数据段,段名是:_DATA。它用于定义具有初值的变量,当然也允许定义无初值的变量 无初值变量可以安排在另一个段中,它用.data?伪指令创建,数据段名是:_BSS . const伪指令用于建立只读的常量数据段(段名:CONST) 代码段伪指令 .CODE [段名] 代码段伪指令.code创建一个代码段,它的参数指定该代码段的段名 如果没有给出段名,则采用默认段名: 在TINY、SMALL、COMPACT和FLAT模式下,默认的代码段名是:_TEXT 在MEDIUM、LARGE和HUGE模式下,默认的代码段名是:模块名_TEXT 程序开始伪指令 .STARTUP 按照CPU类型、存储模式、操作系统和堆栈类型,产生程序开始执行的代码;同时还指定程序开始执行的起始点 在DOS下,还将设置DS值,调整SS和SP值 使用了该伪指令,则程序结束处的END伪指令不必再指定程序入口处的标号 程序终止伪指令 .EXIT [返回参数] 产生终止程序执行返回操作系统的指令代码 它的可选参数是一个返回的数码,通常用0表示没有错误。例如.exit 0对应的代码是: mov ah,4ch int 21h DOS功能调用的4ch子功能(返回DOS): 入口参数:AH=4ch,AL=返回数码 简化段定义格式—MASM 6.x支持 ;SampleA.ASM .model small .stack .data ...
显示全部
相似文档