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

DOS 4G big real Mode Demo code。

[复制链接]
发表于 2008-10-8 14:29:37 | 显示全部楼层 |阅读模式
刚学习的同学,有些还不会,我这里贴点C和asm的代码。只供参考。
5 j: l$ a3 z7 s
0 }2 q* ~' F- T: D0 g. a& \这是C的
  1. /********************************************************************
    ; f" u" ?& H2 v7 Q
  2. *    File: DOS4G.H                                                  *
    8 J1 c# q  b0 _: A( \: Y0 a. E5 i
  3. *       Compile with BC 3.1 ( Editor: Tab size = 4 )                */ c, I) S. a4 v  f/ D( |
  4. *                                                                   *
    1 ?; {& T$ e( w* B0 U4 V
  5. *    ========================Title===============================   ** W) M( D' B) D, z) W6 F5 E6 Z
  6. *        这个函数是让系统进入DOS 4G模式                             *+ R; x3 Z& {; L4 R2 j7 v
  7. *       程序参考了:陈家琪《DOS实方式下直接访问4GB》                *4 E9 O5 y: N2 C  F# z
  8. *                                                                   *7 N8 W" Y6 X: J  @' ~
  9. *       使用: openA20(); set4gb();                                  *9 f/ |! v+ H7 Z% [
  10. *                                                                   *
    % G* Q, ]) H8 G$ ~7 S
  11. *   ===========================History==========================    *! l3 ~3 W8 r; d! X
  12. *    author: bini                                                   *
      O: A4 Y" z- ^
  13. *      date: 2004-11-30  Frist version.                             *( n4 H5 e) ]' x2 Y1 Q9 m
  14. ********************************************************************/
    * ?: R& ^3 {& V; `2 x

  15. ! g, R. `( K7 x, f) V+ k: O% w/ ]  i
  16. #include <conio.h>
    % N4 U- a- g  M1 r
  17. #pragma inline, c3 }; h4 b" d% p
  18. , ^9 }- M( t# \) a/ v7 [1 h) d
  19. /***********************************************
    $ J. E% h* I5 f% a8 l
  20. *    两个GDT,第一个为系统使用,不管,默认为0   *
      F  }6 R2 E+ ?8 S
  21. *    第二个为一个数据段,没有代码段。           *
    3 C! U; e+ s1 T1 a/ M, O6 z+ y# _+ d
  22. ***********************************************/
    8 N# }; a3 \8 Q- O) F4 z1 c. W& r6 K
  23. unsigned long GDT_def[ ]={0,0,      /*系统使用*/+ B6 f( g% n( c* R+ x! f* P+ c
  24.                           0x0000FFFF, /* hi16bit( 0~15 ) is base low=0,
    4 I% ~; S/ R# E/ j1 a8 U6 c9 A& t2 T
  25.                                          low16bit( 0~15 ) is limit low=0xFFFF
    ( g: w2 j4 Q; b$ }7 c, ]
  26.                                       */
    - s" C3 u9 E( e
  27.                           0x008F9200};/* 最低字节为 base( bit 16~23 )7 K! r$ |/ _  Y
  28.                                          最高字节为 base( bit 24~31 )/ j+ _" x8 b; ^
  29.                                          
    , O1 P  `$ u2 @1 j- A
  30.                                          属性Attrib = 0x8F924 Z1 ^7 h( \6 r
  31.                                          
    ( J0 e4 X8 l6 m4 V* u
  32.                                              属性位Hibyte低四位为 0 u. f* R$ \6 T+ e
  33.                                                  Limit( 16~19 )=F! q# g8 Q- m8 d, J3 _
  34.                                              属性位Hibyte bit7 为粒度
    " z3 B7 x/ H  z, U5 J
  35.                                                  (值1=4KB粒度)
    ! i2 a. y6 ]7 v
  36.                                                  8F & 0x80 = 17 ^0 P9 G: ~, ~6 C/ S0 l8 t
  37.                                                  ! _, Q( \0 w0 P! S  Z
  38.                                              属性位Lowbyte低四位为段类型,值=22 o9 q1 {$ |( L" Q
  39.                                                  表示为可读/写段
    1 t' k' n4 t& [) B2 c# h. o
  40.                                              属性位Hibyte高四位=9,bit3=1表示:1 g4 a0 i1 k$ B( ]
  41.                                                  描述符对地址转换是有效的。
    2 Z! v0 m4 e/ N1 j/ E  L
  42.                                                  bit0=1表示为:
    8 j2 b5 e! R8 k
  43.                                                  系统段描述符。而不是门描述符。) `* G6 B3 n" H5 U" F4 T: J
  44.                                              8 E7 A3 Q" a' s( y
  45.                                          */& p- P! `  a7 O; m" u4 m

  46. 8 H1 B' q' F" j7 U# a: i2 k
  47. /****************************************6 S( I! C5 w) C
  48. *    GDTR寄存器, 48bit=6bytes            *: E5 Z; t9 j* W& f8 L
  49. *    +-------------------------------+   *
    ' A" a9 ~- K1 |' T
  50. *    |   32bit基地址       |16bit界限|   *
    , f- I$ c# S" W/ x( [
  51. *    +-------------------------------+   *
    $ \, j0 |2 [5 [8 w6 e
  52. ****************************************/
    8 l" e, p( @6 G# r2 R
  53. unsigned char GDT_Addr[6]={0};. [( c2 R, B) j' E6 ]

  54. ) c: z' E" H6 _& V3 z
  55. /****************
    " O4 P5 E! \8 o
  56. *    打开A20门    *6 I& T/ Q. p- X1 t8 Q' q% n3 x8 {
  57. ****************/
    + y0 V" `, j6 V. G4 o' R
  58. void openA20(void)# J/ T5 W' y* |5 j
  59. {$ x( s7 j- n" o1 J, x, t( e
  60.     asm{) S& W' h4 O8 I" y( D! G
  61.         pusha
    ; i& N( _0 P" t/ o+ G9 G
  62.         in         al, 92H
    ( @/ Z# o) a( f/ D
  63.         or         al, 0x029 d# |+ i: T1 l) U! O
  64.         out        0x92, al6 Q' j- B7 H' r$ _& ^/ E
  65.         out        0xed, al
    / R( p& x- }$ t; f
  66.         popa
    % M  S# C" u; `- O0 S
  67.     }
    # M, e# u# j& Z+ h! \) {. d$ t- T' c8 _
  68. }4 y# P- E$ z+ X) I; t

  69. 6 O- ~2 P8 s* J  g
  70. /***********************************************
    " h) t/ ?( H8 w) N  L" t  P4 R
  71. *    函数功能:进入DOS4G                       *
    6 I# H4 A2 g3 D; v
  72. *    ====================                      *' a$ F9 H. x  A  k
  73. *                                              *
    8 f) o/ ?- U& K8 T
  74. *    GDT描述符界限计算方式:描述符个数*8-1     *. [0 p( e. g7 X2 m
  75. *   如:                                       *
    : g+ o# v* a& w3 E
  76. *        mov    word ptr GDT_Addr[0], (2*8-1); *; w) D& }) p4 M& U: ?% g* U
  77. *       表示为 2个GTD                          *9 ]! X3 W6 W, }1 S& C
  78. *                                              *! E; l( H' }3 A, q( B
  79. *    选择子为所在描述符内的字节偏移。          *
    9 S/ e9 A5 p3 I5 L
  80. *                                              *
    ! \$ v% E8 C, L7 P& D
  81. ***********************************************/  c( P( {$ n7 Z) X- H3 R
  82. void set4gb(void)  S4 s. p- f5 U# e* F9 L* G$ I" Y
  83. {
    # F0 [( E! ~/ V4 T! D% ~
  84.     asm{, ^+ {$ l% R8 y9 j
  85.         cli2 a; |. r: z3 p3 g' a
  86.         /****************************************
    2 b. R; l) Q) t. }! _" [% H
  87.         *    GDTR寄存器                          *" F2 P4 a9 F1 p; F, J# B
  88.         *    +-------------------------------+   *$ v  }: A1 j$ m3 j
  89.         *    |   32bit基地址       |16bit界限|   *
    1 k( K/ G" _- R+ p
  90.         *    +-------------------------------+   *
    ; P% |: Y) c0 R+ p9 t
  91.         *****************************************/1 o4 C9 C1 d4 Z* {. w
  92.         /*********************1 O, v' D. y( o$ [7 c1 j1 m
  93.         *        得出段界限       */ H' \7 O9 i! \5 l( R6 m
  94.         *********************/9 `2 L8 P( o0 i, ^5 j
  95.         mov        word ptr GDT_Addr[0], (2*8-1);
    5 j5 n3 D; ^' P/ ~% v% X# b
  96.         /********************************************3 _1 S1 o2 b6 _, P6 `( A4 J0 }
  97.         *    计算GDT表的32位基地址,存入GDTR        *, A6 e9 |0 M6 T  y) G
  98.         ********************************************/
    ! R4 w9 k2 d. c# l+ {
  99.         mov        eax, ds
    ( F. O, ^' ]4 F' ^; E. E
  100.         shl        eax, 47 c3 f9 ^6 d$ P; M1 j& i
  101.         xor        ebx, ebx0 _, q1 y! X3 o
  102.         mov        bx, offset GDT_def
    2 R4 O9 b$ d9 E3 r3 n3 q
  103.         add        eax, ebx
    ! L! [% {+ }7 @; \$ I# i
  104.         mov        dword ptr GDT_Addr[2], eax
    + C0 I/ W! L2 g
  105.         lgdt       fword ptr GDT_Addr
    5 ^' J1 u3 B- b4 w
  106.         /********************
    9 o( R/ S4 }2 E" S# p
  107.         *   选择子偏移      *6 U! W7 o+ |8 G8 p3 }2 i2 c# C
  108.         ********************/
    8 }$ ?% j. G8 P& l$ M
  109.         mov        bx, 8
    7 n& K  c7 f/ k$ M9 O" n5 g, h
  110.         mov        eax, cr03 m/ {; {1 v) o* b/ Q
  111.         or         al, 1, F% v$ ^2 P; ?! y2 k
  112.         /**********************
    " H  l" x7 [! C& P$ H' f
  113.         *     进入保护模式    *) Y) ~) l  D0 v: x  L: i
  114.         **********************/
    4 |1 V; g+ |( j& Y+ o' h
  115.         mov        cr0, eax
    , O: ^+ V; h1 u5 O
  116.         jmp        pMod4 B4 |0 b- C* u; y# ]
  117.     }" v' J) S  H+ E/ \: _/ w" i: d
  118. 6 j, E1 m& l4 G. n# I% t
  119.     pMod: asm{# F; j  x0 R5 B* Q$ M
  120.            /************************************************************# d/ |% z6 z/ u6 ~& E7 o7 ?
  121.            * 让fs与gs加载选择子,使其能访问 0xFFFFF * 4K (4GB) 空间    *1 @! C' v9 @9 o+ M+ F. V1 |
  122.            ************************************************************/
    : i& i9 _, }: L. B
  123.         mov        fs, bx
    " L; o& v+ j3 h. e4 c
  124.         mov        gs, bx
    3 P% ?% z* L5 h2 N) ^
  125.         and        al, 0x0FE# y8 U4 f5 L. d2 I6 W' e% @
  126.         /******************$ p* J) H- M4 n2 A
  127.         * 进入实模式      *- T7 B' m& F  r/ u
  128.         ******************/$ t: {4 C2 i4 Q' F
  129.         mov        cr0, eax  ^) ~+ g, v9 w& n! F
  130.         jmp        rMod& l- _6 O  {# L+ A
  131.        }
    2 N8 V  h' n) u* _, }4 x* O
  132. & S' e3 g* u/ r; Z' R
  133.     rMod: asm{# A& w6 ^0 j3 J" x$ P
  134.         /* ******************************************************************
    1 i2 V3 ], @& K+ _; w4 v- l( d
  135.         * 退出,fs、gs清0,访问系统内存可用: gs[32位,相对于0的偏移地址]     ** m% f- e  V; Z) L' `
  136.         ********************************************************************/
    , t" |* p8 J% P2 x4 v" Z- y! t
  137.         mov        ax, 0
    ! }% D# I/ s, j1 K( S: \0 B4 B% N
  138.         mov        fs, ax5 \) u3 z( ^) V' q
  139.         mov        gs, ax+ k/ Y6 z( Q/ |; N7 X
  140.         sti
      f' [) _% d' i. ~! l; l9 l3 r& Y8 z
  141.     }
    : u$ [( t6 E! a0 L) i- ]' W1 x
  142. }
复制代码
这是asm的
  1. ;/********************************************************************$ g( h- {3 y( W3 T* k% K
  2. ;*    File: DOS4G.asm                                                *
    1 U- E  G% Z) ~0 f/ I
  3. ;*       Compile with masm ( Editor: Tab size = 4 )                  *: ]6 k: X: f+ t+ q  @: W& M( s
  4. ;*                                                                   *
    7 ~9 i2 c& }9 C, |
  5. ;*    ========================Title===============================   *
    0 S3 i. [: s) N2 \9 B
  6. ;*        这个demo是让系统进入DOS 4G模式,进行数据访问               *  S; x+ r/ p# H4 i3 h6 S
  7. ;*                                                                   *
    . K+ j9 l1 a' B4 M4 g' T0 u! O
  8. ;*   ===========================History==========================    *
    9 E7 V9 v& y; x5 J0 x
  9. ;*    author: bini                                                   *% }9 ?  L2 j. B2 u7 p
  10. ;*      date: 2008-10-08  Frist version.                             ** A, w* n. w2 P% O
  11. ;********************************************************************/ ) h2 |$ V( |2 ?4 \" ~2 w
  12. .model small
    " c8 T! N! S- A; {7 w4 G  _  `8 P
  13. .586p' C# D- n6 S" c, X8 |0 e7 I

  14.   Y4 z+ P7 \2 n2 a9 B' o
  15. DSEG  SEGMENT   USE16                 ;16位数据段/ ^# _8 w, ]- q6 D: p$ P+ S- Y! Y

  16. # o; y7 ]$ b6 `) e( K6 y
  17. DESC            STRUC
    6 @7 ], Q; ^7 f8 k
  18.         LimitL          DW      0 ;段界限(BIT0-15)
    6 X+ E3 U3 f3 S& m
  19.         BaseL           DW      0 ;段基地址(BIT0-15)
    6 O: m% Z9 s4 ^
  20.         BaseM           DB      0 ;段基地址(BIT16-23)
    7 V1 N9 j2 c% g* v3 v/ a
  21.         Attributes      DB      0 ;段属性# q, b1 w/ Z4 f3 W) o
  22.         LimitH          DB      0 ;段界限(BIT16-19)(含段属性的高4位)
    - U6 R6 j. |2 I. v) [+ ?$ m
  23.         BaseH           DB      0 ;段基地址(BIT24-31)
    % F4 t4 ~# Y4 p1 L. y
  24. DESC            ENDS2 S- x" T- C" e: R' _
  25. ' J$ M3 @# P: i
  26. PDesc           STRUC2 i3 |0 t/ H  _
  27.         Limit           DW      0 ;16位界限
    8 T% r8 ^+ |1 D9 f1 B/ F/ q
  28.         Base            DD      0 ;32位基地址
    ' G% G4 C( i3 H+ ^/ I; ?) ]4 M7 \' t
  29. PDesc           ENDS
    ; J* A  X) l* v; T4 i8 a; x  h
  30. 6 ?- \. B! Y  d* g' B" x
  31. GDT_def         Label   Fword+ \0 g' Q- _$ {1 M/ Z) l% @
  32. Null_Desc       DESC    <     0h,  0h, 00h, 00h, 000h, 0>
    ( J1 c& _9 V! B( Q
  33. Data_Desc       DESC    < 0FFFFh,  0h, 00h, 92h, 08Fh, 0>
    3 i) @' B% y) I) I
  34. # c; B  M/ B0 ^2 n. d, Q: @$ \# d
  35. GDT_Addr        PDesc   <$-GDT_def-1, >/ b) F6 F4 Z; O2 ~9 @. R* {
  36. DSEG            ENDS                          ;数据段定义结束; n) v- a8 b3 o' L$ O( l
  37. $ ]3 l* [( k9 H
  38. CSEG            SEGMENT USE16                 ;16位代码段
    ( W) g8 y3 y0 V3 ~/ g- s+ E" L- |
  39.                 ASSUME  CS:CSEG,DS:DSEG+ B+ H7 i: |9 P+ k$ N7 B
  40. .Startup
    & `" {0 w% |) |. a4 r9 V
  41.         call      Set4gb
    ( e$ o0 x+ [( _
  42. ;% t  C0 u4 h7 `. y
  43. ;       fs, gs即能访问4GB空间& a) {4 s7 f: y& ?7 j' K8 E% `& M
  44. ;       write your code in here.- Y: O: A8 n0 f- K1 [
  45. ;  M( L( H. @. m- x; b1 [$ c
  46.         .exit2 l; r3 y# p( U7 [# J
  47.         
    9 w7 X7 [; Y, m& [1 A! O
  48. Set4gb          PROC      NEAR
    : i- g9 a4 x/ j7 @
  49.         in        al, 92h
    8 I2 j4 [- J6 H7 M! M8 h3 e: {
  50.         or        al, 002  C+ F7 H. F& X1 ~% q
  51.         out       092h, al
    ! a; I. }. Y+ }' J$ K, G
  52.         out       0edh, al
    0 z0 c/ d; m5 M# y" C; \
  53. 9 Z% b0 }: J2 y7 \! i1 ~6 f
  54.         cli: y6 |! u% t+ \, b8 q: C2 w/ n

  55. ; R, A$ l$ B$ n% p8 n9 r
  56. ;        mov      word ptr GDT_Addr, (2*8-1);
    3 [$ F6 ]& U6 K- m. C: }, e! }. C
  57. 1 u7 w! |4 t2 D" a& R/ T( d
  58.         mov       eax, ds
    6 M% t6 L0 R8 x+ c* F# k3 c
  59.         shl       eax, 46 a2 ?: _0 O* I3 U7 h1 R% E
  60.         xor       ebx, ebx
    , W8 A' l9 m% a8 Y
  61.         mov       bx, offset GDT_def
    + b& @, L. w* {6 w4 f" c' s
  62.         add       eax, ebx
    : l/ E* `3 Y9 o2 A8 U
  63.         mov       dword ptr GDT_Addr.Base, eax
    ' G& }4 s# R; i* k
  64.         lgdt      fword ptr GDT_Addr
    7 x% d! c& N; d" S# h- n  S" V
  65. 6 c# G+ d* Z+ b: C' v1 X
  66.         mov       bx, 8; V6 f6 S7 l# `' c" w+ Q5 Y
  67.         mov       eax, cr0
    , S6 t' e8 `! L+ D
  68.         or        al, 1
    + n( ?# t* `  @1 ^" k6 B) d# b  _
  69.         mov       cr0, eax5 J  \% O4 M( T5 R9 Z

  70. " ^  l8 f# u4 L! t
  71.         jmp       pMod
    $ N& E( G+ W6 U  G
  72.     pMod:
    # A; d, e1 z7 d0 }

  73. % o- X' Q, Q2 ]! X! \( X( h5 \
  74.         mov       fs, bx
    2 ?' `. d  h! ]6 y  H3 B5 F  ~
  75.         mov       gs, bx
    7 E* d4 e2 |0 Y% v* x
  76.         and       al, 0FEh
    ! W/ v/ Q& z1 g: d9 J$ T
  77.         mov       cr0, eax1 s4 U" O  d+ P* G
  78.         " B; N/ i  [; x0 d8 i
  79.         jmp       rMod
    ! T# d, T& b$ D8 \
  80.     rMod:
    , J( f8 p. f0 \! C

  81. ( o( ?' k% s' ~8 b+ z- Z
  82.         mov       ax, 0
    & K. L3 R* X4 U( F/ e
  83.         mov       fs, ax! l& c5 H7 |  k6 X6 E% V
  84.         mov       gs, ax
    - t( @  m9 A/ A
  85.         5 r) [  n  S9 q7 G1 \
  86.         ; 在2M的位置测试写一下数据
    & H$ q2 G' h+ L, l, ?; w
  87.         mov       esi, 200000h
    - d6 @! _( L- x8 a
  88.         mov       dword ptr fs:[esi], 055aa55aah& _/ v/ @; f! a" s
  89.         ; 用RU去看看200000h的位置是否是此数据....
    / ~; D. M' H6 T, k* r' f- g+ b

  90. / f1 i1 J2 K) q& K9 z. I
  91.         sti- U3 C' ]' F4 w- \% _: L$ p
  92.         ret
    1 V* T" Z0 a" {) x6 _
  93. Set4gb  ENDP2 n) O8 q! w& ?3 K6 m# I: w
  94.        7 Y2 o5 [! Z, A) s+ g
  95. CSEG           ENDS                              ;代码段定义结束
    8 o$ s- T+ H4 O2 A. G
  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选 803860 _$ H& x% V: h4 F/ E

/ L2 z6 f+ w4 g4 A. Voption->compiler->code generation中的option选中, [X] compile via assembler$ L& l: Q4 E* u
- |9 J% ^! y8 r2 J, R- K
[ 本帖最后由 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 T! q8 J' X* ~6 [/ ^# B4 eData_Desc       DESC    &lt; 0FFFFh,  0h, 00h, 92h, 08Fh, 0&gt;5 x2 Q% L* \6 i. S% ]2 q7 f

- _  f) }/ S% x2 G: o9 Z8 }GDT_Addr        PDesc   &lt;$-GDT_def-1, &gt;+ ~: X6 i3 W3 {1 W9 r
替换如下,
+ j8 i+ q! N8 X9 k- i" @/ wNull_Desc       DESC    < 0h,  0h, 00h, 00h, 000h, 0>
* }$ T. X. F' UData_Desc       DESC   <0FFFFh,  0h, 00h, 92h, 08Fh, 0>) U, O2 J  }4 ~9 S' O5 K

5 T; F) Y) v! g" J+ EGDT_Addr        PDesc   <$-GDT_def-1, >) @: E; m5 W& T9 {* L
这样你就能编译通过并且可以运行
回复

使用道具 举报

发表于 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 发表
4 ^2 g) ~! Z7 T9 w& q# s& z9 z1 `option->compiler->advanced code generation中的instruction set选 80386
1 h. Z% ]1 u) Y5 u* K+ Y$ |4 O1 V) r5 r0 l
option->compiler->code generation中的option选中, [X] compile via assembler
* @9 x8 E/ q- |8 r9 y
   作了上述设置之后还是不行,编译的时候提示: cannot find executable: TASM. 我换了几个版本的TASM还是没用,除非拿掉含有32位寄存器的那些code才行。这个是什么原因,请各位大侠多多指教
回复

使用道具 举报

发表于 2010-4-12 10:27:08 | 显示全部楼层
原帖由 A_jack 于 2010-2-26 10:47 发表
. Z9 c, x) o9 a7 Z1 Q. j) N& t/ ~7 |% H* U: @8 ~
   作了上述设置之后还是不行,编译的时候提示: cannot find executable: TASM. 我换了几个版本的TASM还是没用,除非拿掉含有32位寄存器的那些code才行。这个是什么原因,请各位大侠多多指教 ...
9 b( L2 C- E/ |5 n6 k5 G% I8 m- V% Q& H

; v  N/ o0 G& B* P9 F% y我也是相同的问题,请问哪位有解,谢了!
回复

使用道具 举报

发表于 2011-2-21 21:04:39 | 显示全部楼层
option->compiler->Transfer 设置TASM的路径,就不会提示找不到TASM;
* c( l+ u. z* I. k0 ^$ V. Y; U* b还要把TASMMSG.exe拷贝到源代码(工程目录),就可以编译完成了。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-1 16:55 , Processed in 0.606130 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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