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

DOS 4G big real Mode Demo code。

[复制链接]
发表于 2008-10-8 14:29:37 | 显示全部楼层 |阅读模式
刚学习的同学,有些还不会,我这里贴点C和asm的代码。只供参考。) [, r; E! A; p! n2 b/ e
4 W3 y& X$ m" F1 v, Z  v& M, T
这是C的
  1. /********************************************************************
    7 x8 x! z6 ?, `. a
  2. *    File: DOS4G.H                                                  *
    2 A, l1 s2 G0 y5 k6 u/ @# O  `  d( ]) p& Y) V
  3. *       Compile with BC 3.1 ( Editor: Tab size = 4 )                *1 U; k7 o$ d1 O1 H- ]0 J
  4. *                                                                   *
    ! K! A% q/ ~+ S) u7 a2 M0 n
  5. *    ========================Title===============================   *
    5 k% F0 F  e" t6 [  g6 j: z
  6. *        这个函数是让系统进入DOS 4G模式                             *3 ?: v9 y/ `& d
  7. *       程序参考了:陈家琪《DOS实方式下直接访问4GB》                *$ H) Q% v1 l, c
  8. *                                                                   *4 A+ }  D4 Y1 t
  9. *       使用: openA20(); set4gb();                                  *
    - l( f4 e, P( w- K) X9 O4 U: P! x/ F3 N
  10. *                                                                   *
    1 d. X1 D1 ?  W
  11. *   ===========================History==========================    *1 x" ]9 h/ ]' l$ h0 u( Z
  12. *    author: bini                                                   *
    7 D, @& Z& U5 S7 a% B+ ]2 N! b
  13. *      date: 2004-11-30  Frist version.                             *1 `. D3 D, v6 X( X8 A
  14. ********************************************************************/& `4 ^& F3 }% t
  15. # |- y# C: C, O7 N" l( H$ a  y/ s5 }
  16. #include <conio.h>0 d& B- [$ y- H% F9 D5 I
  17. #pragma inline3 m! N* f2 Y6 q

  18. 1 ~( e4 q1 g4 G- d$ r! B
  19. /***********************************************0 k  e! F7 d* P
  20. *    两个GDT,第一个为系统使用,不管,默认为0   *
    ' l; H( L. W2 i
  21. *    第二个为一个数据段,没有代码段。           ** m, N+ \3 l% N
  22. ***********************************************/
    : e" P% U, }3 U- N$ t! V3 ~
  23. unsigned long GDT_def[ ]={0,0,      /*系统使用*/' k, h- @# {- [1 S( n
  24.                           0x0000FFFF, /* hi16bit( 0~15 ) is base low=0, $ `% B- _0 y5 c& V0 H- M7 h( U( T
  25.                                          low16bit( 0~15 ) is limit low=0xFFFF $ Z' F6 {7 V" k2 m' b9 N' \" G' s
  26.                                       */
    % R" S8 T( _: g2 F& q
  27.                           0x008F9200};/* 最低字节为 base( bit 16~23 )
    ' ?4 _( X( T0 f
  28.                                          最高字节为 base( bit 24~31 )7 B  ^2 r+ R* e& s4 ]% k# E8 ]
  29.                                          % O7 e, n/ c  x( r, F' t* U( k' I" x5 o$ R
  30.                                          属性Attrib = 0x8F92
    ; f7 b! J$ l/ ]* e! m# R- ~
  31.                                          & i+ M, [' K0 w6 O
  32.                                              属性位Hibyte低四位为 ' o9 h/ V* e* g
  33.                                                  Limit( 16~19 )=F
    , F+ K# g7 ?4 L8 R2 Y1 T2 \& }
  34.                                              属性位Hibyte bit7 为粒度5 y) i% P7 {6 i
  35.                                                  (值1=4KB粒度)
    6 _: \) Q1 N* X1 H) \1 p' y9 j
  36.                                                  8F & 0x80 = 1% [: o/ J, k) @. r
  37.                                                  ) p! k% T. h( w0 r# h. a, u
  38.                                              属性位Lowbyte低四位为段类型,值=2& S( `2 Q! X1 s. n  g
  39.                                                  表示为可读/写段
    ; ~, f% g" ]; e6 E- q2 F  {7 {
  40.                                              属性位Hibyte高四位=9,bit3=1表示:
    : X$ u6 B2 H, R1 J- _9 @/ Q
  41.                                                  描述符对地址转换是有效的。
    9 `2 s* K. S! _$ @
  42.                                                  bit0=1表示为:
    ; g6 w; f) j. y, m
  43.                                                  系统段描述符。而不是门描述符。2 k% m; e1 x. r' K# M
  44.                                              7 K- t6 b9 J4 G: T
  45.                                          */
    1 C* v4 e0 d) E/ A+ ~* b% g) e( U
  46. 6 q/ L0 D  `3 T1 _. \9 b+ R% Z" L
  47. /****************************************0 M+ A; Z, U8 D! [  S
  48. *    GDTR寄存器, 48bit=6bytes            *2 Z! V9 \' k% w6 Q
  49. *    +-------------------------------+   *2 O8 Y, b- H: ^' I5 O) A5 d
  50. *    |   32bit基地址       |16bit界限|   *5 G% A7 j# w4 n  M, s. i
  51. *    +-------------------------------+   ** K; k+ w* I. T8 u
  52. ****************************************/
    7 K5 l$ `" p( f( x6 {' T
  53. unsigned char GDT_Addr[6]={0};
    7 `. d( v( T4 Z/ v- g
  54. 1 ^2 J! I9 Y. r* }7 S# m
  55. /****************
      f. ~, a. C5 L4 Z' j+ D
  56. *    打开A20门    *6 c$ o+ ]+ z7 X6 m, E. l
  57. ****************/& U, ^1 k+ L* B7 C1 _
  58. void openA20(void)+ ]6 q' T) O" e3 [, j1 Z
  59. {
    # K% D1 U5 p( w. M
  60.     asm{5 M2 c+ V. g1 p2 E- `  Y/ p# E
  61.         pusha! [. E* O8 H0 ~6 J/ n( p
  62.         in         al, 92H' s5 Z% y% e) {6 b% l2 f/ E4 V
  63.         or         al, 0x02. ]" v, ~/ V7 g: q3 ~5 ^
  64.         out        0x92, al9 n3 G# u* y" u) C+ g
  65.         out        0xed, al
    ! E, J9 K, Y% c9 x
  66.         popa! H# E$ j- k0 q: [  `
  67.     }
    ; L# }* |5 ?. D1 \- T: E
  68. }' l: Q! {; l8 \2 l6 n. B
  69. . h* C( [3 X+ ~( e+ U+ j1 Y. t
  70. /***********************************************
    4 J( U3 X% l0 X3 G9 R
  71. *    函数功能:进入DOS4G                       *
    8 y, `+ N3 h& v$ V% }  L+ f, ?, R
  72. *    ====================                      *
    " L1 w( [  u; v! k
  73. *                                              *% n: Y% H$ L6 E1 c
  74. *    GDT描述符界限计算方式:描述符个数*8-1     *
    ; k% f" \5 F: ?
  75. *   如:                                       *7 q+ V  }7 S  u: ^  X" a8 X3 _  ~
  76. *        mov    word ptr GDT_Addr[0], (2*8-1); *
    7 K8 q* Q/ ^+ [5 N6 T
  77. *       表示为 2个GTD                          *
    7 x# u& G% j) l' Z- z; v
  78. *                                              *
    9 X. Q" h& M" S) |) z
  79. *    选择子为所在描述符内的字节偏移。          *1 r2 K( n& Y# C. I& Z
  80. *                                              *) v) z( f3 D9 l# Q8 ^4 k" I+ Y% M
  81. ***********************************************/( J5 d1 b& Y7 J. F0 u+ r. e
  82. void set4gb(void)
    : a9 @3 B3 h- B/ [/ \; o2 k
  83. {
    9 D" L& ]1 T5 T/ a& B' h( W. t
  84.     asm{
    " l# O4 ?$ Z4 q$ N8 D) M& J9 B+ p3 L
  85.         cli/ [% R% {% J$ u
  86.         /****************************************, C+ {0 }4 ~5 \8 \' H4 ~" j
  87.         *    GDTR寄存器                          *
    : A- H; w, [6 |1 s/ ]
  88.         *    +-------------------------------+   *
    1 p/ S& [; l1 Z0 h( ]
  89.         *    |   32bit基地址       |16bit界限|   *
    7 q7 Q5 ~& e8 @
  90.         *    +-------------------------------+   */ F8 V' I9 C! L3 n
  91.         *****************************************/* ~" n; G8 x0 t* ^, D
  92.         /*********************
      l; h) _1 y/ ~2 F+ M
  93.         *        得出段界限       *
    , {% h6 \7 P3 m& o( a4 I! N
  94.         *********************/. f, @: ]/ d1 X; I; |
  95.         mov        word ptr GDT_Addr[0], (2*8-1);3 H% H. {! F1 ~% a& x1 V
  96.         /********************************************
    4 u  u6 k6 H/ K" F  r
  97.         *    计算GDT表的32位基地址,存入GDTR        ** t4 H4 B+ b, u+ g$ V
  98.         ********************************************/  r. `. ?3 q* U, \# P, y
  99.         mov        eax, ds
    7 L5 }: i- W: O2 {
  100.         shl        eax, 43 w3 t, [, J; i: }
  101.         xor        ebx, ebx
    & ]1 s: D7 Q6 j4 K
  102.         mov        bx, offset GDT_def
    ' r1 [7 A) x0 n. l5 s$ Q- i
  103.         add        eax, ebx6 e5 N1 U- y) P# b  q) `
  104.         mov        dword ptr GDT_Addr[2], eax
    4 w% _/ ~7 @+ p
  105.         lgdt       fword ptr GDT_Addr2 ^1 I( W5 C5 t# H0 N6 h+ u1 t8 I0 e
  106.         /********************
    0 l% ~' R  j2 _+ h8 _/ h& B
  107.         *   选择子偏移      *
    , G/ S6 ]; r: U* n# w
  108.         ********************/
    5 y1 W0 Z% J2 N) x- s0 k, [
  109.         mov        bx, 8! Q- Z6 D& h8 x, S" h4 C0 {/ Z
  110.         mov        eax, cr00 m: L5 O+ A. f5 y
  111.         or         al, 1  m( u4 K: U5 ]+ ^' G
  112.         /**********************
    . n& H! @$ w9 D: v
  113.         *     进入保护模式    *
    " h& j- j" t9 ]
  114.         **********************/
    * w4 _+ v( x3 x
  115.         mov        cr0, eax
    - ^9 m* w: k" S3 E  T- |
  116.         jmp        pMod' g; ~# T. |2 D7 p) q- n- S: }4 N# }+ a
  117.     }
    ( w  E) t' q6 d6 A+ |6 S
  118. , {& C' Y) }  f# I' E# N
  119.     pMod: asm{
    : Y; y1 e: Y6 d  ?) b" Z
  120.            /************************************************************* u+ E6 ^* B( X! I/ X1 v' f7 e
  121.            * 让fs与gs加载选择子,使其能访问 0xFFFFF * 4K (4GB) 空间    *
    % a! r3 D  g$ S5 a. m
  122.            ************************************************************/
    " u3 V8 l; ]! j+ j* u& J$ c; ~! O
  123.         mov        fs, bx. ~- G  I! V) o# {) U" b& R2 w
  124.         mov        gs, bx
    , `& _2 J- g/ U
  125.         and        al, 0x0FE) Y! K2 p" }' o7 z1 P
  126.         /******************
    ; I& T+ E" g0 F8 t! k* x& i" `
  127.         * 进入实模式      *# @! N5 H) p7 [% ]) G; ~
  128.         ******************/
    9 O* F0 ]. Z8 Z" \5 y/ w) }! G
  129.         mov        cr0, eax& P1 \/ h5 p! h0 j* P# S) r
  130.         jmp        rMod
    ' a: I' S0 Q3 A' E
  131.        }
    2 [8 U: Z7 \3 K. o! Y
  132. $ ^  F( J6 I+ H! H! _" d9 E# S
  133.     rMod: asm{5 R* G9 K% P. X2 n- m
  134.         /* ******************************************************************
    * x8 Q% N1 o% F" r* M
  135.         * 退出,fs、gs清0,访问系统内存可用: gs[32位,相对于0的偏移地址]     *6 f# ^9 [7 I5 m3 [5 P
  136.         ********************************************************************/, e! x& I) z7 u4 V8 @/ B
  137.         mov        ax, 0- }. o/ [) x9 r! D9 j# R
  138.         mov        fs, ax
    8 f8 ?  o3 @5 J2 N
  139.         mov        gs, ax/ k; Q) F8 m7 o! j7 j
  140.         sti
    ' j( m8 U" I2 H* k: G9 J1 N5 o4 i3 R
  141.     }
    $ E# O/ F$ e. W' O
  142. }
复制代码
这是asm的
  1. ;/********************************************************************7 ]2 k; c4 J) I" f& c6 g4 G
  2. ;*    File: DOS4G.asm                                                *
    9 m  A5 T9 f7 P; W0 n" @5 t5 z, ?9 e1 F
  3. ;*       Compile with masm ( Editor: Tab size = 4 )                  *
    ! b4 W  c0 Y$ `( A( l- r! q
  4. ;*                                                                   *
    ; D& [% @. ~5 f# {4 g3 }, e$ F
  5. ;*    ========================Title===============================   *0 ^9 e1 a6 X4 A: J7 I1 l
  6. ;*        这个demo是让系统进入DOS 4G模式,进行数据访问               *
    2 P- h8 i9 ]) y: n; _4 c- x
  7. ;*                                                                   *8 |5 t! l  f8 o7 A, l
  8. ;*   ===========================History==========================    */ c7 u3 f+ D* K8 `/ G/ [
  9. ;*    author: bini                                                   *
    3 Y0 K3 E! a1 o/ h1 d9 N& r4 P
  10. ;*      date: 2008-10-08  Frist version.                             *
    / p6 ^/ p0 i! t% j* b# V" ?
  11. ;********************************************************************/ 6 y. t+ U2 b: [  j9 Z6 F( R, P' y# {
  12. .model small$ f( d1 R$ z' K1 w# M
  13. .586p
    * {0 b% S% @/ x4 w( a
  14. 3 N) O) ]% [( s3 a* Y$ U  \
  15. DSEG  SEGMENT   USE16                 ;16位数据段5 e6 {% M0 K) S% O$ A9 l

  16. 2 {( l* H, h' J/ S0 K
  17. DESC            STRUC2 V% V" {0 C) u1 I! q6 [
  18.         LimitL          DW      0 ;段界限(BIT0-15)
    4 g+ _3 j- U' e2 X5 |* U; D4 G
  19.         BaseL           DW      0 ;段基地址(BIT0-15)
    8 @% s) a5 ~+ j! n2 C$ R
  20.         BaseM           DB      0 ;段基地址(BIT16-23): L$ x! {* k9 V' h5 [6 w
  21.         Attributes      DB      0 ;段属性
    / K0 e! u1 y$ y8 y7 r
  22.         LimitH          DB      0 ;段界限(BIT16-19)(含段属性的高4位)
    4 s3 P5 U' u' x0 ~, j
  23.         BaseH           DB      0 ;段基地址(BIT24-31)$ C# Y& a2 ?9 Y, Y+ ~9 S
  24. DESC            ENDS8 K0 x  T" v0 t

  25. 5 F/ P/ G4 ?  n/ H/ r! R, t  X
  26. PDesc           STRUC2 _; w$ p5 ^( x6 m. @# z6 R. E
  27.         Limit           DW      0 ;16位界限( ?& j. j; }) y" s8 D- H* Y/ \" w) U
  28.         Base            DD      0 ;32位基地址$ l" f2 h- K2 a6 @( B
  29. PDesc           ENDS! `7 L( T: @( A5 T( g7 x
  30. & u- H2 U8 L- I, @, W& a, ]
  31. GDT_def         Label   Fword' e9 l8 ^* _3 I% L' _, i- q6 O
  32. Null_Desc       DESC    <     0h,  0h, 00h, 00h, 000h, 0>
    3 ]' i4 z- C1 V# s3 d, K
  33. Data_Desc       DESC    < 0FFFFh,  0h, 00h, 92h, 08Fh, 0>4 y7 ]3 ]/ B3 q( r8 {
  34. $ W/ F4 G9 q% ]/ l" h. r/ _
  35. GDT_Addr        PDesc   <$-GDT_def-1, >
    / H1 R; v* F7 E" Q
  36. DSEG            ENDS                          ;数据段定义结束
    + U( T  }) E  t- A* g! }+ X1 K; e
  37. 6 u0 C; k1 v' C2 _, r
  38. CSEG            SEGMENT USE16                 ;16位代码段
    / }  i9 z4 g' o4 p- h, y
  39.                 ASSUME  CS:CSEG,DS:DSEG3 [2 W7 j9 m9 {: Q' k3 B! I" _
  40. .Startup
    % V0 P3 @1 p- d
  41.         call      Set4gb
    * L- U1 n$ N! K+ m
  42. ;
    $ G3 T" a2 I$ x! e  W9 v- q3 C3 k& z
  43. ;       fs, gs即能访问4GB空间
    6 E4 Q* m" q& o# Y
  44. ;       write your code in here.
    4 A2 [+ G, w2 e8 ?2 E% h2 K, u
  45. ;6 E6 e6 l3 B" o% M2 g  R- `% r
  46.         .exit
    3 R% c2 x9 T$ n# U2 Y% \
  47.         
      P% ]% d; G' k% W! A; K7 |
  48. Set4gb          PROC      NEAR
    - m% E+ C% q3 A6 e1 @$ B4 G* ~/ E0 X
  49.         in        al, 92h
    ( v. C+ h7 F* g
  50.         or        al, 002# `) ^, b, s' ^' p& j# A6 d. `0 Q; V
  51.         out       092h, al+ |% j3 |( D1 s1 g* T( ~$ o, T
  52.         out       0edh, al
    9 W$ L7 I- A3 C- ], d

  53. ! v6 \, C, Y) q
  54.         cli
    6 u. ]. [' Q& L

  55. % y& k1 u6 \3 H7 P2 p6 A
  56. ;        mov      word ptr GDT_Addr, (2*8-1);: {0 a! s+ |9 ?' t' D; g+ S, ]/ J) b, Q

  57. 8 Q4 _- K$ c$ i  n- @; L: T6 Z* \
  58.         mov       eax, ds
    - ^7 j5 k# j7 k) l% o1 }
  59.         shl       eax, 4* _( M5 q$ f/ x' D) j) E* z
  60.         xor       ebx, ebx
    - H" }. i4 Q% P- b# e
  61.         mov       bx, offset GDT_def. {! Y0 X& O& p  x- R
  62.         add       eax, ebx$ a! r) z! G% \" j& I" G. A
  63.         mov       dword ptr GDT_Addr.Base, eax
      g9 {8 m( b, a  F5 t# [% s
  64.         lgdt      fword ptr GDT_Addr
    * k# I1 L0 k7 G4 e

  65. 2 |4 z  K6 ~/ C2 A$ o
  66.         mov       bx, 8
    , W. N, E! I3 ~$ w
  67.         mov       eax, cr0
    & p9 A0 ~1 A+ a% U
  68.         or        al, 1
    1 L9 f* ^& @8 l! S  L4 ]1 U% L
  69.         mov       cr0, eax/ i! O7 G' Z1 M0 G5 J8 H! X5 l

  70. 6 h- L+ B# x) u( t
  71.         jmp       pMod
    5 _( U0 P7 e) n$ y' R( i4 V
  72.     pMod:5 T5 k& T- a: a0 P+ |  d& Q- x
  73. ( u9 W/ g, j& E
  74.         mov       fs, bx7 C! c1 ?/ a/ G3 l- ~3 G
  75.         mov       gs, bx- h% d8 H5 C* h* |* ]  \
  76.         and       al, 0FEh
    ( V6 U% x% e! w) V: Z. D. z: ?
  77.         mov       cr0, eax7 e' W, N  ?. h" f' L
  78.         1 w2 P( ]5 ^5 M$ Y. S
  79.         jmp       rMod! t, ~' T+ S2 _" k$ B, d( X# y
  80.     rMod:
    # i# [5 K9 @% K, W
  81. 8 \1 v6 Y( b0 L
  82.         mov       ax, 0
    7 c2 \  f$ d4 o# x  \; `
  83.         mov       fs, ax
    ! N' i- L; M2 L6 k: `
  84.         mov       gs, ax+ s4 z$ S$ Z# J1 i
  85.         
    # |+ `/ r+ }; w% k+ E
  86.         ; 在2M的位置测试写一下数据
    % K2 l3 O7 r& G" M
  87.         mov       esi, 200000h9 l* p7 \9 R% D+ L+ c
  88.         mov       dword ptr fs:[esi], 055aa55aah
    ( W* ^2 Q0 K9 o: F; C% u! b9 R
  89.         ; 用RU去看看200000h的位置是否是此数据....
    ( r5 f: S1 t. a

  90. ; O  t/ x8 a, A8 Q! e/ u
  91.         sti* ]* K! `- b# {# ^$ A, m9 {5 N. P9 |
  92.         ret
    % {4 B) |8 u: D6 o7 B* t7 A
  93. Set4gb  ENDP; ]/ `; H. d5 t" F$ X, G% x' w, g
  94.        - i3 }* F& J" d5 B
  95. CSEG           ENDS                              ;代码段定义结束
    / e5 f7 \/ O2 \8 p
  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选 803861 d5 {, h) I! B" K1 n
: H" k3 u! \7 I( s2 _
option->compiler->code generation中的option选中, [X] compile via assembler' n# U. q* E- b7 H3 Q

' B/ ^( @9 }  i, K3 a5 l6 a- ?[ 本帖最后由 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;* f9 \( z. A  }2 j4 z  m2 @5 R' s
Data_Desc       DESC    &lt; 0FFFFh,  0h, 00h, 92h, 08Fh, 0&gt;0 Q9 N9 j& A# ~8 r
* X5 M3 Y6 N) q* t% _
GDT_Addr        PDesc   &lt;$-GDT_def-1, &gt;
3 T( b5 ~, g. P5 v2 u* o- ^% ? 替换如下,
( u9 ^! y8 i3 fNull_Desc       DESC    < 0h,  0h, 00h, 00h, 000h, 0>
. C& u0 F; J5 |$ i: nData_Desc       DESC   <0FFFFh,  0h, 00h, 92h, 08Fh, 0>  e7 Q5 b* O# T2 f0 q9 V8 _

" U  N! n' [3 n9 |9 x+ D5 aGDT_Addr        PDesc   <$-GDT_def-1, >
, D; X; r  P( E3 ^3 j0 |# h这样你就能编译通过并且可以运行
回复

使用道具 举报

发表于 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 ]! D& L) e: c  o
option->compiler->advanced code generation中的instruction set选 80386% `7 Y" B4 Y# v  K
4 S) t3 U+ j% J
option->compiler->code generation中的option选中, [X] compile via assembler
! V' b5 A$ e7 @! ?$ P3 k8 E6 v* I
   作了上述设置之后还是不行,编译的时候提示: cannot find executable: TASM. 我换了几个版本的TASM还是没用,除非拿掉含有32位寄存器的那些code才行。这个是什么原因,请各位大侠多多指教
回复

使用道具 举报

发表于 2010-4-12 10:27:08 | 显示全部楼层
原帖由 A_jack 于 2010-2-26 10:47 发表
5 R8 {2 T7 u: T  N, E, Q
4 M- @6 q7 ]& f9 T2 h5 O   作了上述设置之后还是不行,编译的时候提示: cannot find executable: TASM. 我换了几个版本的TASM还是没用,除非拿掉含有32位寄存器的那些code才行。这个是什么原因,请各位大侠多多指教 ...
. |5 b9 B8 I" m+ p8 B% h7 m
- B. S5 W, X( w% @2 B
我也是相同的问题,请问哪位有解,谢了!
回复

使用道具 举报

发表于 2011-2-21 21:04:39 | 显示全部楼层
option->compiler->Transfer 设置TASM的路径,就不会提示找不到TASM;" ~, b3 D7 x# G( d+ j: u: _3 |
还要把TASMMSG.exe拷贝到源代码(工程目录),就可以编译完成了。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-9 16:54 , Processed in 0.026478 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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