找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 28484|回复: 11

DOS 4G big real Mode Demo code。

[复制链接]
发表于 2008-10-8 14:29:37 | 显示全部楼层 |阅读模式
刚学习的同学,有些还不会,我这里贴点C和asm的代码。只供参考。
* g+ c  D7 Z$ Z% _; A- U3 @/ `3 Z8 |0 F
这是C的
  1. /********************************************************************6 s; H; t" o+ Y, ]. \0 l
  2. *    File: DOS4G.H                                                  *+ T: g( z( Z+ w
  3. *       Compile with BC 3.1 ( Editor: Tab size = 4 )                *
    / K; f: i. U. q9 l+ R
  4. *                                                                   *
    : @: T* v3 @+ Z. _  U# _- ^
  5. *    ========================Title===============================   *3 S6 W# f) @" B
  6. *        这个函数是让系统进入DOS 4G模式                             *
    4 m: ^% a; E8 B* N
  7. *       程序参考了:陈家琪《DOS实方式下直接访问4GB》                *
    9 R: P2 [# Q  J) K
  8. *                                                                   *
    , i+ o/ ^+ x) y) r  O* Z
  9. *       使用: openA20(); set4gb();                                  ** r& Q9 i7 k- c4 y
  10. *                                                                   *
    . x! c  S) S7 G
  11. *   ===========================History==========================    *
    / m" [* E- b0 Q
  12. *    author: bini                                                   *
    * Z' t- m2 t3 z( ]
  13. *      date: 2004-11-30  Frist version.                             *+ ?$ v2 D$ q( D. l
  14. ********************************************************************/
    / x3 `7 k7 x3 c7 d+ L5 ]8 P" R

  15. " N7 }8 k7 m/ b+ e! g
  16. #include <conio.h>% p& H- ?8 M) J7 J5 `; S) S
  17. #pragma inline. i2 L, L8 X" o2 Z1 ^

  18. 9 P0 e8 ~# p% i7 x" [
  19. /***********************************************, k$ q. R2 @3 c; |
  20. *    两个GDT,第一个为系统使用,不管,默认为0   *
    3 `, B2 t0 x1 K& `
  21. *    第二个为一个数据段,没有代码段。           *% e* E6 q$ M, ~/ f' K9 G
  22. ***********************************************/4 v2 |3 S& h  F+ \6 b  u1 f
  23. unsigned long GDT_def[ ]={0,0,      /*系统使用*/# j7 ?: j9 J; b, ?- V0 Y
  24.                           0x0000FFFF, /* hi16bit( 0~15 ) is base low=0,
    2 E6 @. q7 S* @8 _4 _
  25.                                          low16bit( 0~15 ) is limit low=0xFFFF & t5 Q1 x5 L3 [
  26.                                       */
    - g6 l9 \- ~1 P# b
  27.                           0x008F9200};/* 最低字节为 base( bit 16~23 )$ a) @( H- t: j  b$ C# ?9 x7 n# f
  28.                                          最高字节为 base( bit 24~31 )% c7 I' E, ~2 i2 ~
  29.                                          9 a, w6 q: Q8 D
  30.                                          属性Attrib = 0x8F92
    & [6 g3 v! J3 K! V* Y
  31.                                          
    ; A% `+ Z# R  |/ L
  32.                                              属性位Hibyte低四位为 7 Z8 [8 O( D0 J' P1 ^( c6 p3 a
  33.                                                  Limit( 16~19 )=F
    . n0 F" O  U9 s; v' n* C
  34.                                              属性位Hibyte bit7 为粒度) g# E. k  V" X, d# u0 q+ j
  35.                                                  (值1=4KB粒度)
    + R* u/ S( O! l: d- J/ q+ }
  36.                                                  8F & 0x80 = 17 t( X" Z. s. g* P  ^
  37.                                                  , b. g. L2 X) N- J6 p+ ]: z
  38.                                              属性位Lowbyte低四位为段类型,值=2( H; l) C6 x; A, B6 s3 `
  39.                                                  表示为可读/写段7 P7 p% t, P1 z
  40.                                              属性位Hibyte高四位=9,bit3=1表示:
    * h! t! D. o" W1 o0 e9 q. x8 B) F
  41.                                                  描述符对地址转换是有效的。7 g- y3 E4 Q( M" j. x8 i
  42.                                                  bit0=1表示为:
    ( D( y' T9 t4 B- o7 @2 d/ h
  43.                                                  系统段描述符。而不是门描述符。& C/ D, V( L! M/ Z
  44.                                              
    * K7 `$ |% B# H2 w% I
  45.                                          */' n/ k& [$ Q/ k: q
  46. - f& G( V4 ]' x% K; h) A
  47. /****************************************
    ) t! P- E$ M, D- B9 k% q3 ?0 x7 B, o2 `
  48. *    GDTR寄存器, 48bit=6bytes            *- [% a/ x- q+ C% F
  49. *    +-------------------------------+   *
    # {# R) _$ |: B. r
  50. *    |   32bit基地址       |16bit界限|   *
    ( {3 z8 F. V* p) s7 Z( O4 _! o
  51. *    +-------------------------------+   *
    2 o* W% ^1 W2 J1 e$ T
  52. ****************************************/, |& \; }8 E0 l: Z
  53. unsigned char GDT_Addr[6]={0};" _* d/ }) ]% ~, y  i2 ?
  54. ) B) A% u4 r" @- E0 |& e
  55. /****************
    / U" c. D3 D  E% R) u6 D
  56. *    打开A20门    ** P5 e6 \( m/ u  I3 c" |
  57. ****************/
    " O6 n4 ~# S! X
  58. void openA20(void)
    * a) K" Z% ~" X* G4 L
  59. {4 V6 m# c! [- v9 ^; O2 U
  60.     asm{- k. h2 h9 j! x4 s! Z
  61.         pusha, y. o0 O: v3 r) {) E! P
  62.         in         al, 92H
    : o$ F& h7 X0 K$ w
  63.         or         al, 0x02
    0 B: I/ N$ _% R6 |" H9 [# [% k' m. E
  64.         out        0x92, al
    * @# l- Q) N8 x8 y4 i
  65.         out        0xed, al
    0 v1 |5 N9 z/ d
  66.         popa4 b: ]7 Q# U5 M# L* c$ i' W# n
  67.     }. b$ p# r" l2 b" Y3 y$ y. o
  68. }5 S$ I' J! k& k

  69. : r) M9 i& y3 r# ^* V
  70. /***********************************************  J+ a4 Z* Z% V$ s$ N
  71. *    函数功能:进入DOS4G                       *4 N6 t1 Q8 }" e+ q( m  W# w
  72. *    ====================                      *
    + D1 ]( e! ]2 H- v& n! V# M" N
  73. *                                              *5 t4 C& A4 [- x- z+ Z5 Z
  74. *    GDT描述符界限计算方式:描述符个数*8-1     *
    / `4 P9 h( p. `. b0 z
  75. *   如:                                       *; _, j  B7 T% [  K$ ^
  76. *        mov    word ptr GDT_Addr[0], (2*8-1); *
    / H* J, E, [4 y. w* f
  77. *       表示为 2个GTD                          *  O- f; {: E2 B1 d1 D
  78. *                                              */ v* q  B+ q5 P% M# q
  79. *    选择子为所在描述符内的字节偏移。          *$ h- U( l: w" l& F0 {1 M
  80. *                                              ** X/ K& v& ]# q# u
  81. ***********************************************/
    $ O% y# U, n/ t& R/ j  S- l! |. s
  82. void set4gb(void)
    ; t. Z: \9 J5 K
  83. {
    & r/ p7 a/ {$ ?, x% J$ q5 a
  84.     asm{* h% A+ O$ P$ X. K
  85.         cli
    2 G" x  h8 J/ u0 d6 r
  86.         /****************************************" E+ u  h$ _3 K9 ~8 ?, o
  87.         *    GDTR寄存器                          *+ t0 Z' Q+ a2 _# T0 O
  88.         *    +-------------------------------+   *
    ( n& y  _; f, F/ F$ m3 E
  89.         *    |   32bit基地址       |16bit界限|   *
    " A7 |/ F* \+ ]* b0 ?% I7 e* w+ B
  90.         *    +-------------------------------+   *
    . j6 Z" V5 a( b+ I- p
  91.         *****************************************/
    ! Y% L# j8 b" {
  92.         /*********************
    # g: M# U. a) N+ v
  93.         *        得出段界限       *
    9 A$ a+ `* p* V+ d' G8 W
  94.         *********************/
    - A9 N2 k; t5 q" d! i, d
  95.         mov        word ptr GDT_Addr[0], (2*8-1);4 ]; W/ G) c) {  N( Y0 `% X
  96.         /********************************************5 j2 X: p  l  X3 {5 Y# b& l/ P
  97.         *    计算GDT表的32位基地址,存入GDTR        *. W3 v4 ?4 x" q) A1 Y0 I/ z( V
  98.         ********************************************/+ g* i* O+ i! h9 J! u% W! N- c
  99.         mov        eax, ds  m. M& N9 [4 F2 E; j
  100.         shl        eax, 4
    6 k/ ]# N. d' r5 a) b
  101.         xor        ebx, ebx
    7 L$ v# ~" i- V6 K; q0 S
  102.         mov        bx, offset GDT_def
    8 W1 _9 |/ d/ ?" E
  103.         add        eax, ebx
      @# Q1 m0 |( H
  104.         mov        dword ptr GDT_Addr[2], eax, f: b- \/ u# M$ e, ]
  105.         lgdt       fword ptr GDT_Addr
    ' m  i' n  B1 P9 r: w8 A
  106.         /********************
    3 a! K) i7 T$ o+ v0 u
  107.         *   选择子偏移      *
    ' I4 h& c; D! x3 I" C  O
  108.         ********************/
    ; a8 ~% w& s5 v
  109.         mov        bx, 8  ]4 x4 u6 J2 N
  110.         mov        eax, cr03 o, ]! Z6 V- @: S  q
  111.         or         al, 1
    1 k2 I' F: V7 P
  112.         /**********************/ f  K1 R0 F% p/ a, W1 A% `' J
  113.         *     进入保护模式    *
    / Z+ N: R4 S( D/ H. |- e3 \' Y. ^  r0 Z
  114.         **********************/8 S9 C0 f3 Z: W5 A
  115.         mov        cr0, eax
    7 S1 \  E& n- M2 g/ y/ v
  116.         jmp        pMod
      ?, c6 T1 B5 ?( {' h5 C
  117.     }
    4 F& ~9 P! K. o- s- R( b, ?

  118. . M! z$ B% D- _$ c4 E9 ]2 P
  119.     pMod: asm{
    ' Y# d5 j  W' A" ^
  120.            /************************************************************
    . ]# P9 V" [6 d) ]$ r( }
  121.            * 让fs与gs加载选择子,使其能访问 0xFFFFF * 4K (4GB) 空间    *
    7 K; C. n2 G6 }) M# i+ m% w' L$ X
  122.            ************************************************************/
    9 i0 M8 _* u1 ~+ \2 t
  123.         mov        fs, bx! w; R6 f( o6 `* e5 n4 R
  124.         mov        gs, bx7 j+ J. H4 x+ R$ i7 F! I) x% W- \
  125.         and        al, 0x0FE7 |( ]& \, X' v8 s$ U/ Y# v9 A& q
  126.         /******************6 d- s6 G- g" c
  127.         * 进入实模式      *
    & a# o: |* P* {
  128.         ******************/
    " q% V5 V% f' h7 u
  129.         mov        cr0, eax
    % N! k/ p- K) ]6 [8 T. ^. H
  130.         jmp        rMod
    . ^9 a' a% Q  l& H0 _9 n' U
  131.        }, p) B' r8 R- x8 v" E' k
  132. # O( B. M0 R4 G) c5 Z  P
  133.     rMod: asm{0 u! H& y& ~, P! _! F& b
  134.         /* ******************************************************************- A% j5 e/ B& c  ^" ?  m. U/ x4 B
  135.         * 退出,fs、gs清0,访问系统内存可用: gs[32位,相对于0的偏移地址]     *
    / f  ^2 q$ u" r0 F$ x! E
  136.         ********************************************************************/, ?8 Q) I4 h6 M+ i: A
  137.         mov        ax, 0
    5 S9 e7 e8 ]0 T; A( l4 @$ l# D
  138.         mov        fs, ax
    7 H& }7 x" C9 S# M# H) y
  139.         mov        gs, ax
    0 @) p0 I% R( D3 @6 O. W# _  a' I
  140.         sti
    # D% @! ~% @" j8 y- q
  141.     }$ z  I- z( ]2 ^1 q$ R( y
  142. }
复制代码
这是asm的
  1. ;/********************************************************************
    ' [, m0 j3 e: J7 j. D  ]
  2. ;*    File: DOS4G.asm                                                *  @9 B- ?' n6 W8 ?3 y# |+ X9 ~, n
  3. ;*       Compile with masm ( Editor: Tab size = 4 )                  *
    - N4 ]4 w8 g1 I! }
  4. ;*                                                                   *6 Y& ?7 g6 F+ g- d% B
  5. ;*    ========================Title===============================   *4 j& q9 P/ g5 D8 b1 p
  6. ;*        这个demo是让系统进入DOS 4G模式,进行数据访问               *
    ' S& h0 x3 X: @8 O, f8 e! R
  7. ;*                                                                   *( K/ M$ A4 V. @7 z
  8. ;*   ===========================History==========================    *
    5 U: b# y) q0 r" \
  9. ;*    author: bini                                                   *9 V9 h" i  ~3 F
  10. ;*      date: 2008-10-08  Frist version.                             *1 E4 X, X; H- M2 i6 ^/ I% |7 \1 f
  11. ;********************************************************************/
    / }" B% f5 A0 [$ ?1 G' e7 W, X
  12. .model small
    ; @. ~. N0 T2 R8 B. x7 X( i) |
  13. .586p5 v0 T/ u0 N% j5 G/ @  x  r6 ^

  14. : m, K. r1 p" S4 n; b
  15. DSEG  SEGMENT   USE16                 ;16位数据段
    ( j; P9 ?& s% x

  16. . o+ T& [1 J( R3 U! }2 `' c
  17. DESC            STRUC% I- \+ w% x6 o, u5 m
  18.         LimitL          DW      0 ;段界限(BIT0-15)
    ; f* k& D: j; M  i. O! ]
  19.         BaseL           DW      0 ;段基地址(BIT0-15)
    / E) v/ q! M$ m
  20.         BaseM           DB      0 ;段基地址(BIT16-23)" `) o0 s9 Z; Z' `
  21.         Attributes      DB      0 ;段属性8 Z! f; \1 L5 M, R& |% {; d7 I
  22.         LimitH          DB      0 ;段界限(BIT16-19)(含段属性的高4位)
    ; Q  S4 o& L/ F# g
  23.         BaseH           DB      0 ;段基地址(BIT24-31)
    $ Q5 v/ Q, o5 k5 v9 D
  24. DESC            ENDS
    6 n$ N0 v! i" B: j$ |& `

  25. 8 H9 L* E4 C% l  v
  26. PDesc           STRUC' m. G$ Y8 \4 q# s4 w
  27.         Limit           DW      0 ;16位界限5 t, d  Q5 r# E. X' w, G
  28.         Base            DD      0 ;32位基地址
    ! W% A  ]3 A( ~5 _; _$ V! g8 x5 e
  29. PDesc           ENDS" N8 D( k; |$ X( g

  30. 7 v4 q9 R  z$ g1 w0 n3 w# X
  31. GDT_def         Label   Fword8 p- O5 M$ _) z/ s+ k
  32. Null_Desc       DESC    <     0h,  0h, 00h, 00h, 000h, 0>' B/ Z  q6 l: K; b, A# s( f1 j* q
  33. Data_Desc       DESC    < 0FFFFh,  0h, 00h, 92h, 08Fh, 0>
    & U9 \# w, R: o" I# h7 v

  34. + a+ \3 q4 B! f
  35. GDT_Addr        PDesc   <$-GDT_def-1, >
    ; K: a: h* m, p1 ?: b  T
  36. DSEG            ENDS                          ;数据段定义结束
    " L) U' [" e; X, v! Q& ?( }
  37. 2 F0 j  n2 c3 A& U# }
  38. CSEG            SEGMENT USE16                 ;16位代码段
    ' {& n  ~+ t1 N# J; T' X, i
  39.                 ASSUME  CS:CSEG,DS:DSEG
    ; @! a! K' ?4 I9 o. w+ \& @7 _6 o
  40. .Startup$ b/ a3 X* l) c' w; p
  41.         call      Set4gb9 f- }- ^( ]9 e6 w8 Q0 g* w
  42. ;
    2 i  S( i, I, T0 }+ b; E( U
  43. ;       fs, gs即能访问4GB空间3 a3 R) Q& x" R2 V  F
  44. ;       write your code in here.* {' o$ Y+ |" F4 {; N, r2 J! F
  45. ;
    8 v1 s3 {. @! G3 A- S' e
  46.         .exit
    - O1 N9 X2 K/ [
  47.           ~0 ~0 B. T4 k3 e' T$ c
  48. Set4gb          PROC      NEAR. A" F6 r: Z* f, z% t6 k
  49.         in        al, 92h
    ; J$ o4 ~1 t8 }
  50.         or        al, 002/ s  O5 `+ x+ f" M" Z5 w9 P' W
  51.         out       092h, al
    5 L& u* ^1 [, A9 w
  52.         out       0edh, al* B; |# W7 v: m
  53. 7 f! e% d, p% ?. e
  54.         cli
    * u( j9 d, h% t1 D+ r

  55. # l: {  E( @' m2 [
  56. ;        mov      word ptr GDT_Addr, (2*8-1);: G. O, g# [: }* P- t
  57. " Y3 c1 o  A$ A* n6 C
  58.         mov       eax, ds* x# W2 Z  H$ M  |
  59.         shl       eax, 4" N! z1 D" X  H& G7 O+ E# l, M! b
  60.         xor       ebx, ebx* x# Z' x% ]& |  k$ m. k
  61.         mov       bx, offset GDT_def  I$ d& U2 y" M# d. @
  62.         add       eax, ebx
    ) p; q$ W, [2 t) i) ?
  63.         mov       dword ptr GDT_Addr.Base, eax2 A7 |' s+ H* w4 n0 d5 e
  64.         lgdt      fword ptr GDT_Addr
    # E: q+ r, t8 Z1 H7 A

  65. & o9 x9 U# X& b. G8 {6 p6 B1 W( N7 j
  66.         mov       bx, 83 X% g1 c8 D( t! z5 n8 P0 i
  67.         mov       eax, cr0
    8 e8 A, E1 X/ [- Z2 N* U
  68.         or        al, 1  u2 b% c- P" L# \2 n* F7 \
  69.         mov       cr0, eax
    ( x/ f, K* u) ]6 Q- E

  70. ) u! a" F+ I9 c# ~
  71.         jmp       pMod2 }6 y& z# K( i+ w8 F' X$ u' c
  72.     pMod:
    - m, e7 f" k8 E5 {  f' O

  73.   U& J2 n/ Y+ L% W6 m
  74.         mov       fs, bx
      D' Z( l& N) M- C3 b( _
  75.         mov       gs, bx( b" T' h  }& U. J4 y
  76.         and       al, 0FEh. n* o- a  C4 u! m; Z
  77.         mov       cr0, eax$ P1 s( A1 g8 z6 s' W
  78.         4 O5 o7 v5 u# O4 l, L
  79.         jmp       rMod
    ( s- [8 T8 {  `6 N0 e
  80.     rMod:
    * a  p/ l! z. e1 V! J' `! r
  81. & [* S1 |, ~6 T" \4 S
  82.         mov       ax, 0
    - q5 b% _' v# L4 b. T4 z$ N
  83.         mov       fs, ax
    + N9 q3 e  d* l- _6 a2 P/ C2 `
  84.         mov       gs, ax
      c5 l6 f; l" H# C" {! w
  85.         
    ; x4 v3 G  \: B0 W4 G
  86.         ; 在2M的位置测试写一下数据, e% K+ j0 {5 ]7 b& H
  87.         mov       esi, 200000h9 {' i3 ^. w- E
  88.         mov       dword ptr fs:[esi], 055aa55aah
      V; t. y. M4 S# C' H: Y
  89.         ; 用RU去看看200000h的位置是否是此数据...." \2 r" |- X0 e6 ]- p
  90. ( }; E3 u* ]% U
  91.         sti
    0 e) t  ^0 J; J* d, x
  92.         ret% i8 m$ V  x7 O" X+ m% d
  93. Set4gb  ENDP% W0 v+ y' l& w! P5 I7 t
  94.        / [0 Q# V5 @0 D1 L$ ~4 d0 H7 q( ]
  95. CSEG           ENDS                              ;代码段定义结束6 z; C3 R' q5 Y, `' Z* Y
  96.         end
复制代码
发表于 2008-10-14 14:48:07 | 显示全部楼层
学习,学习了,楼主辛苦了
回复

使用道具 举报

发表于 2008-12-15 17:20:53 | 显示全部楼层
有一个问题,我用BC31为什么没法编译32位的汇编指令呢?要设置哪儿吗?
回复

使用道具 举报

发表于 2008-12-18 17:11:16 | 显示全部楼层
option->compiler->advanced code generation中的instruction set选 80386  l" j# j4 w$ \# f

/ f# j8 ?, U1 `option->compiler->code generation中的option选中, [X] compile via assembler4 {/ T8 p. h) ]3 T2 ]$ \; Y) \9 C, ~

! o) p, m6 ?- p$ e2 b: M* W[ 本帖最后由 happybasic 于 2008-12-20 15:41 编辑 ]
回复

使用道具 举报

发表于 2009-6-4 20:55:40 | 显示全部楼层
太强了 学习 只是更新的比较慢哈 谢谢了
回复

使用道具 举报

发表于 2009-6-5 11:04:27 | 显示全部楼层
Undefined symbol: &LT
回复

使用道具 举报

发表于 2009-6-8 17:07:20 | 显示全部楼层
Null_Desc       DESC    &lt;     0h,  0h, 00h, 00h, 000h, 0&gt;9 y1 |: W6 v2 ]1 w; m+ }% w, H
Data_Desc       DESC    &lt; 0FFFFh,  0h, 00h, 92h, 08Fh, 0&gt;
5 h; Y6 y9 ?( G# G) z6 H
7 H$ ?: v" T/ d' D7 ~9 R! tGDT_Addr        PDesc   &lt;$-GDT_def-1, &gt;
' g1 w* W9 o$ b 替换如下,2 e8 \- V4 F* O4 L, L
Null_Desc       DESC    < 0h,  0h, 00h, 00h, 000h, 0>
0 N: j8 U; q# _5 |9 U0 NData_Desc       DESC   <0FFFFh,  0h, 00h, 92h, 08Fh, 0>2 f" D" s: P& \4 s4 j* @# X
& \0 G+ T& t% @, T0 }6 w
GDT_Addr        PDesc   <$-GDT_def-1, >" z4 t. @/ _5 \" N
这样你就能编译通过并且可以运行
回复

使用道具 举报

发表于 2009-6-9 11:23:21 | 显示全部楼层
替换了就OK.Thanks
回复

使用道具 举报

 楼主| 发表于 2009-8-1 00:44:39 | 显示全部楼层
这个是Discuz的Bug.有空翻出来改改看。发代码<>符号被Discuz 在[ code ]里变成HTML的东西.
回复

使用道具 举报

发表于 2010-2-26 10:47:24 | 显示全部楼层
原帖由 happybasic 于 2008-12-18 17:11 发表 ; x  ~; }+ K2 _+ i
option->compiler->advanced code generation中的instruction set选 80386
. G1 q4 x+ m. V4 a3 H# D) Y9 B+ r6 @5 D' ?
option->compiler->code generation中的option选中, [X] compile via assembler

4 Z. g8 H6 \$ m   作了上述设置之后还是不行,编译的时候提示: cannot find executable: TASM. 我换了几个版本的TASM还是没用,除非拿掉含有32位寄存器的那些code才行。这个是什么原因,请各位大侠多多指教
回复

使用道具 举报

发表于 2010-4-12 10:27:08 | 显示全部楼层
原帖由 A_jack 于 2010-2-26 10:47 发表 % R. f$ A' L- H6 K+ V: Z- X
; m2 _/ o: D: W
   作了上述设置之后还是不行,编译的时候提示: cannot find executable: TASM. 我换了几个版本的TASM还是没用,除非拿掉含有32位寄存器的那些code才行。这个是什么原因,请各位大侠多多指教 ...

& N$ @4 P* K* v' r0 [3 S/ l
3 u$ m" S/ ~5 @. P5 \4 s我也是相同的问题,请问哪位有解,谢了!
回复

使用道具 举报

发表于 2011-2-21 21:04:39 | 显示全部楼层
option->compiler->Transfer 设置TASM的路径,就不会提示找不到TASM;9 ]/ k, ^" u" [, I9 F. ?
还要把TASMMSG.exe拷贝到源代码(工程目录),就可以编译完成了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

Archiver|手机版|小黑屋|计匠网

GMT+8, 2025-6-17 07:46 , Processed in 0.042029 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表