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

DOS 4G big real Mode Demo code。

[复制链接]
发表于 2008-10-8 14:29:37 | 显示全部楼层 |阅读模式
刚学习的同学,有些还不会,我这里贴点C和asm的代码。只供参考。5 K' V3 c* N' v2 T* I4 q& r
# L3 {& L. k6 Y" _4 F$ O
这是C的
  1. /********************************************************************
    + O  V; A& @8 z8 R: B0 k' M% s
  2. *    File: DOS4G.H                                                  *
    6 a. j9 K$ G9 |" s, c/ D- g% @
  3. *       Compile with BC 3.1 ( Editor: Tab size = 4 )                *& a: n& S/ `5 w: W, R
  4. *                                                                   *$ r2 v. u) _1 r1 T6 A
  5. *    ========================Title===============================   *- p8 q- @. G/ A) n" Q1 c( `6 z
  6. *        这个函数是让系统进入DOS 4G模式                             *7 r$ i! s9 j  J' @% P
  7. *       程序参考了:陈家琪《DOS实方式下直接访问4GB》                *
    ! \! ?& C: J6 ]: K6 U
  8. *                                                                   *
    9 @, T6 |0 U) g
  9. *       使用: openA20(); set4gb();                                  *
    ) p% |$ J' g- z6 F! g- W4 i
  10. *                                                                   *
    . F: C" @1 Y7 [# ]( V/ i1 L( q+ X
  11. *   ===========================History==========================    *
    6 z% E1 z! I, ^& l7 z
  12. *    author: bini                                                   *; N6 R& L& F: _& k- ~
  13. *      date: 2004-11-30  Frist version.                             *
    6 ~8 Z# ]* ?0 L. f
  14. ********************************************************************/3 B( W7 f- b/ W7 ~) E7 m0 d6 I9 f

  15. 0 }. E" o/ N) N3 K
  16. #include <conio.h>
    ( ~+ {. A( K/ P4 h' F+ k" ?6 K- h: b
  17. #pragma inline7 p( I5 O* h; v$ ?2 ?: V

  18. 5 h: }1 C: G0 s. [2 N, z3 R5 Q
  19. /***********************************************
    ; p9 H+ E# o: |) j# c
  20. *    两个GDT,第一个为系统使用,不管,默认为0   *
    $ t& z0 G: k7 s  X3 c3 o' J
  21. *    第二个为一个数据段,没有代码段。           *1 r# O' V% B' h# D* ^3 I9 E, m
  22. ***********************************************/8 S& P- K+ t2 m% t1 W
  23. unsigned long GDT_def[ ]={0,0,      /*系统使用*/
    8 `4 F1 U& J. D* A$ {% B
  24.                           0x0000FFFF, /* hi16bit( 0~15 ) is base low=0, : G- |1 K9 ~1 L3 T! F
  25.                                          low16bit( 0~15 ) is limit low=0xFFFF
    * _& g! A( z2 s( V) ]8 c( o) [
  26.                                       */0 w4 }2 y9 \& V3 @! i$ a2 W1 w
  27.                           0x008F9200};/* 最低字节为 base( bit 16~23 )
    9 c0 d$ g0 ^1 `+ }/ X
  28.                                          最高字节为 base( bit 24~31 )
    9 A+ M9 J+ J: p2 u9 d6 ~1 |* Y0 O
  29.                                          
    3 a" |4 w  Q+ C! l6 C; y* H: B
  30.                                          属性Attrib = 0x8F92
    4 s3 n  F  ~; T. L% G& V# U
  31.                                          3 H2 U) H. }, r8 j* k2 X5 d& E1 `
  32.                                              属性位Hibyte低四位为
    ! @$ m# h) [6 ]2 N9 c$ n
  33.                                                  Limit( 16~19 )=F
    4 Q; C! b4 c0 ^0 h1 M- y
  34.                                              属性位Hibyte bit7 为粒度
    4 H3 X* v5 P7 J( S3 e+ I0 O
  35.                                                  (值1=4KB粒度)
    ( g1 U/ i2 c% J. |/ Z- w
  36.                                                  8F & 0x80 = 1
    0 O* ]" g0 \; X8 x# ?3 s  R( U2 Z
  37.                                                  $ o+ E' c6 Y, J0 c7 V+ G+ B" \" R
  38.                                              属性位Lowbyte低四位为段类型,值=2* a8 g4 f4 @3 L, G! T
  39.                                                  表示为可读/写段
    : _+ i8 l% Y, g+ g5 d
  40.                                              属性位Hibyte高四位=9,bit3=1表示:0 X% V$ j, k; O5 C
  41.                                                  描述符对地址转换是有效的。8 ^: p0 F6 u3 n% P# z3 c, T+ ~& Q
  42.                                                  bit0=1表示为:
    " d6 R+ |8 ^2 j
  43.                                                  系统段描述符。而不是门描述符。* G3 G" K: k/ B2 A  q6 t, [# t6 u
  44.                                              9 J+ m' p+ C( w7 w, w5 x
  45.                                          */
    % M4 V3 C! |8 H" y3 f7 T. S6 T
  46. * |! m5 Z$ C' s' M( G  [8 x
  47. /****************************************
    1 U+ T0 z( [% {; ~9 b
  48. *    GDTR寄存器, 48bit=6bytes            *
    $ t& _9 e  X; e! Z) H. P1 L
  49. *    +-------------------------------+   *
    0 \9 Q- N  D( L6 c* [% a2 R4 g
  50. *    |   32bit基地址       |16bit界限|   *
    : ~% z4 n8 c, W+ s1 Z) j
  51. *    +-------------------------------+   *
    6 B9 Y( q4 }# c1 y  l
  52. ****************************************/% N7 P- j  v: g7 N3 M
  53. unsigned char GDT_Addr[6]={0};
    7 A  h; D# Z9 Q' [, P) E

  54.   U+ H/ a/ d' _. }
  55. /****************
    , _1 K  [& W% b
  56. *    打开A20门    *
    6 H$ P, E+ F0 d. z8 e. y
  57. ****************/
    * L, a! a6 ^+ f! t
  58. void openA20(void)
    " X: t' \8 X- N8 W3 {8 s
  59. {: ]: d& K/ M9 f5 l6 e% c3 U
  60.     asm{$ ^8 B; Y% y2 ^' E/ D, t' C" T
  61.         pusha
    5 x+ y2 b; x* C# l; W+ J) R
  62.         in         al, 92H9 e8 `- @/ a& d
  63.         or         al, 0x021 n7 j7 b9 ?2 L# J5 d
  64.         out        0x92, al
    " g$ B, N- D# T/ x/ o3 P% \) d
  65.         out        0xed, al0 ^( _) e/ K# H- n; {# g' `
  66.         popa
    1 Z4 F- u# B% Y* M, u* O$ m
  67.     }
    : m: c- R2 p6 y( T* w
  68. }
    0 d! O: V3 J  n* b9 w
  69. 1 B0 h7 b2 q# s3 i0 S8 K! o
  70. /***********************************************
    7 K. J8 e% G4 L# P
  71. *    函数功能:进入DOS4G                       *; A8 M/ }2 s9 N" N3 I" }& ^( `
  72. *    ====================                      *
    - J5 U/ g5 @( d! b: _+ _
  73. *                                              *
    6 Q6 k  U% w/ j9 d& p6 d
  74. *    GDT描述符界限计算方式:描述符个数*8-1     *
    0 c4 Q5 O' e5 n* X% _& K
  75. *   如:                                       *
    % T9 e; `2 d. I; L
  76. *        mov    word ptr GDT_Addr[0], (2*8-1); *7 R4 u- O4 f7 p) D* Z8 o. Z. N, u
  77. *       表示为 2个GTD                          *( g2 b9 f0 Z* \( H% C
  78. *                                              *
    6 V1 u# P2 C2 X8 M9 b( i6 @
  79. *    选择子为所在描述符内的字节偏移。          */ \  N; u7 |3 l! q3 F- F
  80. *                                              *
    5 N- o* P9 M& W. R" `9 y( v( G( z4 G/ A
  81. ***********************************************/
    : N# b& t1 |* c3 s" x0 C
  82. void set4gb(void)0 Y7 z5 {7 B5 O
  83. {
    ( ~$ f% u) T- _. A+ T( @" i
  84.     asm{
    7 B2 [* S, V* H& Z
  85.         cli5 t5 K8 x2 M' R2 A
  86.         /****************************************  s) A& T' a2 Z4 ~1 n4 K+ ]
  87.         *    GDTR寄存器                          *
    $ u& |; Y; S* J3 t$ L) `
  88.         *    +-------------------------------+   *9 W5 P* K5 G: a5 S2 H; x( o1 K
  89.         *    |   32bit基地址       |16bit界限|   *
    + W( {5 `1 N6 i. {' C3 ?( ^
  90.         *    +-------------------------------+   *
    9 b, V% y: V4 A; L. t# x$ W
  91.         *****************************************/6 G9 G; ~: q1 \- I7 U
  92.         /*********************
    0 j8 F# s( P( X
  93.         *        得出段界限       *6 @$ n* x  A' v4 }3 u4 `
  94.         *********************/6 T' V8 ~5 ?2 p% i$ ?
  95.         mov        word ptr GDT_Addr[0], (2*8-1);
      |5 j6 a* W, n8 }- s
  96.         /********************************************$ E) p+ L  Q0 b: h) V- @
  97.         *    计算GDT表的32位基地址,存入GDTR        *: h5 k3 p$ `: Y8 }) v( z& p5 u
  98.         ********************************************/# d/ J8 C) v" {$ B5 \9 @) N
  99.         mov        eax, ds
    9 }# X% l1 L+ n6 G0 y. v( C
  100.         shl        eax, 40 n" l6 U4 Z; |: ?% K. T% T- u8 k. q
  101.         xor        ebx, ebx( M3 ?5 T# a  ]; q# ^
  102.         mov        bx, offset GDT_def
      W5 ^7 l2 J. f0 E# P" ~" N
  103.         add        eax, ebx
    & s! [! J' N  C& W7 J" i
  104.         mov        dword ptr GDT_Addr[2], eax
    5 M( {+ h3 Y$ X% t% N
  105.         lgdt       fword ptr GDT_Addr
    ( z. g! H! s! k. \& X% d1 g; X' K
  106.         /********************2 y, f& u, O% i& I/ i) Z/ L' h2 s  m
  107.         *   选择子偏移      *
    * O6 N4 z8 Y6 b4 b4 t2 V* C; `
  108.         ********************/
    $ M" @( N3 R- R" S
  109.         mov        bx, 8
    6 W( S* A# S: a& P8 i# \
  110.         mov        eax, cr0
    2 J; A1 m; A! T, ~7 P5 a; D, U% K
  111.         or         al, 1# r, r) O! W! H& }9 k. B4 [& s7 ]
  112.         /**********************4 W; d1 s; Y0 G5 ]9 g$ S2 r
  113.         *     进入保护模式    *# l; M  O7 f3 Y9 f- `7 O
  114.         **********************/
    ) s# N# i5 C- t5 a9 s
  115.         mov        cr0, eax5 I% ^5 W$ b# E9 o
  116.         jmp        pMod
    $ V0 j0 T3 z- K" U6 m
  117.     }) }: t$ W* @: N5 _
  118. 9 R* W1 ^+ @- d  v) k* Z0 ^/ X1 K
  119.     pMod: asm{
    8 r3 }' e2 B5 \
  120.            /************************************************************
    6 t5 C- g+ _4 M: A6 _8 ~& c
  121.            * 让fs与gs加载选择子,使其能访问 0xFFFFF * 4K (4GB) 空间    *- ]  e, u3 H+ {$ j, U" f
  122.            ************************************************************/
    2 \! y" E" L+ x: U3 K0 Q' p
  123.         mov        fs, bx
    / F% ]) ~8 Q/ L  o: ~" N
  124.         mov        gs, bx& ]. D9 V( P4 e' }! [
  125.         and        al, 0x0FE/ v) [: J5 ?$ e; R
  126.         /******************( _" q9 U8 a$ L/ k0 [
  127.         * 进入实模式      *- j+ ^0 S/ O0 j) S, c5 H
  128.         ******************/
    & g7 ~8 L4 Y, @& T7 R
  129.         mov        cr0, eax
    - D% C' a( [" u) D0 ?
  130.         jmp        rMod
    % n& h8 |. [; m
  131.        }
    / C9 ]: l- K8 E3 C7 U

  132. & g# W' x  U  H* h' n* D6 {4 t/ r
  133.     rMod: asm{. S- f3 L  G: y$ E+ X# A
  134.         /* ******************************************************************
    % ^. [; I- D8 |  o
  135.         * 退出,fs、gs清0,访问系统内存可用: gs[32位,相对于0的偏移地址]     *
    2 |; c) Y* r+ Y4 G' S
  136.         ********************************************************************/* _4 V' v$ t; I4 ^( X0 ~8 M  Y+ ^/ P
  137.         mov        ax, 0
    ; y9 R+ P1 @3 L# N+ Z  m
  138.         mov        fs, ax
    * k+ ?* O/ ^. c7 `, o
  139.         mov        gs, ax& _# B& r$ `% _3 N/ z8 I2 W- Z
  140.         sti
    / _0 v2 {5 ]- m
  141.     }
    * `8 [4 k9 I* y* J
  142. }
复制代码
这是asm的
  1. ;/********************************************************************* y4 B( m  a4 O& Q
  2. ;*    File: DOS4G.asm                                                *
    9 F! B% U6 W+ W$ H& R3 t) K1 [& }
  3. ;*       Compile with masm ( Editor: Tab size = 4 )                  *
    % U. v" o4 U) A- |
  4. ;*                                                                   *5 u+ B) s8 \9 k
  5. ;*    ========================Title===============================   *7 J) [6 m6 m; |- h" D
  6. ;*        这个demo是让系统进入DOS 4G模式,进行数据访问               *
    ) ?4 {, ?" F  G( M0 ~9 r
  7. ;*                                                                   *! Y& U, @7 m( m5 k7 Z/ w
  8. ;*   ===========================History==========================    *
    ' k9 Y7 E6 t/ t% f1 U
  9. ;*    author: bini                                                   *
    7 `" n9 F4 v# _
  10. ;*      date: 2008-10-08  Frist version.                             *
    - u$ y, {/ \3 ~' o6 c
  11. ;********************************************************************/
    2 _, M9 E3 x5 `: V3 [
  12. .model small
    / N6 i6 s5 b! y1 O
  13. .586p
    . F' H0 q) \- ?% t- U! N
  14. 5 ]( t! H1 @) U/ p3 o
  15. DSEG  SEGMENT   USE16                 ;16位数据段6 f4 p: ]* ?/ m; Q

  16. $ m& H$ N' w- A1 B2 t! R; [: ?: r
  17. DESC            STRUC
    # y! _' n6 ^! S3 X5 Q6 \5 M
  18.         LimitL          DW      0 ;段界限(BIT0-15)
      l* I5 s. K0 j6 o7 p- w" J5 }
  19.         BaseL           DW      0 ;段基地址(BIT0-15)# b. `! W) L# c' _6 {& o
  20.         BaseM           DB      0 ;段基地址(BIT16-23). y/ W+ Y; N1 j* h
  21.         Attributes      DB      0 ;段属性
    5 N' S& t3 f$ [. p6 x3 w" T- I& m
  22.         LimitH          DB      0 ;段界限(BIT16-19)(含段属性的高4位)  N6 z& x1 l; B8 |* {/ e
  23.         BaseH           DB      0 ;段基地址(BIT24-31)
    # H2 T* n4 {' A# N2 d  W/ w
  24. DESC            ENDS
    / o" o/ v  s- F, e! v

  25. , H% Y0 D* b9 z" y* W7 m( a. ]. j
  26. PDesc           STRUC* ?# o& {  D4 c9 b
  27.         Limit           DW      0 ;16位界限
    ' Y& A  p; O' N0 `. K+ Z5 p
  28.         Base            DD      0 ;32位基地址7 R' b$ d) x, O
  29. PDesc           ENDS
    2 z. _2 T8 h, c& H- |3 R

  30. * q5 J: W( X% L1 H
  31. GDT_def         Label   Fword
    9 d2 r8 C; t8 F& ~& g: K( x! m6 I
  32. Null_Desc       DESC    <     0h,  0h, 00h, 00h, 000h, 0>
    9 Q: M7 c1 T8 b/ _+ J* s
  33. Data_Desc       DESC    < 0FFFFh,  0h, 00h, 92h, 08Fh, 0>
    $ d8 t( r. o$ {& D  J1 u

  34. : Y1 {, x2 |) m9 x& N
  35. GDT_Addr        PDesc   <$-GDT_def-1, >
    3 s/ h' n, B6 \9 H& ^
  36. DSEG            ENDS                          ;数据段定义结束; H" n6 R. q6 x! [* I; N) Y

  37. 1 N7 q1 {% U& C+ U/ x
  38. CSEG            SEGMENT USE16                 ;16位代码段
    * p; r. D7 q  ]3 q5 k
  39.                 ASSUME  CS:CSEG,DS:DSEG
    4 \. v/ A6 F. h$ y, @, w' q
  40. .Startup
    , `0 P, ], D7 z5 L0 V# }8 i
  41.         call      Set4gb
    7 O& Y+ E( e- u8 w
  42. ;
    6 Q$ R5 P# R' R! _+ p% |
  43. ;       fs, gs即能访问4GB空间
    # t# U  Q+ g: P6 Y
  44. ;       write your code in here.
    + a9 @$ y, ^- x0 |
  45. ;1 I) R" S6 b  x* [) J
  46.         .exit8 V: z5 @, z; z! i) x# s
  47.         
    ) ]8 F, C  z% K( n6 L
  48. Set4gb          PROC      NEAR: I2 R8 e: g* ]  b
  49.         in        al, 92h
    1 \2 e5 Y& M& @
  50.         or        al, 002
    : Z, J& c$ M  f
  51.         out       092h, al6 z4 }; ~& H6 |6 o# z# ?8 Q3 z. D7 ~" `
  52.         out       0edh, al. n7 S+ y( V, Z% j; A" K  U0 X
  53. 8 z" Q9 w' m: z) r7 z
  54.         cli7 Q' u1 ]& A. s& V* _1 L, _& ?7 x2 p
  55. 5 E) Z9 Z& M; V% G6 T6 n! |
  56. ;        mov      word ptr GDT_Addr, (2*8-1);' K. H9 V' V1 A7 E( j/ U- U

  57. 8 H) n2 B0 e3 r- n5 p
  58.         mov       eax, ds8 l: W/ K" W5 a6 b; d
  59.         shl       eax, 4# @) w3 \2 ?% R9 C, e
  60.         xor       ebx, ebx- O4 F6 U) n$ p; s6 k9 i) [7 L) E
  61.         mov       bx, offset GDT_def
    / V. m1 X1 a  t9 }' v' Z( I2 ?4 r
  62.         add       eax, ebx
    , C. h3 P& r0 K. G+ [
  63.         mov       dword ptr GDT_Addr.Base, eax
    - H- {! d* \4 L: L6 Z6 O
  64.         lgdt      fword ptr GDT_Addr
    5 s7 q& T" _# Y( ^
  65. . e% ^, a3 V2 r( W1 F" x3 C
  66.         mov       bx, 8* e3 b* t6 W& {6 y
  67.         mov       eax, cr0
    7 W  F, P8 T. c- b9 {. j+ `& S
  68.         or        al, 1
    & b3 l' J; S, M* i; H+ M4 |
  69.         mov       cr0, eax
    5 e  x  y. y2 h( H- w0 |- G" B+ R

  70. $ {0 v9 d) i! o, O# X
  71.         jmp       pMod1 J7 l% `' t4 G- a6 Y% }  `0 N/ F
  72.     pMod:
      W& g- N3 D" d( ^/ K- O7 i* i% p
  73. : {9 |# z% \: O' ^% n* A
  74.         mov       fs, bx( r* i% |) v$ W1 F5 m
  75.         mov       gs, bx& M( r' T" T$ s. ]3 ?' {% u
  76.         and       al, 0FEh
    * |# }# E, v" m* C2 i
  77.         mov       cr0, eax& e1 ?) @% A& w" z8 M
  78.         
    2 V, A% ]) }% H' n8 K
  79.         jmp       rMod* ^% T: s2 k' R4 v9 ?9 p7 ~! T
  80.     rMod:
    2 Y; W1 J3 `: J. ~0 t9 I0 x

  81. 6 ?/ Y* ~. M0 X% f
  82.         mov       ax, 0
    . w9 t5 n3 o7 P0 e! {
  83.         mov       fs, ax
    7 V6 C6 y0 H' ]- d( v
  84.         mov       gs, ax
    - `/ r( g4 d" j: i3 w! N8 X7 I6 x
  85.         4 E' s& w+ M! K5 @" z! H* ]
  86.         ; 在2M的位置测试写一下数据3 `! t# Y; x+ X1 W" O. |9 a
  87.         mov       esi, 200000h
    ! x# O# Q/ P: U# a; j' Z
  88.         mov       dword ptr fs:[esi], 055aa55aah
    % f; Q4 d4 A" Y% l# _
  89.         ; 用RU去看看200000h的位置是否是此数据....: W/ M# g7 A4 h0 e9 \1 _
  90. ; p9 ~/ v' e5 c/ z( B  p
  91.         sti% U2 X" z. G4 N0 f. b! U
  92.         ret& M. X2 W; q/ W
  93. Set4gb  ENDP. p+ ~# c; |/ a0 Z9 v# t
  94.       
    ! l( o) h# ~) w7 F+ ~. ^
  95. CSEG           ENDS                              ;代码段定义结束
    + Z/ X4 U. W/ Q/ ]
  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+ w, Q# Q( J  }# H4 e
6 ]# Q# ?, k% s. i9 _: t
option->compiler->code generation中的option选中, [X] compile via assembler5 S% R1 n4 c; s# Q1 h7 B( t! ~. y; C, F

" g) D* @0 w% G# I7 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;
0 ]; I0 }! Z/ ?7 L6 P+ _Data_Desc       DESC    &lt; 0FFFFh,  0h, 00h, 92h, 08Fh, 0&gt;
' L: [( [9 S1 I- A5 q; d" V! D: h. k/ T
GDT_Addr        PDesc   &lt;$-GDT_def-1, &gt;
0 z8 P6 [# a2 z4 W 替换如下,
7 m% T/ X( y0 Y( w# [Null_Desc       DESC    < 0h,  0h, 00h, 00h, 000h, 0>6 t8 ?/ B/ H; m" n% K, o  F
Data_Desc       DESC   <0FFFFh,  0h, 00h, 92h, 08Fh, 0>
) h: p0 d; t1 l! A
6 \0 ]' H* P6 a( [6 W  dGDT_Addr        PDesc   <$-GDT_def-1, >  [: V0 u# E5 A/ p; t  M2 I8 T
这样你就能编译通过并且可以运行
回复

使用道具 举报

发表于 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 发表 2 x' d2 W* Z3 Z4 c3 E3 x1 Y. N
option->compiler->advanced code generation中的instruction set选 80386  @7 b7 c$ R, o. P3 A4 ^

- |1 q1 ]) T2 Y, E5 S" ooption->compiler->code generation中的option选中, [X] compile via assembler

* g! y# J6 M. P. P6 E  v( L3 K   作了上述设置之后还是不行,编译的时候提示: cannot find executable: TASM. 我换了几个版本的TASM还是没用,除非拿掉含有32位寄存器的那些code才行。这个是什么原因,请各位大侠多多指教
回复

使用道具 举报

发表于 2010-4-12 10:27:08 | 显示全部楼层
原帖由 A_jack 于 2010-2-26 10:47 发表 + C* B# }5 [8 P

8 O+ N: z8 R+ i8 U+ x1 M" c5 n   作了上述设置之后还是不行,编译的时候提示: cannot find executable: TASM. 我换了几个版本的TASM还是没用,除非拿掉含有32位寄存器的那些code才行。这个是什么原因,请各位大侠多多指教 ...

$ d4 V1 d+ \6 C5 C
. ^+ H) B9 G4 K; J我也是相同的问题,请问哪位有解,谢了!
回复

使用道具 举报

发表于 2011-2-21 21:04:39 | 显示全部楼层
option->compiler->Transfer 设置TASM的路径,就不会提示找不到TASM;
8 f6 z  d+ V7 l- m7 S( D  i/ Y/ n还要把TASMMSG.exe拷贝到源代码(工程目录),就可以编译完成了。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-21 21:00 , Processed in 0.087564 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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