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

  • 相关阅读:
    Spring MVC,绑定数组、集合
    kettle 使用 CARTE 执行
    正交投影矩阵_相机中的透视投影几何——讨论相机中的正交投影
    VS 遇到异常 可能是某个扩展导致的 解决方法 和提升程序管理员权限的方法
    IDEA Community环境搭建笔记
    PHP ROT18加解密
    C# TTS 文字转语音
    软件开发文档【模板】
    java 打印日志 规范建议
    java 死锁 排查 (jstack jconsole jvisualvm jmc)
  • 原文地址:https://www.cnblogs.com/dgwblog/p/11869351.html
Copyright © 2011-2022 走看看