⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rules.asi

📁 ucos 开发工具 Borland c3.1版
💻 ASI
📖 第 1 页 / 共 2 页
字号:
;[]-----------------------------------------------------------------[]
;|      RULES.ASI  --  Rules & Structures for assembler              |
;|                                                                   |
;|      C/C++ Run Time Library   Version 4.0                         |
;|                                                                   |
;|      Copyright (c) 1987, 1991 by Borland International Inc.       |
;|      All Rights Reserved.                                         |
;[]-----------------------------------------------------------------[]

;*** First we begin with a few of the major constants of C.

false   equ     0       ; Beware !  For incoming parameters, non-false = true.
true    equ     1       ; For results, we generate the proper numbers.

lesser  equ    -1       ; Incoming, lesser < 0
equal   equ     0
greater equ     1       ; Incoming, greater > 0

        PAGE
;[]------------------------------------------------------------[]
;|                                                              |
;|      Conditional Assembly Directives                         |
;|                                                              |
;[]------------------------------------------------------------[]

;memory model aliases, for the convenience of building the library

IFDEF           __s__
__SMALL__       equ     1
ENDIF

IFDEF           __c__
__COMPACT__     equ     1
ENDIF

IFDEF           __m__
__MEDIUM__      equ     1
ENDIF

IFDEF           __l__
__LARGE__       equ     1
ENDIF

IFDEF           __h__
__HUGE__        equ     1
ENDIF

IFNDEF __TINY__
    IFNDEF __SMALL__
        IFNDEF __MEDIUM__
            IFNDEF __COMPACT__
                IFNDEF __LARGE__
                    IFNDEF __HUGE__
                        %OUT  You must supply a model symbol.
                        .ERR
                    ENDIF
                ENDIF
            ENDIF
        ENDIF
    ENDIF
ENDIF

;bit masks to extract default pointer types from MMODEL (at run-time)
FCODE           equ     8000h
FDATA           equ     4000h

IFDEF   __TINY__                ; Small Code - Small Data
        LPROG           equ     false
        LDATA           equ     false
        MMODEL          equ     0       
        _DSSTACK_       equ     <>
ENDIF

IFDEF   __SMALL__               ; Small Code - Small Data
        LPROG           equ     false
        LDATA           equ     false
        MMODEL          equ     1       
        _DSSTACK_       equ     <>
ENDIF

IFDEF   __MEDIUM__              ; Large Code - Small Data
        LPROG           equ     true
        LDATA           equ     false
        MMODEL          equ     FCODE+2 
        _DSSTACK_       equ     <>
ENDIF

IFDEF   __COMPACT__             ; Small Code - Large Data
        LPROG           equ     false
        LDATA           equ     true
        MMODEL          equ     FDATA+3 
ENDIF

IFDEF   __LARGE__               ; Large Code - Large Data
        LPROG           equ     true
        LDATA           equ     true
        MMODEL          equ     FCODE+FDATA+4
ENDIF

IFDEF   __HUGE__                ; Large Code - Large Data
        LPROG           equ     true
        LDATA           equ     true
        MMODEL          equ     FCODE+FDATA+5
ENDIF

IF      LPROG
        DIST            equ     FAR
ELSE
        DIST            equ     NEAR
ENDIF

        PAGE
;[]------------------------------------------------------------[]
;|                                                              |
;|      Segment Declarations Macros                             |
;|                                                              |
;[]------------------------------------------------------------[]

Code_Seg@       MACRO           ;; Open a Code Segment
IFDEF __WINDOWS__
_TEXT   SEGMENT WORD PUBLIC 'CODE'
ELSE
_TEXT   SEGMENT BYTE PUBLIC 'CODE'
ENDIF
        ASSUME  CS:_TEXT
                ENDM

Code_EndS@      MACRO           ;; Close a Code Segment
_TEXT   ENDS
                ENDM

Data_Seg@       MACRO           ;; Open a Data Segment  (initialized)
_DATA   SEGMENT WORD PUBLIC 'DATA'
                ENDM

Data_EndS@      MACRO           ;; Close a Data Segment (initialized)
_DATA   ENDS
                ENDM

IFNDEF __HUGE__
    BSS_Seg@        MACRO       ;; Open a Data Segment  (un-initialized)
    _BSS    SEGMENT WORD PUBLIC 'BSS'
            ENDM

    BSS_EndS@       MACRO       ;; Close a Data Segment (un-initialized)
    _BSS    ENDS
                    ENDM
ENDIF

FarData_Seg@    MACRO           ;; Open a FAR Data Segment
_FARDATA        SEGMENT PARA PUBLIC 'FAR_DATA'
                ENDM

FarData_EndS@   MACRO           ;; Close a FAR Data Segment
_FARDATA        ENDS
                ENDM

FarBSS_Seg@     MACRO           ;; Open a FAR BSS Segment
_FARBSS         SEGMENT PARA PUBLIC 'FAR_BSS'
                ENDM

FarBSS_EndS@    MACRO           ;; Close a FAR BSS Segment
_FARBSS         ENDS
                ENDM

Const_Seg@      MACRO           ;; Open a CONST Segment
_CONST  SEGMENT WORD PUBLIC 'CONST'
                ENDM

Const_EndS@     MACRO           ;; Close a CONST Segment
_CONST  ENDS
                ENDM

Init_Seg@       MACRO           ;; Open a INIT Segment
_INIT_  SEGMENT WORD PUBLIC 'INITDATA'
                ENDM

Init_EndS@      MACRO           ;; Close a INIT Segment
_INIT_  ENDS
                ENDM

Exit_Seg@       MACRO           ;; Open a EXIT Segment
_EXIT_  SEGMENT WORD PUBLIC 'EXITDATA'
                ENDM

