第4章汇编语言程序格式-课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第4章汇编语言程序格式-课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序 格式 课件
- 资源描述:
-
1、计算机科学与技术系计算机科学与技术系 汇编语言汇编语言 汇编程序功能汇编程序功能 伪操作伪操作 汇编语言程序格式汇编语言程序格式 汇编语言程序的上机过程汇编语言程序的上机过程第第4章章 汇编语言程序格式汇编语言程序格式计算机科学与技术系计算机科学与技术系 汇编语言汇编语言编辑程序编辑程序.ASM 文件文件汇编程序汇编程序.OBJ 文件文件连接程序连接程序.EXE 文件文件Edit 等等MASMLINK在计算机上运行汇编语言程序的步骤是:在计算机上运行汇编语言程序的步骤是:用编辑程序(任何一种文本编辑程序)建立用编辑程序(任何一种文本编辑程序)建立ASMASM文件;文件;用用MASMMASM程序
2、把程序把ASMASM文件转换成文件转换成OBJOBJ文件;文件;用用LINKLINK程序把程序把OBJOBJ文件转换成文件转换成EXEEXE文件;文件;用用DOSDOS命令直接键入文件名就可执行该程序;命令直接键入文件名就可执行该程序;计算机科学与技术系计算机科学与技术系 汇编语言汇编语言汇编程序的主要功能:汇编程序的主要功能:计算机科学与技术系计算机科学与技术系 汇编语言汇编语言 伪操作是伪操作是汇编程序汇编程序对源程序进行汇编时处理的对源程序进行汇编时处理的操作,(不像机器指令那样是程序运行期间由计算机来执操作,(不像机器指令那样是程序运行期间由计算机来执行的)行的)。处理器选择伪操作处理
3、器选择伪操作 段定义伪操作段定义伪操作 程序开始和结束伪操作程序开始和结束伪操作 数据定义及存储器分配伪操作数据定义及存储器分配伪操作 表达式赋值伪操作表达式赋值伪操作 地址计数器与对准伪操作地址计数器与对准伪操作 基数控制伪操作基数控制伪操作计算机科学与技术系计算机科学与技术系 汇编语言汇编语言 选择选择 8086 指令系统指令系统 选择选择 80286 指令系统指令系统 选择保护模式下的选择保护模式下的 80286 指令系统指令系统 选择选择 80386 指令系统指令系统 选择保护模式下的选择保护模式下的 80386 指令系统指令系统 选择选择 80486 指令系统指令系统 选择保护模式下
4、的选择保护模式下的 80486 指令系统指令系统 选择选择 Pentium 指令系统指令系统 选择保护模式下的选择保护模式下的 Pentium 指令系统指令系统 这类伪操作一般这类伪操作一般,如不给出,如不给出,则汇编程则汇编程序序。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言段定义伪操作的格式:段定义伪操作的格式:。1.完整的段定义伪指令完整的段定义伪指令计算机科学与技术系计算机科学与技术系 汇编语言汇编语言:表示:表示,即段起始地址最低四位必须是即段起始地址最低四位必须是0 0。:表示:表示,即段,即段起始地址的最低一位必须是起始地址的最低一位必须是0 0。:表示:表示。:表示:
5、表示,即起始地址的最低八位必须是即起始地址的最低八位必须是0 0。默认为默认为 计算机科学与技术系计算机科学与技术系 汇编语言汇编语言3)3)组合方式组合方式组合方式有六种类型可供选择。组合方式有六种类型可供选择。(1)该段为该段为,在连接时将不与其他同名段合并,在连接时将不与其他同名段合并(2)该段在连接时可以把该段在连接时可以把。每一段从小段的边界开始,所以各段之间有小于每一段从小段的边界开始,所以各段之间有小于16个字个字节的间隙。节的间隙。(3)该段在连接时可以该段在连接时可以,由于各同名段有相同的起始地址,所以会产生覆盖。,由于各同名段有相同的起始地址,所以会产生覆盖。(4)把把。各
6、段之。各段之间没有间隙。间没有间隙。(5)同同PUBLIC(6)使段地址是表达式所计算出来的使段地址是表达式所计算出来的16位值,位值,CS除外。除外。默认为默认为 计算机科学与技术系计算机科学与技术系 汇编语言汇编语言【例】有两个模块,各模块段定义如下【例】有两个模块,各模块段定义如下模块模块1 1:DATA1DATA1SEGMENTSEGMENT PARA PUBLIC DATA1PARA PUBLIC DATA1M1M1DB 45H DUPDB 45H DUP(0 0)DATA1DATA1ENDSENDSDATA2DATA2SEGMENT PARA COMMON DATA2SEGMENT
7、 PARA COMMON DATA2N1 DB 102H DUPN1 DB 102H DUP(0 0)DATA2DATA2ENDSENDSEND END 模块模块2 2:DATA1DATA1SEGMENT PARA PUBLIC SEGMENT PARA PUBLIC DATA1DATA1M2M2DB 104H DUPDB 104H DUP(11H11H)DATA1DATA1ENDSENDSDATA2DATA2SEGMENT PARA COMMON SEGMENT PARA COMMON DATA2DATA2N2N2DB 105H DUPDB 105H DUP(0 0)DATA2DATA2EN
8、DSENDSDATA3DATA3SEGMENTSEGMENTT1T1DB 50 DUPDB 50 DUP(20H20H)DATA3DATA3ENDSENDSENDEND计算机科学与技术系计算机科学与技术系 汇编语言汇编语言该段的定位组合方式示意图如图所示。该段的定位组合方式示意图如图所示。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言 4)4)使用类型使用类型 使用使用1616位寻址方式位寻址方式 段长段长64K64K 使用使用3232位寻址方式位寻址方式 段长段长4G4G 5)5)类别类别 在引号中给出连接时组成的段组的类型名。在在引号中给出连接时组成的段组的类型名。在计算机科学与技
9、术系计算机科学与技术系 汇编语言汇编语言假定伪指令假定伪指令ASSUME格式:格式:功能:功能:DATA1DATA1SEGMENTSEGMENTA ADB 1DB 1,2 2,3 3DATA1DATA1ENDSENDSCODECODESEGMENTSEGMENT 其中段寄存器名必须是其中段寄存器名必须是CS,DS,ES 和和SS(对于对于386 及后继机及后继机型还有型还有FS 和和GS)中的一个。中的一个。段名必须是由段名必须是由SEGMENT定义的段定义的段中的段名。中的段名。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言 段定义伪操作:段定义伪操作:完整的段定义格式举例完整的段定
10、义格式举例 data segment ;定义数据段定义数据段 data ends;-extra segment ;定义附加段定义附加段 extra ends;-code segment ;定义代码段定义代码段 assume cs:code,ds:data,es:extrastart:mov ax,data mov ds,ax ;段地址段地址 段寄存器段寄存器 code ends end start计算机科学与技术系计算机科学与技术系 汇编语言汇编语言code segmentmain proc far assume start:push ds mov ax,0 push ax retmain e
11、ndpcode ends end startcode segmentcode segmentmain proc farmain proc far assume assume start:start:mov ax,4c00h mov ax,4c00h int 21h int 21hmain endpmain endpcode endscode ends end start end start计算机科学与技术系计算机科学与技术系 汇编语言汇编语言 例:一个完整的段定义格式例:一个完整的段定义格式STACK SEGMENT STACK ;定义堆栈段定义堆栈段STACK .;分配堆栈段的大小分配堆栈段
12、的大小STACK ENDSDATA SEGMENT ;定义数据段定义数据段 .;定义数据定义数据DATA ENDSCODE SEGMENT CODE ;定义代码段定义代码段 ASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATA ;程序开始程序开始 MOV DS,AX .;程序代码程序代码 MOV AX,4C00H ;程序终止,返回程序终止,返回DOS INT 21HCODE ENDS ;代码段结束代码段结束.;子程序代码子程序代码END START ;汇编结束汇编结束 例:一个完整的段定义格式例:一个完整的段定义格式计算机科学与技术系计算机科学与技术
13、系 汇编语言汇编语言 2.存储模型与简化段定义伪指令存储模型与简化段定义伪指令 前面介绍了完整的段定义格式,用完整段定义格式虽然可以控制段前面介绍了完整的段定义格式,用完整段定义格式虽然可以控制段的各种属性,但程序员很少使用。现在的汇编程序提供了一种简化的的各种属性,但程序员很少使用。现在的汇编程序提供了一种简化的段定义方式,它使定义段更简单、方便。具体形式如下:段定义方式,它使定义段更简单、方便。具体形式如下:;定义存储模式定义存储模式 ;定义堆栈段定义堆栈段 ;定义数据段定义数据段.;定义数据定义数据 ;定义代码段定义代码段 ;程序起始点,并建立程序起始点,并建立DS和和SS内容内容.;程
14、序代码程序代码 ;程序结束点,返回程序结束点,返回DOS.;子程序子程序 ;汇编结束汇编结束计算机科学与技术系计算机科学与技术系 汇编语言汇编语言存储模式与简化段定义伪操作存储模式与简化段定义伪操作(1)MODEL 伪操作伪操作 存储模式:存储模式:计算机科学与技术系计算机科学与技术系 汇编语言汇编语言 TINY:该存储类型是为编写:该存储类型是为编写COM文件类型而设置的。文件类型而设置的。SMALL:所有的数据变量必须在一个数据段之内,所有的代码也:所有的数据变量必须在一个数据段之内,所有的代码也必须在一个代码段之内。在这种模型下,数据段寄存器的内容保持不必须在一个代码段之内。在这种模型下
15、,数据段寄存器的内容保持不变,所有转移也都是段内转移。变,所有转移也都是段内转移。MEDIUM:所有的数据变量必须在一个数据段之内,但代码段可以:所有的数据变量必须在一个数据段之内,但代码段可以有多个。在这种模型下,数据段寄存器的内容保持不变,转移可以是有多个。在这种模型下,数据段寄存器的内容保持不变,转移可以是段间转移。段间转移。COMPACT:数据段可以有多个,但代码段只能有一。:数据段可以有多个,但代码段只能有一。LARGE:数据段和代码段都可以有多个,但一个数组的字节数不:数据段和代码段都可以有多个,但一个数组的字节数不能超过能超过64KB。HUGE:数据段和代码段都可以有多个,一个数
16、组的字节数也可以:数据段和代码段都可以有多个,一个数组的字节数也可以超过超过64KB。FLAT:只能在:只能在80386及其以后的计算机系统中运行。及其以后的计算机系统中运行。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言SMALL存储模式存储模式 一般的程序都可用这种模式。在小型模式下,一个程一般的程序都可用这种模式。在小型模式下,一个程序至多只能有一个代码段和一个数据段,每段不大于序至多只能有一个代码段和一个数据段,每段不大于64KB。访问操作数或指令都只需要使用访问操作数或指令都只需要使用16位偏移地址位偏移地址;这意;这意味着诸如指令转移、程序调用以及数据访问等都是味着诸如指令
17、转移、程序调用以及数据访问等都是近属性近属性(NEAR),即小型模式下的调用类型和数据指针缺省分),即小型模式下的调用类型和数据指针缺省分别为近调用和近指针。别为近调用和近指针。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言.model small.model small.stack 100H.stack 100H.data.data .code.code.startup.startup .exit 0.exit 0endend计算机科学与技术系计算机科学与技术系 汇编语言汇编语言.计算机科学与技术系计算机科学与技术系 汇编语言汇编语言 简化的段定义伪操作简化的段定义伪操作.code
18、name.code name.data.data.data?.data?.fardatafardata name name 默认名:默认名:FAR_DATAFAR_DATA.fardatafardata?name?name 默认名:默认名:FAR_BSSFAR_BSS.const.const.stack size .stack size 默认为默认为1KB1KB计算机科学与技术系计算机科学与技术系 汇编语言汇编语言计算机科学与技术系计算机科学与技术系 汇编语言汇编语言v 例:简化段定义例:简化段定义 .MODEL SMALL .STACK 100H .DATA .CODESTART:MOV A
19、X,DATA MOV DS,AX MOV AX,4C00H INT 21H END START计算机科学与技术系计算机科学与技术系 汇编语言汇编语言.model small.model small.data.data.code.code.startup.startup .exit 0.exit 0end end .model small .model small .data .data .code .codestart:start:mov ax,datamov ax,data mov ds,ax mov ds,ax mov ax,4c00h mov ax,4c00h int 21h int 2
20、1h end start end start .model small .model small .const .const .data .data .code .codestart:mov ax,DGROUPstart:mov ax,DGROUP mov ds,ax mov ds,ax mov ax,4c00h mov ax,4c00h int 21h int 21h end start end start计算机科学与技术系计算机科学与技术系 汇编语言汇编语言格式:格式:段组名段组名 GROUP GROUP 数据段名数据段名11,数据段名,数据段名22功能:功能:汇编程序把各数据段组成一个段
21、组,以便程序在访问各数据段汇编程序把各数据段组成一个段组,以便程序在访问各数据段时使用一个数据段寄存器时使用一个数据段寄存器DS。如:。如:data1 segment data1 ends data2 segment data2 ends datagroup group data1,data2 code segment assume cs:code,ds:datagroup start:mov ax,datagroup mov ds,ax 3.段组定义伪操作段组定义伪操作计算机科学与技术系计算机科学与技术系 汇编语言汇编语言dseg1 segment word public datadseg1
22、 segment word public data dseg1 ends dseg1 ends dseg2 segment word public datadseg2 segment word public data dseg2 endsdseg2 ends datagroup datagroup groupgroup dseg1,dseg2 dseg1,dseg2cseg segment para public codecseg segment para public code assume cs:cseg,ds:assume cs:cseg,ds:datagroupdatagroupsta
23、rt:start:mov ax,datagroup mov ax,datagroup mov ds,ax mov ds,ax mov ax,4c00h mov ax,4c00h int 21h int 21hcseg endscseg ends end start end start计算机科学与技术系计算机科学与技术系 汇编语言汇编语言data1 segment data1 segment wordword const1 dw 100 const1 dw 100data1 endsdata1 ends data2 segment data2 segment wordword var1 dw?v
24、ar1 dw?data2 endsdata2 endsdatagroup group data1,data2datagroup group data1,data2code segment code segment assume cs:code,ds:datagroupassume cs:code,ds:datagroup mov ax,datagroup mov ax,datagroup mov ds,ax mov ds,ax mov ax,const1 mov ax,const1 mov var1,ax mov var1,ax mov ax,4c00h mov ax,4c00h int 21
25、h int 21hcode endscode ends end start end start计算机科学与技术系计算机科学与技术系 汇编语言汇编语言;指定列表文件每页打印的标题;指定列表文件每页打印的标题;指出模块的名字;指出模块的名字;表示源程序结束,;表示源程序结束,label 指示程序指示程序 ;开始执行的起始标号;开始执行的起始标号;定义程序的入口点;定义程序的入口点;退出程序并返回操作系统;退出程序并返回操作系统 ;return_value常用常用 作返回值作返回值4.2.3 程序开始和结束伪操作程序开始和结束伪操作可以可以没有没有计算机科学与技术系计算机科学与技术系 汇编语言汇编语
展开阅读全文