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

DOS 4G big real Mode Demo code。

[复制链接]
发表于 2008-10-8 14:29:37 | 显示全部楼层 |阅读模式
刚学习的同学,有些还不会,我这里贴点C和asm的代码。只供参考。. g( \9 V" o3 J
+ J) p, I' M9 E, n$ S1 {; v1 p" Y( O' Q
这是C的
  1. /********************************************************************
    5 q9 h! D6 P( H! W/ i% t
  2. *    File: DOS4G.H                                                  */ f$ V$ B2 M! E6 u. m' f# G
  3. *       Compile with BC 3.1 ( Editor: Tab size = 4 )                *
    , Q, r& ~/ b8 x
  4. *                                                                   *
    1 f, ?0 o* c3 ^+ s; h7 A% L
  5. *    ========================Title===============================   *( u; E! F6 M2 j/ H8 a. |  ~/ `
  6. *        这个函数是让系统进入DOS 4G模式                             *- E0 E8 r2 v. [
  7. *       程序参考了:陈家琪《DOS实方式下直接访问4GB》                *! M& Q% d! @0 H' Z+ C5 r
  8. *                                                                   *
    # `$ j# \7 M- W8 O9 n9 l$ W
  9. *       使用: openA20(); set4gb();                                  *3 @" l' M1 g: {$ G. o8 i8 x
  10. *                                                                   *
    ! {5 D3 p% s5 u! e0 g
  11. *   ===========================History==========================    *! |. n1 b4 I1 {0 D
  12. *    author: bini                                                   *4 p/ u$ z# a  F* d; J
  13. *      date: 2004-11-30  Frist version.                             *
    6 Z! ^; b# P" L$ U2 a  z
  14. ********************************************************************/
    & F, K+ u$ l! _- m" G

  15. " K5 G7 y, c# {
  16. #include <conio.h>
    3 Q7 r! Z* X8 d1 q& [$ I6 k
  17. #pragma inline9 ]% o- p; V" C* X* d: w
  18. 5 j. D+ `  E. Q6 z. a( K& Y& m) s
  19. /***********************************************- q; E( N; g2 @) k- o8 u
  20. *    两个GDT,第一个为系统使用,不管,默认为0   *; J$ N0 p* c! Z4 A- H; u6 v3 o! `, F
  21. *    第二个为一个数据段,没有代码段。           *
    8 ^& s, ?/ I$ U' ?' d
  22. ***********************************************/
    8 K# z0 o! g. k1 F
  23. unsigned long GDT_def[ ]={0,0,      /*系统使用*/
    " Y5 j& W& J2 d) L& ~
  24.                           0x0000FFFF, /* hi16bit( 0~15 ) is base low=0, 6 @  K# c% y+ U; U! K
  25.                                          low16bit( 0~15 ) is limit low=0xFFFF ) H, ^. C( ?5 s) m: J5 \+ v
  26.                                       */2 C5 y3 O7 y' w3 F# I" V
  27.                           0x008F9200};/* 最低字节为 base( bit 16~23 )
      s+ Q8 B0 w: k; T! z) c
  28.                                          最高字节为 base( bit 24~31 )
      g7 E' f" l& k: s5 u
  29.                                          / f% x" h2 H" A4 A# N
  30.                                          属性Attrib = 0x8F92- D6 A) I( v6 D. Y6 c+ G
  31.                                          
    8 H0 q1 c8 j. r0 q. d
  32.                                              属性位Hibyte低四位为
    7 w" H8 p* A1 ~4 N2 K1 g/ y
  33.                                                  Limit( 16~19 )=F  M& J/ p) e; u7 ^7 b
  34.                                              属性位Hibyte bit7 为粒度
    0 m  c( H/ K0 r1 i) u9 L
  35.                                                  (值1=4KB粒度)) f4 Y& |" ^) A2 T
  36.                                                  8F & 0x80 = 1& H5 @. q* B5 P" P  N
  37.                                                  2 l! Y4 j( V/ g
  38.                                              属性位Lowbyte低四位为段类型,值=22 \7 d& J0 t9 O% J$ p
  39.                                                  表示为可读/写段8 F" ]6 ?4 s5 F% J
  40.                                              属性位Hibyte高四位=9,bit3=1表示:# ]7 t9 R% `( C
  41.                                                  描述符对地址转换是有效的。% g) ^; Y( e  H  @/ ^9 u
  42.                                                  bit0=1表示为:
    2 {3 k" I1 j6 d$ {( v% r2 X
  43.                                                  系统段描述符。而不是门描述符。
    * N# i* U7 F8 }; s
  44.                                              ; j' f4 J! P8 m- }  j' q
  45.                                          */
    " V0 h, h/ y5 J- y* }8 |5 X
  46. # u7 H! ^  @2 D3 b
  47. /****************************************
    ; D0 N& d0 w, O$ `! P
  48. *    GDTR寄存器, 48bit=6bytes            *8 R- o- z% k, i& a
  49. *    +-------------------------------+   *4 }2 m- z- ]) U) r. A8 H2 p7 q/ E
  50. *    |   32bit基地址       |16bit界限|   *
    7 I9 |) p" W& F
  51. *    +-------------------------------+   *  H" B3 p# s- P# d
  52. ****************************************/( [8 x3 P. D' Z+ Z$ A9 ]: k* c
  53. unsigned char GDT_Addr[6]={0};
    # \7 Z# A1 G: t1 T2 ^. t0 u
  54. ' c1 ]& P+ g$ x& U$ H; y3 d
  55. /****************! u( x7 Q, ]% h- U* D
  56. *    打开A20门    *
    1 z" B- r* [: R/ J; [4 T
  57. ****************/9 L9 N3 t% y  W: h6 C
  58. void openA20(void)
    / j' ]( S. g3 Y* ^5 x* D% W" p
  59. {
    5 B" K% G6 h: i/ j
  60.     asm{* |. p  l) X* H# b5 q& o
  61.         pusha4 R/ n/ c! C$ h. F2 B
  62.         in         al, 92H1 l/ b" o' B6 u; w
  63.         or         al, 0x02- A7 z2 F! ^2 l* h
  64.         out        0x92, al* O+ ~8 d& t0 ~! n& a3 x6 ~
  65.         out        0xed, al
    3 ~% ?5 ^+ I- o9 y! e2 X
  66.         popa
    & f& E8 ]1 R( L
  67.     }  k% h4 t+ t# y& j% W: v0 T6 W
  68. }
    ; Q2 E, w0 D- `, z# _9 w, K& ]* D
  69. 1 b6 p' T$ \, B- J9 ?
  70. /***********************************************
    9 Z- q0 u0 Z5 F* Q; X
  71. *    函数功能:进入DOS4G                       *! G8 L4 J' U! w) P
  72. *    ====================                      *
    7 c. u; _' y; N0 E$ M4 q- R8 I$ t
  73. *                                              *  A/ V' e' u6 O; e
  74. *    GDT描述符界限计算方式:描述符个数*8-1     *
    2 T. I+ C1 M4 o. }  {8 ?* \
  75. *   如:                                       */ T) B. C6 |: M3 H" K5 x
  76. *        mov    word ptr GDT_Addr[0], (2*8-1); *# ]5 @) T( K7 C2 u- P
  77. *       表示为 2个GTD                          ** k; m) o( c$ v4 m. s
  78. *                                              *
    , u0 ]) T5 O" T4 d2 \
  79. *    选择子为所在描述符内的字节偏移。          *5 T) Y6 n$ T' G8 F
  80. *                                              *& r. f2 c0 H4 V& R
  81. ***********************************************/4 r4 v0 C" ]' B3 N: I' |
  82. void set4gb(void)
    / }3 M2 X! N9 j, o: J- Q' P
  83. {
    * j$ C/ a. M- J" y7 C
  84.     asm{
    " s( [2 |9 M1 i1 y4 U
  85.         cli
    - Z. M& h# [/ s
  86.         /****************************************
    % u3 B- e+ I- T2 m6 N0 {9 ^
  87.         *    GDTR寄存器                          *
    # E& G  [2 |8 d4 Q. h2 u3 p
  88.         *    +-------------------------------+   *7 h& r# G4 ~" n- A4 `
  89.         *    |   32bit基地址       |16bit界限|   *; S9 t" ?) b& q1 l$ ?* z
  90.         *    +-------------------------------+   ** @! N# \  V8 t" S- h7 b
  91.         *****************************************/
    / ?# u/ i7 e% }6 X: K# R0 k: C% q
  92.         /*********************; \4 T1 T6 f0 R  s9 n
  93.         *        得出段界限       *
    - r/ d4 H$ r; p  h. ]8 ]
  94.         *********************/
    , y; K& V2 ~: h% d
  95.         mov        word ptr GDT_Addr[0], (2*8-1);* _# J+ E( q, p+ D
  96.         /********************************************; }2 P+ L! I/ Z/ d4 e
  97.         *    计算GDT表的32位基地址,存入GDTR        *. k5 v  ~5 |. P( ]% n! |
  98.         ********************************************/8 }. o8 c2 j4 [7 |' J8 W8 l, D
  99.         mov        eax, ds
      w5 J6 e9 z# s( H  J
  100.         shl        eax, 4
    ; p2 ]7 F% v& L. v9 g5 b
  101.         xor        ebx, ebx
    2 R4 J2 S. K1 n/ R  m0 N
  102.         mov        bx, offset GDT_def0 a* q# o) Q4 G9 O9 w
  103.         add        eax, ebx# X. g4 @$ M: Y, n* y
  104.         mov        dword ptr GDT_Addr[2], eax3 M# e3 w# ~9 L) V- ]
  105.         lgdt       fword ptr GDT_Addr& q1 T9 x" c7 F/ L( l( U
  106.         /********************
    ; G% Y3 M8 e; s" I1 i# o/ _
  107.         *   选择子偏移      *4 m, `* o9 m, `# @* K2 a/ i% Q
  108.         ********************/
    " m& X' B0 B$ ?6 z7 T0 Y
  109.         mov        bx, 85 k( d# |9 \+ K: j% x
  110.         mov        eax, cr01 p! A+ M# U: u! p7 P
  111.         or         al, 1
    / F. ^& A- {5 E+ s% Y1 j
  112.         /**********************, V, |# Z0 @( |! O9 I- e
  113.         *     进入保护模式    */ x8 D4 @- x8 W4 \, ~2 P
  114.         **********************/( [2 }1 q( g  D( D1 |- q
  115.         mov        cr0, eax' |- z; E( N+ N) A! s# L
  116.         jmp        pMod
    % J* F7 Z- i' G) E
  117.     }: W, \5 K0 q) Q

  118. , s% P- u4 y1 }0 m0 z$ E+ O
  119.     pMod: asm{
    # G% y+ ~, x; B3 Z
  120.            /************************************************************
    " M* Y3 m. z+ O# m
  121.            * 让fs与gs加载选择子,使其能访问 0xFFFFF * 4K (4GB) 空间    *
    ( a! Z4 ~# ]. T: \
  122.            ************************************************************/
    # l3 p7 |6 Y0 I7 ]3 B1 k
  123.         mov        fs, bx$ _; J# F5 n! K; I2 u
  124.         mov        gs, bx: F" r* E# Y9 S& a
  125.         and        al, 0x0FE3 G! m+ S; h" B. W, U+ V
  126.         /******************. \9 L6 \& S7 k! {/ Y+ {- p% _
  127.         * 进入实模式      ** H0 F; Y; D4 |, F, q
  128.         ******************/! V; }8 j# w' @
  129.         mov        cr0, eax) w1 v) X3 \& T, L1 r$ Y  ]
  130.         jmp        rMod
    % x* D/ D4 V, N
  131.        }( Z, g' _% J/ |0 j9 H* r  Q

  132. ( p6 j. X  H6 _! d
  133.     rMod: asm{# N" V( a6 x6 U- i1 H
  134.         /* ******************************************************************, }* U. K$ \* v2 e, o* x
  135.         * 退出,fs、gs清0,访问系统内存可用: gs[32位,相对于0的偏移地址]     *
    ( T* |$ ?* }( ]% X- p* S1 N# B0 `
  136.         ********************************************************************/
    , R) }  [0 Z; b
  137.         mov        ax, 0  _, X7 M2 e) Y% K8 o. E: V
  138.         mov        fs, ax
    ) C' G$ C$ B9 R- v  e4 t9 O/ u
  139.         mov        gs, ax
    + [; a1 ?# ]- A7 X
  140.         sti. z# W1 N7 e+ p0 N+ k
  141.     }' V, u# i6 A. v9 _$ e' u
  142. }
复制代码
这是asm的
  1. ;/********************************************************************  d7 V; }& @6 t" g! |
  2. ;*    File: DOS4G.asm                                                *
    6 d8 T+ q- P; v1 \
  3. ;*       Compile with masm ( Editor: Tab size = 4 )                  *; {6 {# f4 @+ C" H
  4. ;*                                                                   *
    ) ^/ O8 s* S2 L. k2 I
  5. ;*    ========================Title===============================   *! g- F" Q1 P7 t7 A/ @1 k  [0 A
  6. ;*        这个demo是让系统进入DOS 4G模式,进行数据访问               *
    / p- e6 _0 W3 D3 f& }2 u
  7. ;*                                                                   *
    3 j% r6 U  o( k9 K' }$ N+ _; Z
  8. ;*   ===========================History==========================    *
    4 u$ F; s% P" ~$ s
  9. ;*    author: bini                                                   *
    2 g  x+ x$ j( B2 c4 Q9 Y6 }
  10. ;*      date: 2008-10-08  Frist version.                             *
    4 A+ A/ ~* U6 H* U, g# s6 O1 Y( M
  11. ;********************************************************************/ ! j( r; R# j8 I, h, k
  12. .model small; r0 \3 W: d9 |1 @
  13. .586p
    $ Z0 T( w3 p7 J4 A$ `. e
  14. ' H9 ?' T& X, j9 c7 L0 I: \
  15. DSEG  SEGMENT   USE16                 ;16位数据段
    8 D+ Y" X- V" e  H" {6 z% n9 ]( y

  16.   S5 l; b, L+ N' U  d. r
  17. DESC            STRUC$ k6 I6 _2 ~3 ~) e! t* K1 s/ J/ N" @
  18.         LimitL          DW      0 ;段界限(BIT0-15)  |1 _( \0 v" \4 R' B" n
  19.         BaseL           DW      0 ;段基地址(BIT0-15)
    + o9 s4 [( @6 }* C2 a) \) C
  20.         BaseM           DB      0 ;段基地址(BIT16-23)
    % U3 v# F. D- l( H
  21.         Attributes      DB      0 ;段属性
    / g0 x, Q. p3 k& _7 m6 [- k7 Q
  22.         LimitH          DB      0 ;段界限(BIT16-19)(含段属性的高4位)  i+ C) k8 [' `7 b' s- Y- U; \
  23.         BaseH           DB      0 ;段基地址(BIT24-31)
    : R! g1 V3 i/ g- {
  24. DESC            ENDS+ ?: n' ]" y0 V% m& J- D

  25. 9 c0 _5 Y" V0 u/ L# S
  26. PDesc           STRUC+ Y8 b1 j" a8 z
  27.         Limit           DW      0 ;16位界限
      r& T- c- g" d, V
  28.         Base            DD      0 ;32位基地址' w/ ?, o' C6 c% m- j" L
  29. PDesc           ENDS
    2 b+ }0 b8 ^: y* \0 a: l) s2 y8 ^6 ~
  30. - a' _. {3 A# e( D
  31. GDT_def         Label   Fword9 O9 g( m* @8 Z' B( V* O' {' i
  32. Null_Desc       DESC    <     0h,  0h, 00h, 00h, 000h, 0># u# _- k7 E% d% W. I
  33. Data_Desc       DESC    < 0FFFFh,  0h, 00h, 92h, 08Fh, 0>% Z" f2 d1 ~& T' r& t
  34. , k9 W- t" `/ y$ g  O% v
  35. GDT_Addr        PDesc   <$-GDT_def-1, >
    ( x) y: {1 \  D' r
  36. DSEG            ENDS                          ;数据段定义结束
    3 t; `8 E0 e; I8 h1 F+ U- K
  37. 9 W& S- q4 ]7 R4 |4 u: @
  38. CSEG            SEGMENT USE16                 ;16位代码段: }3 F% h! w2 Q( u2 Z+ ^9 g
  39.                 ASSUME  CS:CSEG,DS:DSEG/ K! r5 w9 S0 k$ S
  40. .Startup
    ; d+ ^7 t( B3 d5 G  a0 ]+ c
  41.         call      Set4gb$ k6 ?% h' r5 x2 i$ t$ `7 M- O
  42. ;: K( k- C) K% `- j" n1 g% U
  43. ;       fs, gs即能访问4GB空间
    & Y+ S; t+ c+ o9 v3 @) y6 Y
  44. ;       write your code in here.
    ( `0 d9 J1 @" E( x# u
  45. ;% {, U1 [" W* r, b9 y) U4 M
  46.         .exit. D2 A  w4 R2 a; d: r& X$ C
  47.         
    1 i# y8 @  ]) l) j
  48. Set4gb          PROC      NEAR9 w# x4 J2 T- C+ F- o
  49.         in        al, 92h& u1 F( @4 B$ X
  50.         or        al, 002
    ( i8 m5 S, Z- R' u: ~; f3 d8 B
  51.         out       092h, al
    $ C" @' Q; S" K) }) D" v
  52.         out       0edh, al, z' M# W+ |5 w8 J( _" v7 U- G8 I

  53. 0 }. I7 {% i7 L/ p: Q( B  ]$ ^( \. s, J
  54.         cli5 j4 w! l. F! H
  55. 6 _0 ?! b$ X& c
  56. ;        mov      word ptr GDT_Addr, (2*8-1);7 I" y1 x" |( n* u
  57. 1 r$ \5 O1 ]: _' b8 F: E4 W2 l
  58.         mov       eax, ds5 r/ B9 @  K# b; _. O
  59.         shl       eax, 4
    * V6 i, V( K: x
  60.         xor       ebx, ebx2 ^) |% ~; ~: T$ G+ i
  61.         mov       bx, offset GDT_def, R; h$ R1 A  F1 I
  62.         add       eax, ebx
    " F* f% F  m9 Q" f5 y3 V! C
  63.         mov       dword ptr GDT_Addr.Base, eax. e+ y+ g) l% U1 h2 l
  64.         lgdt      fword ptr GDT_Addr
    & i1 N; L2 o" l" o
  65. ) `0 @) Q* K5 e5 C+ z9 B
  66.         mov       bx, 8
    ) P" C5 I! ]& ~( v6 z
  67.         mov       eax, cr00 @2 r  P' z! Y6 X
  68.         or        al, 1/ S# z0 k$ n+ t( O8 }
  69.         mov       cr0, eax3 F5 O5 ^/ F* J7 t" L

  70. / O7 L8 o$ _. I8 V9 u0 ~1 ~2 H
  71.         jmp       pMod, Y3 P. u$ C- H$ W4 ?1 {1 u# A; w
  72.     pMod:" P- S/ @* r0 V) E& F" f+ J
  73. 5 o+ o$ @1 d7 W3 C4 C; `$ [
  74.         mov       fs, bx# [0 T" Q0 o& J9 w( l
  75.         mov       gs, bx# v' f3 P! \- F" h- I; Z
  76.         and       al, 0FEh  o% J& ]+ U- ^# ~2 ~. h
  77.         mov       cr0, eax, a! i& n& H4 Y) Z  e8 Q- d1 {9 {
  78.         
    9 H5 p! y. k8 O  J
  79.         jmp       rMod
    , M# V$ M. |; r6 e" h! Y
  80.     rMod:
    6 y9 X6 K: R- r- B: r( a( D
  81. : k# H( Y5 J' M/ Q
  82.         mov       ax, 0
    / `  J/ v5 t8 N" r
  83.         mov       fs, ax7 w! t5 q) q5 g" x/ v+ P! g, w
  84.         mov       gs, ax3 M& ?, ?8 x  K
  85.         1 |2 ]( Z* W7 q  ^$ w8 _' k
  86.         ; 在2M的位置测试写一下数据3 M5 u& F  q7 N, g
  87.         mov       esi, 200000h- F( j+ _: q( h9 b
  88.         mov       dword ptr fs:[esi], 055aa55aah; j# a7 d& r$ x# p' S4 }$ W4 f
  89.         ; 用RU去看看200000h的位置是否是此数据....
    & G* H; e1 l8 U0 }- S2 G, z6 d: {- H

  90. * o. g2 f0 {+ p* D$ E
  91.         sti
    8 B! e) j$ ^) \: q, o% P
  92.         ret
    & C/ m1 H- }3 a" j$ @
  93. Set4gb  ENDP
    9 Z9 s: z9 t9 X; Z: N0 X4 t
  94.        ! B. j# [$ ?: H# {" R4 `
  95. CSEG           ENDS                              ;代码段定义结束- g8 y  c6 _9 m% y3 r: o- z" B
  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* V  \4 q& J% K, c. D; N" r) S

+ b# ~0 H2 q  [( Z  r4 }option->compiler->code generation中的option选中, [X] compile via assembler0 J& Y6 W1 e% Q: L# C. j

' b# Q* x5 b0 Z; C. @[ 本帖最后由 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;
1 K5 h" Y) I1 o: ^, yData_Desc       DESC    &lt; 0FFFFh,  0h, 00h, 92h, 08Fh, 0&gt;8 ^, M. j- W. g6 y

, p9 {5 [+ Y! P2 I* f7 gGDT_Addr        PDesc   &lt;$-GDT_def-1, &gt;# y& F1 _  G( x1 u- l; r3 O6 l
替换如下,
" M+ M  p8 a4 ?8 x# M+ KNull_Desc       DESC    < 0h,  0h, 00h, 00h, 000h, 0>
# K  z+ s5 r2 @9 Z- P. NData_Desc       DESC   <0FFFFh,  0h, 00h, 92h, 08Fh, 0>4 d6 c9 }7 d8 X4 K+ ^9 _7 u5 ~/ A
( b! s! o# y& v8 f# {# n3 T
GDT_Addr        PDesc   <$-GDT_def-1, >0 G/ D! h: P, T: f4 q
这样你就能编译通过并且可以运行
回复

使用道具 举报

发表于 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 发表
0 Z$ t& p1 m2 M( poption->compiler->advanced code generation中的instruction set选 80386" \, G2 ?+ e! }* x

' j6 m6 ?* ?4 ]* V% U4 u7 Hoption->compiler->code generation中的option选中, [X] compile via assembler

" ]8 {+ z) j! i& b) m5 v   作了上述设置之后还是不行,编译的时候提示: cannot find executable: TASM. 我换了几个版本的TASM还是没用,除非拿掉含有32位寄存器的那些code才行。这个是什么原因,请各位大侠多多指教
回复

使用道具 举报

发表于 2010-4-12 10:27:08 | 显示全部楼层
原帖由 A_jack 于 2010-2-26 10:47 发表 : R& r& Y+ a) t" q4 n, Y
( P. I7 H7 d8 N, |& J/ M. g
   作了上述设置之后还是不行,编译的时候提示: cannot find executable: TASM. 我换了几个版本的TASM还是没用,除非拿掉含有32位寄存器的那些code才行。这个是什么原因,请各位大侠多多指教 ...

8 Q& F' T% a& O5 p( j  g
1 S+ T# E9 \/ B1 R) L8 p; _我也是相同的问题,请问哪位有解,谢了!
回复

使用道具 举报

发表于 2011-2-21 21:04:39 | 显示全部楼层
option->compiler->Transfer 设置TASM的路径,就不会提示找不到TASM;
# p4 T' w4 h+ B7 F还要把TASMMSG.exe拷贝到源代码(工程目录),就可以编译完成了。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-4 14:42 , Processed in 0.085170 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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