- 1、本文档共80页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
【例】代码段的定义实例CODE1 SEGMENTMOV AX,DATA1 ;把数据段DATA1的段值送AXMOV DS,AX ;把AX的值送给DS,即DS存储数据段的段值MOV AX,4C00HINT 21H ;调用DOS功能,结束程序的运行CODE1 ENDS第63页,共80页,星期六,2024年,5月段寄存器的说明语句在汇编语言源程序中可以定义多个段,每个段都要与一个段寄存器建立一种对应关系。建立这种对应关系的说明语句格式如下:ASSUME段寄存器名:段名[,段寄存器名:段名,……]其中,段寄存器是CS、DS、ES、SS,段名是在段定义语句说明时的段名。第64页,共80页,星期六,2024年,5月【例】段寄存器的说明实例DATA1SEGMENT ;定义数据段DATA1WORD1 DW4231HBYTE1 DBAAAAFFFDATA1 ENDSDATA2SEGMENT ;定义数据段DATA2WORD2 DW5566HWORD3 DW7878HDATA2 ENDSDATA3SEGMENT ;定义数据段DATA3BYTE2 DB?DATA3 ENDSCODE1SEGMENT ;编写代码段CODE1ASSUMECS:CODE1,DS:DATA1,ES:DATA2 ;(1)MOVAX,DATA1 ;(2)MOVDS,AX ;(3)MOVAX,DATA2 ;(4)MOVES,AX ;(5) MOVAX,WORD1 ;访问段DATA1中的字变量WORD1MOVWORD2,AX ;访问段DATA2中的字变量WORD2 ASSUMEDS:DATA3,ES:NOTHING ;(6)MOV AX,DATA3MOV DS,AXMOVBL,BYTE2 ;访问段DATA3中的字节变量BYTE2 MOV AX,4C00H ;(7)INT 21H ;(8)CODE1 ENDS第65页,共80页,星期六,2024年,5月堆栈段的说明堆栈段是一个特殊的段,在程序中可以定义它,也可以不定义。除了要生成COM型执行文件的源程序外,一个完整的源程序一般最好定义堆栈段。如果在程序中不定义堆栈段,那么,操作系统在装入该执行程序时将自动为其指定一个64KB的堆栈段。第66页,共80页,星期六,2024年,5月简化段定义用完整的段定义格式可以控制段的各种属性,MASM5.0以后的汇编程序提供了一种简化的段定义方式,它使定义段更简单、方便。第67页,共80页,星期六,2024年,5月存储模型伪指令程序存储模型伪指令的格式如下:.MODEL存储模型[,语言类型][,操作系统类型][,堆栈类型]存储模型功能适用系统Tiny(微型)所有数据和代码都放在一个段内,其访问都为NEAR型,整个程序小于或等于64KB,并会产生.COM文件MS-DOSSmall(小型)所有代码在一个64KB的段内,所有数据在另一个64KB的段内(包括数据段、堆栈段和附加段)MS-DOSWindowsMedium(中型)所有代码大于64KB时可放在多个代码段中,转移或调用可为FAR型。所有数据限在一个段内,DS可保持不变MS-DOSWindowsCompact(紧凑型)所有代码限在一个段内,转移或调用可为NEAR型。数据大于64KB时,可放在多个段中MS-DOSWindowsLarge(大型)代码段和数据段都可超过64KB,被放置在有多个段内,所以数据和代码都是远访问MS-DOSWindowsHuge(巨型)单个数据项可以超过64KB,其他同Large模型MS-DOSWindowsFlat(平展型)所有代码和数据放置在一个段中,但段地址是32位的,所以整个程序可为4GB。MASM6.0支持该模型OS/2WindowsNT第68页,共80页,星期六,2024年,5月简化的段伪指令简化段伪指令功能注释.CODE[段名]
文档评论(0)