Exit_EndS@      MACRO           ;; Close a EXIT Segment
_EXIT_  ENDS
                ENDM

CVT_Seg@        MACRO
_CVTSEG SEGMENT WORD PUBLIC 'DATA'
                ENDM

CVT_EndS@       MACRO
_CVTSEG ENDS
                ENDM

SCN_Seg@        MACRO
_SCNSEG SEGMENT WORD PUBLIC 'DATA'
                ENDM

SCN_EndS@       MACRO
_SCNSEG ENDS
                ENDM

Header@ MACRO
Code_Seg@
Code_EndS@
Data_Seg@
Data_EndS@
BSS_Seg@
BSS_EndS@
        ASSUME  CS:_TEXT, DS:DGROUP
        ENDM

;[]------------------------------------------------------------[]
;|                                                              |
;|      Segment Definitions                                     |
;|                                                              |
;[]------------------------------------------------------------[]

IFDEF __C0__

IFDEF __WINDOWS__
_TEXT           SEGMENT WORD PUBLIC 'CODE'
                ENDS
ELSE
_TEXT           SEGMENT BYTE PUBLIC 'CODE'
                ENDS
ENDIF

_FARDATA        SEGMENT PARA PUBLIC 'FAR_DATA'
                ENDS

_FARBSS         SEGMENT PARA PUBLIC 'FAR_BSS'
                ENDS

IFNDEF __WINDOWS__
  IFNDEF __TINY__
  _OVERLAY_       SEGMENT PARA PUBLIC 'OVRINFO'
                  ENDS
  _1STUB_         SEGMENT PARA PUBLIC 'STUBSEG'
    		  ENDS
  ENDIF
ENDIF

IFDEF __WINDOWS__
NULL            SEGMENT PARA PUBLIC 'BEGDATA'
                ENDS
ENDIF

_DATA           SEGMENT PARA PUBLIC 'DATA'
                ENDS
                ENDS

_CONST          SEGMENT WORD PUBLIC 'CONST'
                ENDS

IFDEF __WINDOWS__
_FPSEG          SEGMENT WORD PUBLIC 'DATA'
                ENDS
ENDIF

_CVTSEG         SEGMENT WORD PUBLIC 'DATA'
                ENDS

_SCNSEG         SEGMENT WORD PUBLIC 'DATA'
                ENDS

_INIT_          SEGMENT WORD PUBLIC 'INITDATA'
InitStart       label byte
                ENDS
_INITEND_       SEGMENT BYTE PUBLIC 'INITDATA'
InitEnd         label byte
                ENDS

_EXIT_          SEGMENT WORD PUBLIC 'EXITDATA'
ExitStart       label byte
                ENDS
_EXITEND_       SEGMENT BYTE PUBLIC 'EXITDATA'
ExitEnd         label byte
                ENDS

IFNDEF __HUGE__
_BSS          SEGMENT WORD PUBLIC 'BSS'
BeginBSS      label byte
              ENDS
_BSSEND       SEGMENT BYTE PUBLIC 'BSSEND'
EndBSS        label byte
              ENDS
ENDIF


IFDEF __WINDOWS__

  IFDEF  __HUGE__
  DGROUP GROUP NULL,_DATA,_CONST,_FPSEG,_CVTSEG,_SCNSEG,_INIT_,_INITEND_,_EXIT_,_EXITEND_
  ELSE
  DGROUP GROUP NULL,_DATA,_CONST,_FPSEG,_CVTSEG,_SCNSEG,_INIT_,_INITEND_,_EXIT_,_EXITEND_,_BSS,_BSSEND
  ENDIF

ELSE

IFNDEF __NOFLOAT__
  IF LDATA
    IFDEF  __HUGE__
      DGROUP GROUP _DATA,_CONST,_CVTSEG,_SCNSEG,_INIT_,_INITEND_,_EXIT_,_EXITEND_
    ELSE
      DGROUP GROUP _DATA,_CONST,_CVTSEG,_SCNSEG,_INIT_,_INITEND_,_EXIT_,_EXITEND_,_BSS,_BSSEND
    ENDIF
  ELSE
    IFDEF __TINY__
      DGROUP GROUP _TEXT,_DATA,_CONST,_CVTSEG,_SCNSEG,_INIT_,_INITEND_,_EXIT_,_EXITEND_,_BSS,_BSSEND
    ELSE
      DGROUP GROUP _DATA,_CONST,_CVTSEG,_SCNSEG,_INIT_,_INITEND_,_EXIT_,_EXITEND_,_BSS,_BSSEND
    ENDIF
  ENDIF
ELSE
  IF LDATA
    IFDEF __HUGE__
      DGROUP GROUP _DATA,_CONST,_CVTSEG,_SCNSEG,_INIT_,_INITEND_,_EXIT_,_EXITEND_
    ELSE
      DGROUP GROUP _DATA,_CONST,_CVTSEG,_SCNSEG,_BSS,_BSSEND
    ENDIF
  ELSE
    IFDEF __TINY__
      DGROUP GROUP _TEXT,_DATA,_CONST,_CVTSEG,_SCNSEG,_INIT_,_INITEND_,_EXIT_,_EXITEND_,_BSS,_BSSEND
    ELSE
      DGROUP GROUP _DATA,_CONST,_CVTSEG,_SCNSEG,_INIT_,_INITEND_,_EXIT_,_EXITEND_,_BSS,_BSSEND
    ENDIF
  ENDIF
ENDIF ; __NOFLOAT__

ENDIF ; __WINDOWS__

ELSE

Code_Seg@
Code_EndS@
Data_Seg@
Data_EndS@
DGROUP GROUP _DATA

ENDIF ; __C0__

        PAGE
;[]------------------------------------------------------------[]

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -