zoukankan      html  css  js  c++  java
  • 汇编简化段使用

    1. 存储模型伪指令

     MASM 5.0和MASM 6.0支持的存储模型:

    存储模型
    功 能
    适用操作系统
    Tiny (微型) 所有数据和代码都放在一个段内,其访问都为NEAR型,整个程序≤64K,并会产生.COM文件。 MS-DOS
    Small (小型) 所有代码在一个64KB的段内,所有数据在另一个64KB的段内(包括数据段,堆栈段和附加段)。 MS-DOS
    Windows
    Medium (中型) 所有代码>64K时可放在多个代码段中,转移或调用可为FAR型。所有数据限在一个段内,DS可保持不变。 MS-DOS
    Windows
    Compact(紧凑型) 所有代码限在一个段内,转移或调用可为NEAR型。数据>64K时,可放在多个段中。 MS-DOS
    Windows
    Large (大型) 允许代码段和数据段都可超过64K,被放置在有多个段内,所以数据和代码都是远访问。 MS-DOS
    Windows
    Huge (巨型) 单个数据项可以超过64K,其它同Large模型 MS-DOS
    Windows
    Flat (平展型) 所有代码和数据放置在一个段中,但段地址是32位的,所以整个程序可为4GB。MASM 6.0支持该模型。 OS/2
    WindowsNT

      注意:Small 模型是一般应用程序最常用的一种模型,因为只有一个代码段和一个数据段,所以数据和代码都是近访问的。这种模型的数据段是指数据段、堆栈段和附加段的总和。

      在DOS下用汇编语言编程时,可根据程序的不同特点选择前6种模型,一般可以选用SMALL模型。另外,TINY模型将产生COM程序,其他模型产生EXE程序。FLAT模型只能运行在32位x86 CPU上,DOS下不允许使用这种模型。当与高级语言混合编程时,两者的存储模型应当一致。


      2. 简化的段伪指令



    简化段伪指令的格式如下表:

    简化段伪指令
    功 能
    注释
    .CODE [段名] 创建一个代码段 段名为可选项,如不给出段名,则采用默认段名。对于多个代码段的模型,则应为每个代码段指定段名。
    .DATA 创建一个数据段 段名是:_DATA
    .DATA? 创建无初值变量的数据段 段名是:_BSS
    .FARDATA [段名] 建立有初值的远调用数据段 可指定段名,如不指定,则将以FAR_DATA命名。
    .FARDATA? [段名] 建立无初值的远调用数据段 可指定段名,如不指定,则将以FAR_BSS命名。
    .CONST 建立只读的常量数据段 段名是:CONST
    .STACK [大小] 创建一个堆栈段并指定堆栈段大小 段名是:stack。如不指定堆栈段大小,则缺省值为1KB
     

      3.与简化段定义有关的预定义符号


      下面的举例说明预定义符号的使用方法。在完整的段定义情况下,在程序的一开始,需要用段名装入数据段寄存器,如例4.1中的
           mov   ax,data_seg1
           mov   ds,ax
      若用简化段定义,则数据段只用.data来定义,而并未给出段名,此时可用
           mov   ax,@data 
           mov   ds,ax
      这里预定义符号@data就给出了数据段的段名。


      4.简化段定义举例  

      
    .model small ;定义模式
    
    .data ;定义数据段
    
    .stack;定义堆栈段
        
    .code ;定义数据段
    start:
        mov ax,@data
        mov ds,ax
    
        mov ah,4ch
        int 21h
    end start

    引用学习:

    https://blog.csdn.net/tsaid/article/details/8236649

  • 相关阅读:
    06 is和==的区别 encode()编码 decode()解码
    05 dic的增删改查 字典的嵌套 考试题dic.get()的相关使用
    03 编码 int ,bool,str的常用操作 主要讲str
    01 基本数据类型 变量 if语句
    04 列表的增删改查 常用方法 元祖 range
    02 while循环 格式化输出 运算符
    多校2 Harmonious Army hdu6598 网络流
    P3159 [CQOI2012]交换棋子 网络流
    P2172 [国家集训队]部落战争 最大流
    P2402 奶牛隐藏 网络流
  • 原文地址:https://www.cnblogs.com/dgwblog/p/11869351.html
Copyright © 2011-2022 走看看