汇编语言程序设计(一).pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
汇编语言程序设计(一)

地址计数器“$” “$”:表示到目前为止该段已经使用的地址空间 例1: 设VAR1地址偏移量为1000H,则: VAR1 DB 100H DUP (?) 之后,$=1100H,因此: ADDR1 DW $ 等价于“ADDR1 DW 1100H”,也等价于“ADDR1 DW ADDR1” 例2: STRING DB ‘ABC’ LEN DW $-STRING ;LEN的值为STRING的长度 地址对准伪指令 ORG 格式: ORG 数值表达式 功能: 用于指定下一个指令或数据在段内的起始地址 例: LAB1: PUSH AX ORG 2000H LAB2: MOV AL,34 则LAB2的地址偏移量为2000H。 4.3 源程序的结构和伪指令 1.指示性语句 2.指令性语句 指令性语句 完整汇编程序 源程序结构框架 DATA SEGMENT ;数据段 …… ;定义变量、缓冲区等 DATA ENDS STACK SEGMENT PARA STACK ‘STACK’ ;堆栈段部分 DB XXXX DUP(?) ;定义堆栈的长度 STACK ENDS CODE SEGMENT ;代码段部分 ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA MAIN PROC FAR BEGIN: PUSH DS MOV AX,0 ;为RET提供转移地址 PUSH AX MOV AX,DATA MOV DS,AX ;初始化段寄存器DS、ES MOV ES,AX …… ;程序部分 RET ;返回DOS MAIN ENDP PROC_1 PROC NEAR/FAR …… ;定义其他过程 RET PROC_1 ENDP CODE ENDS END MAIN 较新版本的汇编程序(MASM5.0与MASM6.0)除支持完整段定义伪指令外,还提供了一种新的简单易用的存储模型和简化的段定义伪指令。  存储模型的作用是什么呢?存储模型决定一个程序的规模,也确定进行子程序调用、指令转移和数据访问的缺省属性(NEAR或FAR)。当使用简化段定义的源程序格式时,在段定义语句之前必须有存储模型 .MODEL语句,说明在存储器中应如何安放各个段   MODEL伪指令的常用格式如下: .  .MODEL 存储模型 Small 模型是一般应用程序最常用的一种模型,因为只有一个代码段和一个数据段,所以数据和代码都是近访问的。这种模型的数据段是指数据段、堆栈段和附加段的总和。    简化的段定义语句书写简短,语句.CODE、.DATA和.STACK分别表示代码数据段和堆栈段的开始,一个段的开始自动结束前面一个段。采用简化段指令之前必须有存储模型语句.MODEL。 汇编程序给出了与简化段定义有关的一组预定义符号,它们可在程序中出现,并由汇编程序识别使用。有关的预定义符号如下:   (1)@code 由.CODE 伪指令定义的段名或段组名。   (2)@data 由.DATA 伪指令定义的段名,或由 .DATA 、.DATA?、.CONST和 .STACK所定义的段组名。   (3)@stack 堆栈段的段名或段组名。    4.简化段定义举例 例    .MODEL   SMALL    .STACK   100H    ; 定义堆栈段及其大小    .DATA         ; 定义数据段        .    .CODE         ; 定义代码段  START:           ; 起始执行地址标号    MOV     AX, @DATA ; 数据段地址    MOV     DS, AX   ; 存入数据段寄存器        .        .    MOV    AX, 4C00H    INT    21H    END    START    ; 程序结束   从例可以看出,简化段定义比完整的段定义简单得多。但由于完整的段定义可以全面地说明段的各种类型与属性,因此在很多情况下仍需使用它。 回顾 DATA SEGMENT ;定义数据段 D1 DB 5 DUP(?) ;连续的字节单元 CC EQU $-D1 ;对单元计数 SUM DW 0 ;为结果保留一个字 DATA ENDS ;数据段定义结束 STACK SEGMENT PARA STACK ‘STACK’ ;定义堆栈段 DB 100 DUP (?) ;100字节的栈空间 STACK EN

文档评论(0)

baoyue + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档