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

DOS 4G big real Mode Demo code。

[复制链接]
发表于 2008-10-8 14:29:37 | 显示全部楼层 |阅读模式
刚学习的同学,有些还不会,我这里贴点C和asm的代码。只供参考。% G% b0 `# g. j
3 [" N) V8 R9 i' |, _
这是C的
  1. /********************************************************************2 ~9 l. }9 W: m# o4 Z4 E
  2. *    File: DOS4G.H                                                  *) W+ F% x' ^4 j2 H
  3. *       Compile with BC 3.1 ( Editor: Tab size = 4 )                *! D" `% W1 u9 x# ~
  4. *                                                                   *
    2 H& R& S( v) M7 j' v- a! `# N; @
  5. *    ========================Title===============================   *8 a9 \* g+ X) ?/ g2 i: b
  6. *        这个函数是让系统进入DOS 4G模式                             *
    " a% h& j! M7 i; W; n
  7. *       程序参考了:陈家琪《DOS实方式下直接访问4GB》                *0 r. k; u7 j; H
  8. *                                                                   *, s7 s# H$ X: D
  9. *       使用: openA20(); set4gb();                                  *% k; c3 ?6 U# ^& ]0 x7 t3 A9 w! @$ \
  10. *                                                                   *
    9 l' L3 z. p$ G+ f! m! O* ^0 k
  11. *   ===========================History==========================    *
      J+ R6 I+ c& ?8 V
  12. *    author: bini                                                   *
    0 o8 ~4 E4 H# r& j: ]6 W' Q& v  [# v* A
  13. *      date: 2004-11-30  Frist version.                             *
    * p# a0 B3 c' t+ a$ y
  14. ********************************************************************/
    ) V: t: N7 y. b5 M7 l! B: j0 L
  15. ( d9 d; n/ I2 O1 ?
  16. #include <conio.h>* x0 T9 H# w9 F: y+ G: u  [7 G" k: @
  17. #pragma inline
    + A; B  Y2 t( F3 x! A* m

  18. ; G; h! ~% U" S' c9 M. i
  19. /***********************************************+ |1 O0 U; K/ ~' ~/ C' v) f7 B1 S
  20. *    两个GDT,第一个为系统使用,不管,默认为0   *2 G+ x' X8 O0 J& K  ]3 K. D2 P  c
  21. *    第二个为一个数据段,没有代码段。           *
    - [6 G" ~9 H+ d. l+ S
  22. ***********************************************/9 F. r8 J) L" _
  23. unsigned long GDT_def[ ]={0,0,      /*系统使用*/; f3 a- g( P+ Q" x2 S2 k
  24.                           0x0000FFFF, /* hi16bit( 0~15 ) is base low=0,
    ( r' J2 y# G4 t- t
  25.                                          low16bit( 0~15 ) is limit low=0xFFFF 0 y2 ^: a% [1 u! I
  26.                                       */
    + @% f3 c5 H7 \8 ]& r/ S5 G: K
  27.                           0x008F9200};/* 最低字节为 base( bit 16~23 )
      w' r* k% K& r* X
  28.                                          最高字节为 base( bit 24~31 )
      q) m6 P: `7 i: ^0 x
  29.                                          1 b9 Y" ?# z, l% B8 k
  30.                                          属性Attrib = 0x8F92( D- @! v- N8 A( \* ?1 y4 N/ @3 k
  31.                                          
    4 q5 Q5 U6 G# P- n
  32.                                              属性位Hibyte低四位为 ) {6 M* O& p, r: Y% `7 i
  33.                                                  Limit( 16~19 )=F
    ( R5 z2 t+ s7 i; b1 g
  34.                                              属性位Hibyte bit7 为粒度
    - e$ p1 S$ d7 [$ e9 p; w) l
  35.                                                  (值1=4KB粒度)& l+ `3 ~. `7 _0 W6 d
  36.                                                  8F & 0x80 = 1
    , r2 e& Y0 \3 O# Q" ?
  37.                                                 
    4 B! D, F- R4 d$ Q& g
  38.                                              属性位Lowbyte低四位为段类型,值=2) c0 Y" U. d; s* B, W+ c
  39.                                                  表示为可读/写段7 ~2 j4 o7 ?6 b
  40.                                              属性位Hibyte高四位=9,bit3=1表示:6 b% x9 A# V% j4 ^
  41.                                                  描述符对地址转换是有效的。
    $ X* q! h1 o% ~
  42.                                                  bit0=1表示为:& P5 ]6 \9 K2 z0 W) k
  43.                                                  系统段描述符。而不是门描述符。( B6 U5 J$ ~' D/ j
  44.                                              % K0 G$ Q1 z% ^2 G, q
  45.                                          */( Y% n. o$ Q+ P' R$ {$ W. ~+ [9 r
  46. 2 a" ^$ }9 K# d
  47. /****************************************
    : c  d& T: P, q+ N! d9 I( L
  48. *    GDTR寄存器, 48bit=6bytes            *9 _7 P, `1 K" s5 Z) l$ L# q
  49. *    +-------------------------------+   *' I/ {) g; z0 W. ~8 S* u- M
  50. *    |   32bit基地址       |16bit界限|   *) W7 }$ Q, O: k& R+ A
  51. *    +-------------------------------+   *+ g: ]9 e/ j+ t8 i* b5 Y
  52. ****************************************/7 d6 I. d3 g$ P. W/ \
  53. unsigned char GDT_Addr[6]={0};
    3 Z  G: e  K8 O/ a6 x

  54. ; p6 k$ ~$ O2 ~
  55. /****************$ L2 a$ z, n/ H; ]
  56. *    打开A20门    *
    . M+ ^# |+ g1 ~* y3 ^: O
  57. ****************/
    * L/ F% {1 u% {1 j- {8 y9 d( e
  58. void openA20(void)
    * b; I; Q- v! \4 h/ K7 S' X
  59. {; A! F; r- H+ B& x
  60.     asm{$ |# o$ C6 n2 ~
  61.         pusha
    / w; H$ L# S9 e) L# z' V  _
  62.         in         al, 92H6 O0 [; J4 O0 N; W
  63.         or         al, 0x02
    " W4 ]* U% f! b2 R
  64.         out        0x92, al
    * H) \# F/ a; I, [) E! o; H7 M
  65.         out        0xed, al
      Y1 r8 A4 j  _5 D. X
  66.         popa/ ~- k2 g' K1 a
  67.     }
    3 z6 k8 R' y: O- n" Y; B
  68. }3 f$ ]) }7 p- e- Q
  69. 7 m  K6 ?% e! _& j: \' d) v
  70. /***********************************************7 L  k7 n! i% J4 I8 w. r% |0 |
  71. *    函数功能:进入DOS4G                       *
    ; k$ I, j" k+ _% b
  72. *    ====================                      *: r0 p2 @' |0 e0 V" e* I- A' I
  73. *                                              *
    $ \8 U, i9 h; Z0 \/ q+ W0 }  L4 {
  74. *    GDT描述符界限计算方式:描述符个数*8-1     *
    ( d. l* y7 O5 r1 g" o' X2 `  D
  75. *   如:                                       *$ R% P5 g! h5 {
  76. *        mov    word ptr GDT_Addr[0], (2*8-1); *, ^4 u' s! w; F" a
  77. *       表示为 2个GTD                          *0 I  C. z( G( M' R6 o
  78. *                                              *
    ! h( w# N" M6 p
  79. *    选择子为所在描述符内的字节偏移。          *
    8 }3 S$ }( J, G3 R
  80. *                                              *" n- g4 {* I8 [
  81. ***********************************************/. k* h$ F4 n$ N; P; N1 w. `
  82. void set4gb(void)
    & D8 s8 H- s  |+ q  Z9 e
  83. {- W2 r/ H6 ^0 M7 T
  84.     asm{
    9 E$ P6 F( ?1 ~
  85.         cli' C: c4 A% E# o/ |
  86.         /****************************************! n6 ^6 a% u7 _
  87.         *    GDTR寄存器                          *
    . d( r+ r8 T  f3 v& u5 ~
  88.         *    +-------------------------------+   *
    % r, ~4 M6 t  V1 _7 b; A) y6 w/ |
  89.         *    |   32bit基地址       |16bit界限|   *' @' w4 d$ V8 p! {- ]6 E
  90.         *    +-------------------------------+   *, R5 U2 ]1 n8 j4 E
  91.         *****************************************/
    4 z7 ]! p  T9 q3 Y" t
  92.         /*********************
    / {& F, a. O) ~% a2 n# }- e1 l! p
  93.         *        得出段界限       *+ X$ ]1 N4 l" M
  94.         *********************/3 Y9 }$ q" P/ ?! f$ e9 [  g4 h/ Q
  95.         mov        word ptr GDT_Addr[0], (2*8-1);& Y+ E& a# Y1 L  r
  96.         /********************************************
    * I6 U4 e6 i. z$ I4 w3 T
  97.         *    计算GDT表的32位基地址,存入GDTR        *
    1 Q9 n' Z& }4 B" }$ d$ z
  98.         ********************************************/
    ! e) Z- T/ s* ^4 @1 |
  99.         mov        eax, ds
    4 w3 u* E8 _. x. C! w6 n$ y
  100.         shl        eax, 46 M/ G! @1 @7 _
  101.         xor        ebx, ebx/ }6 }: f, B! v5 ?& g
  102.         mov        bx, offset GDT_def
    + b2 l3 V- v+ l% `$ u
  103.         add        eax, ebx' B5 M1 A* E: x2 x6 n
  104.         mov        dword ptr GDT_Addr[2], eax, v) U7 \& d/ l9 J
  105.         lgdt       fword ptr GDT_Addr
    + `, C+ M& V0 H8 E
  106.         /********************) q& D: O3 M9 m8 \8 w. O- l
  107.         *   选择子偏移      *
    7 p2 R! E1 A* y. Y4 a$ r. g8 B
  108.         ********************/3 w# ^* q2 g8 j, \' V8 ~' h. L
  109.         mov        bx, 8
      D0 R6 W9 X' w# |* ~8 R1 S  a
  110.         mov        eax, cr04 R4 R+ i5 c1 J: c5 S' f0 u
  111.         or         al, 1
    , J% D/ ~+ z" J  L, p, E
  112.         /**********************6 o. e0 O( F1 s" M* Y  ^+ C1 W4 j+ L
  113.         *     进入保护模式    *# ]( ~4 r' T9 v6 h+ B* U
  114.         **********************/
    % C, j, s% u* X2 s1 V" I) B
  115.         mov        cr0, eax; p, n  F( w/ j
  116.         jmp        pMod
    ! m; y  R6 P; H, X% e/ Y
  117.     }4 l& ^0 h" _+ N

  118. 5 \8 Q! ^& w+ f% U
  119.     pMod: asm{
    & P3 W* [% H( }& r  `( r
  120.            /************************************************************
    + U8 t( H. {( ~$ e( w6 A/ G* t
  121.            * 让fs与gs加载选择子,使其能访问 0xFFFFF * 4K (4GB) 空间    *
    ' H! `. K+ O; G+ L8 N+ c+ |3 D
  122.            ************************************************************/
    . ?9 `( f# g* W3 ^3 q! Z* s2 D
  123.         mov        fs, bx: L/ t" r5 J, t8 F4 q; m
  124.         mov        gs, bx( `( K; X) a( E- ~) C9 L4 Z
  125.         and        al, 0x0FE. t5 _8 a% p, i, s* M7 U
  126.         /******************5 H, |2 R! ^( w
  127.         * 进入实模式      *8 d4 i# _( V9 h
  128.         ******************/
    3 P! n$ @; _/ i6 E
  129.         mov        cr0, eax
    ! p1 \3 R& V% y9 K2 D0 f" M
  130.         jmp        rMod
    , A& c4 P  P. E( j
  131.        }
    7 G3 n0 M# b6 O3 X
  132. 7 n& A& H; q( q' p/ n
  133.     rMod: asm{  R% [9 |7 O) h& j& i; H/ y
  134.         /* ******************************************************************1 s- C" I% a' v* P8 z) i
  135.         * 退出,fs、gs清0,访问系统内存可用: gs[32位,相对于0的偏移地址]     *
    + O  p3 Q% f/ ?' ?8 Y( _8 g. o
  136.         ********************************************************************/+ K& O: H; [7 M$ B7 ~
  137.         mov        ax, 0* ^3 C3 E: W+ z% w+ P1 \3 d3 v# `
  138.         mov        fs, ax4 }5 E9 w& k0 F# h
  139.         mov        gs, ax% K- p/ s. S& l5 T
  140.         sti
    ; t1 |; b# K* Y1 Y! T
  141.     }: M7 }. G; ?5 B8 V& o! U
  142. }
复制代码
这是asm的
  1. ;/********************************************************************
    . G: v0 u/ R& `
  2. ;*    File: DOS4G.asm                                                *( G/ g# i* I. |
  3. ;*       Compile with masm ( Editor: Tab size = 4 )                  *
    1 D& M3 M9 h0 }* E/ u/ {5 E- l
  4. ;*                                                                   *8 `) f9 D& V. P# {* f& n% }# f& h
  5. ;*    ========================Title===============================   *
    $ ?- g9 R2 S5 `" O- i: }
  6. ;*        这个demo是让系统进入DOS 4G模式,进行数据访问               *# s! i/ P2 _6 Q+ ^% P6 r& c! H! u
  7. ;*                                                                   *
    6 P" q8 G' Q6 H; w
  8. ;*   ===========================History==========================    *
    ' m  D- ~1 ?3 ~" x- a- }
  9. ;*    author: bini                                                   *1 ~3 t! K1 V$ M$ B
  10. ;*      date: 2008-10-08  Frist version.                             *
    % o9 W& m9 Q, E$ R+ d
  11. ;********************************************************************/
    / j8 @# X- b0 c8 w
  12. .model small, Q' Z+ W) `; T& K9 P
  13. .586p
    ) A9 c9 H' x6 k# ^
  14. # T  a7 [  Y. g4 t4 G  M, t
  15. DSEG  SEGMENT   USE16                 ;16位数据段
    8 w* j7 B# f/ h
  16. . _" g( g8 N8 \6 x! w' v+ _, h
  17. DESC            STRUC
    # R6 z: k: i( `: e
  18.         LimitL          DW      0 ;段界限(BIT0-15)
      A2 w6 [4 i1 |2 L$ o
  19.         BaseL           DW      0 ;段基地址(BIT0-15)9 @  Q1 @& W+ V/ x. J1 s
  20.         BaseM           DB      0 ;段基地址(BIT16-23)1 h* @' N. B4 j$ K" r! T
  21.         Attributes      DB      0 ;段属性
    2 ?9 g- N7 A7 A% T9 o
  22.         LimitH          DB      0 ;段界限(BIT16-19)(含段属性的高4位)
    5 b/ x, a0 u9 c( f
  23.         BaseH           DB      0 ;段基地址(BIT24-31)
    2 U8 {+ m. X5 Q9 |+ d9 U
  24. DESC            ENDS
    2 n! H; K, A8 E: w$ k: M, F) h

  25. 0 n9 t& O* T4 p9 `1 a4 t
  26. PDesc           STRUC4 P0 J. u2 o- p
  27.         Limit           DW      0 ;16位界限$ @5 ~/ A$ D/ j3 c$ K
  28.         Base            DD      0 ;32位基地址
    $ `4 z6 D5 R0 ]- }( d7 W' P* z  z
  29. PDesc           ENDS
    6 o9 ?/ R" v( j5 S
  30. # Q: y; I% n9 O3 m. m
  31. GDT_def         Label   Fword
    4 m. H2 q3 \. q8 d  C: ?. P! k( @
  32. Null_Desc       DESC    <     0h,  0h, 00h, 00h, 000h, 0>
    - @- k) i9 |+ a& S2 O
  33. Data_Desc       DESC    < 0FFFFh,  0h, 00h, 92h, 08Fh, 0>7 c# ~( R  [: z8 w" l% D

  34. ' C7 N; Y; f* b" O  u
  35. GDT_Addr        PDesc   <$-GDT_def-1, >7 f* m1 a6 _9 P  ?
  36. DSEG            ENDS                          ;数据段定义结束
    " H$ r  [$ @5 N' i* G

  37. ) t0 c! [) ?  B' N3 ^
  38. CSEG            SEGMENT USE16                 ;16位代码段
    ( Q4 d; O3 y1 P+ x% I( r; v
  39.                 ASSUME  CS:CSEG,DS:DSEG, B0 Y6 C% R2 g1 K
  40. .Startup$ M  o. E9 U+ E6 A
  41.         call      Set4gb
    * w8 w/ V2 r( e& K
  42. ;
    4 Y. n  M3 f5 V# _: e" a
  43. ;       fs, gs即能访问4GB空间( I0 ?! d$ T( I1 i' Z" q  u+ n+ t0 ]
  44. ;       write your code in here.
    " F# f- j: _( A5 T7 C4 }
  45. ;& i! p. J4 w; A$ k* M5 c3 B3 e
  46.         .exit5 B. r# k! `, X
  47.         
    9 }( Y. e: p( H
  48. Set4gb          PROC      NEAR
    $ B/ _; ]8 T; y
  49.         in        al, 92h- D% _/ r4 @1 Q" c1 L
  50.         or        al, 002
    0 J1 U9 w" |' Q( `: O. a: l' d
  51.         out       092h, al' V. H$ R4 d2 _- Z; Q) a7 x
  52.         out       0edh, al
    " R& U0 J6 w- w& l! N; _
  53. ' H. z3 `3 e: Z, I. _0 I
  54.         cli
    3 m7 s; @1 @, l( [  d

  55. 3 B; ~2 k5 c* s' r
  56. ;        mov      word ptr GDT_Addr, (2*8-1);5 \0 @4 V5 Q5 H9 i4 C. h
  57. % i- E3 R7 b6 g9 n
  58.         mov       eax, ds1 W; L# T8 O# X$ O- s
  59.         shl       eax, 4; u3 c/ a! X6 l8 d4 A' b% q4 ]
  60.         xor       ebx, ebx
    ( y* ~& D$ m) k4 Z- ?% a( `
  61.         mov       bx, offset GDT_def, B! P' x, d2 O
  62.         add       eax, ebx, A) f4 G+ P) Y1 o
  63.         mov       dword ptr GDT_Addr.Base, eax
    1 |/ Q" ^$ A: N7 ^
  64.         lgdt      fword ptr GDT_Addr4 {0 J4 N: V6 @0 b" x/ a8 O8 j

  65. . S6 @* R0 _. Z% i
  66.         mov       bx, 80 U2 `0 D0 T6 T4 o% \+ }
  67.         mov       eax, cr0
    . L7 _, L9 d$ D
  68.         or        al, 1
    ' B' ?' Q: ~5 R0 j
  69.         mov       cr0, eax
    4 }  ^/ l% b/ A% T/ s6 {

  70. & L: L, ^' g/ P" T- w* b" v6 R- @2 J$ w
  71.         jmp       pMod. k+ ~7 f' T' L1 P1 F
  72.     pMod:
    9 d/ I. u7 G* I. W# ^

  73. % s) ~5 K0 F4 n* e3 |/ n
  74.         mov       fs, bx
    ; o) C- }. j* Q: J6 o7 g, @
  75.         mov       gs, bx% \9 }  l' R6 [. z
  76.         and       al, 0FEh0 k" c: o* |5 J
  77.         mov       cr0, eax+ D! j  O( \; K
  78.         
    7 N) w2 I% Y! O( z) {
  79.         jmp       rMod/ U2 y: }6 B# M( o2 \! ^
  80.     rMod:
    ! q6 X* L* V4 j: _9 j

  81. 7 g" y+ Y, O) D
  82.         mov       ax, 0
    3 G+ w2 _/ F# P
  83.         mov       fs, ax  g7 F- r; q. r. q
  84.         mov       gs, ax2 f3 h7 h1 n9 O$ L7 e
  85.         7 _5 D* s, P! {7 P
  86.         ; 在2M的位置测试写一下数据
    ) M6 a) J) F2 t  o
  87.         mov       esi, 200000h
    $ z2 s) @! `9 ~2 a- d
  88.         mov       dword ptr fs:[esi], 055aa55aah
    ! _$ ]) v- a( Z6 Q
  89.         ; 用RU去看看200000h的位置是否是此数据....  K+ T' W% R0 J2 V5 K* W4 b
  90. : }2 _4 ~& s! @
  91.         sti
    9 _! w: z5 I# a* R' V
  92.         ret7 }8 k$ t8 a( v" Z
  93. Set4gb  ENDP
    ' U5 r7 o) }- \: N5 t' z, W$ A
  94.        ) p& O* j9 P* D; t" i
  95. CSEG           ENDS                              ;代码段定义结束& v' ]9 n/ j4 c0 Q' ]- T) y/ T
  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选 803869 N0 m3 V+ N2 k! l
6 J/ V2 \! M9 a  Z: z6 g
option->compiler->code generation中的option选中, [X] compile via assembler! c. S& K% D% f; \0 |

% b! G* w0 t/ G/ C2 _+ i[ 本帖最后由 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;
6 C9 k5 m+ o; b2 eData_Desc       DESC    &lt; 0FFFFh,  0h, 00h, 92h, 08Fh, 0&gt;7 K. X, A% k( f& [

) `2 f% S5 o! f* qGDT_Addr        PDesc   &lt;$-GDT_def-1, &gt;
+ R  E3 w  ]% F* U( d8 x3 @ 替换如下,( J$ {/ P: A% t* ~+ t) v
Null_Desc       DESC    < 0h,  0h, 00h, 00h, 000h, 0>: q9 Z6 v: B1 t, n1 Q& m- f, `  y
Data_Desc       DESC   <0FFFFh,  0h, 00h, 92h, 08Fh, 0>
% q4 v) `4 V5 f) m- h1 V- Y+ }; y& k2 X6 s
GDT_Addr        PDesc   <$-GDT_def-1, >5 z" Z4 P3 A( B7 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 发表
# ~1 z5 b& f3 G6 @) v0 toption->compiler->advanced code generation中的instruction set选 80386" U* b3 W% \7 j5 g/ d* e) U! i# U
3 ]) X2 `; b5 q! q# g
option->compiler->code generation中的option选中, [X] compile via assembler

# }4 W: |1 j0 r( E# O0 b% ?# |   作了上述设置之后还是不行,编译的时候提示: cannot find executable: TASM. 我换了几个版本的TASM还是没用,除非拿掉含有32位寄存器的那些code才行。这个是什么原因,请各位大侠多多指教
回复

使用道具 举报

发表于 2010-4-12 10:27:08 | 显示全部楼层
原帖由 A_jack 于 2010-2-26 10:47 发表 ! H. A7 N: H* Q, A( t  }

* }$ y" U- X3 ]6 M   作了上述设置之后还是不行,编译的时候提示: cannot find executable: TASM. 我换了几个版本的TASM还是没用,除非拿掉含有32位寄存器的那些code才行。这个是什么原因,请各位大侠多多指教 ...

1 q, U" y% y/ G# C( K+ i3 |4 I3 ^8 R  K0 @+ C$ k9 q# ?8 U6 Y+ x
我也是相同的问题,请问哪位有解,谢了!
回复

使用道具 举报

发表于 2011-2-21 21:04:39 | 显示全部楼层
option->compiler->Transfer 设置TASM的路径,就不会提示找不到TASM;
4 `  \. S5 c3 J. k9 q0 ?& w还要把TASMMSG.exe拷贝到源代码(工程目录),就可以编译完成了。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-10 15:53 , Processed in 0.141383 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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