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

DOS 4G big real Mode Demo code。

[复制链接]
发表于 2008-10-8 14:29:37 | 显示全部楼层 |阅读模式
刚学习的同学,有些还不会,我这里贴点C和asm的代码。只供参考。
& m, |* ]2 |! B  l  Z9 o
+ \: S7 ^4 ?% D' K# H& p这是C的
  1. /********************************************************************
    * s; t) k$ g  A6 ~1 Z0 b' l9 {
  2. *    File: DOS4G.H                                                  *8 |- |, Z4 f9 v8 U) Z
  3. *       Compile with BC 3.1 ( Editor: Tab size = 4 )                *
    , b! ^# m' T  q7 T& J
  4. *                                                                   *! K, @1 I% w2 m+ {: w' v
  5. *    ========================Title===============================   *" \. X0 t2 M1 _
  6. *        这个函数是让系统进入DOS 4G模式                             */ v0 c1 \7 c7 {0 e4 q% V$ v5 n7 v
  7. *       程序参考了:陈家琪《DOS实方式下直接访问4GB》                *# a8 c7 ~0 K, E6 A, Z; l. O! |& d+ C; M
  8. *                                                                   *0 I5 h5 T3 G* |, o2 n/ ^- H9 Y4 g( D
  9. *       使用: openA20(); set4gb();                                  *+ ~$ M! I2 i. |: s! S  A
  10. *                                                                   *
    % C- W6 C: d- d- L6 j0 y+ a
  11. *   ===========================History==========================    *
    5 D" {- O' Q' l, F6 _
  12. *    author: bini                                                   *
    1 l! i* n1 D) N" `2 p# b) @0 f
  13. *      date: 2004-11-30  Frist version.                             *
    5 X& c* ]8 f. q0 Z5 f8 \6 [
  14. ********************************************************************/. c- x) Y( k% H; X9 r

  15. ( }  N* d. ~' B6 k
  16. #include <conio.h>/ ?8 b1 |. y8 k
  17. #pragma inline
    4 W: Y; K% f  Z

  18. - k. p. B8 x; n9 G
  19. /***********************************************- E# |0 x& m+ y( m0 i* q
  20. *    两个GDT,第一个为系统使用,不管,默认为0   *
    8 t! t9 {' H! h# _  ]7 S
  21. *    第二个为一个数据段,没有代码段。           *
    / x) n+ Q+ |4 T& X
  22. ***********************************************/
    / H# q( R! U! |4 J$ [
  23. unsigned long GDT_def[ ]={0,0,      /*系统使用*/2 h$ v: g' @" u. E
  24.                           0x0000FFFF, /* hi16bit( 0~15 ) is base low=0,
    9 t) }+ f) X9 O) A, @9 h: u# c$ B
  25.                                          low16bit( 0~15 ) is limit low=0xFFFF ' J6 l7 i+ t* w+ r7 V
  26.                                       */0 O5 f' j! x( i9 z6 L
  27.                           0x008F9200};/* 最低字节为 base( bit 16~23 )
    8 K6 c$ c- o' ?" B, l( U
  28.                                          最高字节为 base( bit 24~31 )( I/ g- q" }$ K7 G( V* ?( u
  29.                                          0 C6 x' i) U0 ]
  30.                                          属性Attrib = 0x8F921 {5 k1 f; {  k
  31.                                          4 B/ A, U# z& m0 ?
  32.                                              属性位Hibyte低四位为
    1 \1 g* J9 @, J
  33.                                                  Limit( 16~19 )=F
    : P) v9 |2 h- O0 [) [- [  L
  34.                                              属性位Hibyte bit7 为粒度% L. X! @4 B9 N4 B* i
  35.                                                  (值1=4KB粒度)
    $ @) @1 ~) D- d5 p% e& Z& h( ?1 `
  36.                                                  8F & 0x80 = 1
    : V3 J3 a1 o+ Q+ Y. \& I+ r
  37.                                                  " z$ ^# I% t& b0 U# P
  38.                                              属性位Lowbyte低四位为段类型,值=2
    1 e+ [) p# {' @7 ]6 b" b
  39.                                                  表示为可读/写段2 C; T& ]# a  G
  40.                                              属性位Hibyte高四位=9,bit3=1表示:2 z+ B, ~  Z, [' Q
  41.                                                  描述符对地址转换是有效的。
    2 j# i, m/ E5 M4 m
  42.                                                  bit0=1表示为:
    9 a' o/ g( R8 x" A" H
  43.                                                  系统段描述符。而不是门描述符。
    % f- ^; m' O* |% L, x
  44.                                              " V- m3 G: M1 z$ y
  45.                                          */( O2 R6 l% d1 ]" N5 ^8 I

  46. # h1 `0 m: e; x$ U, ^
  47. /****************************************
    + X( s7 k$ o/ [4 B6 {
  48. *    GDTR寄存器, 48bit=6bytes            *  }5 B& s% W6 h+ a- q% U; F9 E4 @
  49. *    +-------------------------------+   *9 x; x7 Z6 f/ [0 ?  I& H4 y
  50. *    |   32bit基地址       |16bit界限|   *3 b" t7 x% C) t  f
  51. *    +-------------------------------+   *  w* x2 E3 B& w
  52. ****************************************/
    ( |4 Z! W. X( f( _3 g- q( N* ?
  53. unsigned char GDT_Addr[6]={0};' e0 i: g1 z' e1 [! Y! }5 l

  54. % m! v& l, _+ e$ D$ e5 j
  55. /****************
    - t2 }$ K+ P" @" M
  56. *    打开A20门    *
    7 w* [8 h9 Y6 T  W# B+ L
  57. ****************/
    1 v& T: g; }1 z! C
  58. void openA20(void)
    . P% t/ j+ P/ T7 D
  59. {
    0 F* M$ u3 n, \7 h" ?
  60.     asm{6 `9 D; h- W+ i# w
  61.         pusha) W- ?! x% T0 ~0 V7 F2 A' K
  62.         in         al, 92H6 N  R; @8 R# N" ~( i
  63.         or         al, 0x02
    4 q; D% i$ G1 a2 m* C! Z
  64.         out        0x92, al
    + c  s* G! n% Z0 _% ]" o" I% y
  65.         out        0xed, al
    ' v5 h% E/ L5 J; V8 R
  66.         popa
    & g: P& x6 k0 Y( `
  67.     }
    $ y/ W7 Z6 x0 V" M3 c" s3 A" z
  68. }3 H) j" {* y" C& u/ T/ V, g
  69. 1 m; Y; G* C7 l- T
  70. /***********************************************
    , o" G* z+ \& _1 T, H
  71. *    函数功能:进入DOS4G                       *, M  t, [  R# g& p, S, G. R
  72. *    ====================                      *
    6 R" D# h/ v+ ?* O8 N
  73. *                                              *0 R" a" J; F! ]/ z
  74. *    GDT描述符界限计算方式:描述符个数*8-1     *
    " n* n0 G% @; l3 _9 J
  75. *   如:                                       *- E! `1 Y& g* \0 b
  76. *        mov    word ptr GDT_Addr[0], (2*8-1); *
    . B1 {% e; a$ d/ z# l/ W" Y
  77. *       表示为 2个GTD                          *
    ( I9 z) U; f- {& U% C
  78. *                                              *
    ; A/ g; X5 p" C1 D
  79. *    选择子为所在描述符内的字节偏移。          *
      x0 W3 y  _1 ?" N  U
  80. *                                              *, g7 z8 h! ^& l: c; H
  81. ***********************************************/
    7 Q- z2 `/ {4 h1 Q3 A( G* W- _
  82. void set4gb(void)
    ) A7 N. j2 l9 R2 a. O
  83. {' l% C3 S$ A3 g3 C
  84.     asm{
    - T7 z) K/ O. x$ \9 m
  85.         cli
    / H# k6 Z# A9 v* X
  86.         /****************************************
    4 \/ u- t0 s$ h
  87.         *    GDTR寄存器                          *
    . o, `6 M2 u# n+ W1 m
  88.         *    +-------------------------------+   *
    3 n! z+ g2 ?3 G) D
  89.         *    |   32bit基地址       |16bit界限|   */ f9 B/ Y1 Y5 U  H& M7 Y) n4 \
  90.         *    +-------------------------------+   *4 l- d$ ?' w# ~/ p7 J; O
  91.         *****************************************/7 F. Q2 v+ S) }( h# f; f0 V
  92.         /*********************5 j9 ]9 A2 o- N1 B5 J' l
  93.         *        得出段界限       *; X; \  \' D! U8 x8 j9 q
  94.         *********************/
    5 E0 X$ U# i7 C8 k. \
  95.         mov        word ptr GDT_Addr[0], (2*8-1);. J1 N. {! ^& S% \2 ]* J9 f  A6 ?
  96.         /********************************************
    ( G8 f. U: Y# s
  97.         *    计算GDT表的32位基地址,存入GDTR        *8 w! @8 K* u, n( l
  98.         ********************************************/9 U( `& D( W# }* r6 q
  99.         mov        eax, ds
    $ u5 E" ?& T7 ~$ ^" k& j
  100.         shl        eax, 4
    # X* D3 g, _* }7 q5 V* i$ _+ d
  101.         xor        ebx, ebx3 h( n: l& R- @" V" A. Z* @% C
  102.         mov        bx, offset GDT_def4 d- A! `0 q0 x/ c: S
  103.         add        eax, ebx
    5 I; [: X$ W% u/ M( K
  104.         mov        dword ptr GDT_Addr[2], eax6 s! r' L  b. L% {" a: B
  105.         lgdt       fword ptr GDT_Addr8 Z3 U8 f& I) Q4 w
  106.         /********************
    7 w3 t  O" E0 @4 s3 L: F  k3 ]
  107.         *   选择子偏移      *
    9 y/ _  ]/ ~$ B* `, x
  108.         ********************/
    7 S1 a+ d* J" K+ g2 L" [
  109.         mov        bx, 8" {% k+ [; c% d; U! U: F
  110.         mov        eax, cr0
    2 z% F+ b+ j; F; X! U
  111.         or         al, 1
    - A! h7 ~& i4 z0 [) i8 E! q
  112.         /**********************
    , O; \6 D! [4 b* X$ r7 Z
  113.         *     进入保护模式    *
    ! X' F. N# p9 S: f  }" p  l
  114.         **********************/
    # V, c, D  Y2 U- W0 a
  115.         mov        cr0, eax
    8 f6 ^" ]  ]* U* i
  116.         jmp        pMod
    1 C) W% I# Y$ }& \  l# T7 r4 N
  117.     }% O; @: s6 I6 H& g+ g
  118. - M  R0 ^* a( B6 b' ~
  119.     pMod: asm{
    ' b) y: Z3 L4 o8 m, C, h! ?
  120.            /************************************************************
    : r9 E% F5 Q3 n/ @' ~8 o& x: h; K& ]
  121.            * 让fs与gs加载选择子,使其能访问 0xFFFFF * 4K (4GB) 空间    *$ K& h9 I% c4 [0 s
  122.            ************************************************************/
    . c4 r' s3 `% e& u
  123.         mov        fs, bx
    / P8 o" b7 K( j% E3 O. U6 p, O0 ]
  124.         mov        gs, bx4 V9 Y3 w" Z4 V3 B8 k* B5 q! P
  125.         and        al, 0x0FE/ H1 x2 k4 n, X: R* i8 b
  126.         /******************
    ' ~* N+ U( i- P. i
  127.         * 进入实模式      *2 ?$ \3 c' k# U; R7 W: G* t
  128.         ******************/
    6 Q5 r: L) s6 ?( P
  129.         mov        cr0, eax6 c) s# ]' L) h
  130.         jmp        rMod# `) V+ l. J9 _5 Z2 ]' f
  131.        }1 A. n* D6 v7 P4 o1 N

  132. ; j9 a4 R6 [7 p: Q& {
  133.     rMod: asm{" D4 ]" _" m# o: ]3 A
  134.         /* ******************************************************************
    8 r! v7 i0 `3 m* N* s  W( H9 D- C4 ?
  135.         * 退出,fs、gs清0,访问系统内存可用: gs[32位,相对于0的偏移地址]     *3 f6 r6 B* }9 p# I7 O1 E  x9 A
  136.         ********************************************************************/
    $ E) p& g" f8 B$ H6 [7 i
  137.         mov        ax, 09 h# e8 ]( p# _# N$ t3 n
  138.         mov        fs, ax, H( f/ H5 C$ V# m7 A+ }' @
  139.         mov        gs, ax! k6 c  k) s! o: K; E
  140.         sti
    9 N- ]# T( I& I6 ]7 H4 z
  141.     }
    / k0 L& V. C2 ~) l; J0 U6 c
  142. }
复制代码
这是asm的
  1. ;/********************************************************************7 F; R* a; s! A4 I8 Y. z& w7 e
  2. ;*    File: DOS4G.asm                                                *( W- c  q9 Y8 u9 P
  3. ;*       Compile with masm ( Editor: Tab size = 4 )                  *& @* |1 g! y8 e3 n
  4. ;*                                                                   *
    0 Z; z1 C& ]) p% c8 Z/ S
  5. ;*    ========================Title===============================   *6 ^8 v) O# a4 g- E  N8 W+ p
  6. ;*        这个demo是让系统进入DOS 4G模式,进行数据访问               *4 T/ H# k8 G' |. f: N9 t
  7. ;*                                                                   *
    & H# w$ U% J$ P9 t
  8. ;*   ===========================History==========================    *
    ( S) T) F. G' A
  9. ;*    author: bini                                                   *: N& m  ?- V+ a# j4 [* n
  10. ;*      date: 2008-10-08  Frist version.                             *
    + ]! R: A0 j% Q  }& |1 `
  11. ;********************************************************************/
    5 m9 R9 U' o2 o, p* S3 k
  12. .model small
    2 v; Z" \; T% V7 b& g0 Z
  13. .586p* W$ |" T, F' q. ^
  14. : B6 K8 S& p* U/ A- P
  15. DSEG  SEGMENT   USE16                 ;16位数据段
    4 h8 Q/ `. |  M* J1 Y

  16. * `6 }5 J! U$ E
  17. DESC            STRUC# o# [/ R; d  a& g4 V. _4 u
  18.         LimitL          DW      0 ;段界限(BIT0-15)# o- {. z: H% O8 `
  19.         BaseL           DW      0 ;段基地址(BIT0-15)7 X$ s, R0 m' Z9 U: M$ K
  20.         BaseM           DB      0 ;段基地址(BIT16-23)! T; W5 H6 D& X" e4 u
  21.         Attributes      DB      0 ;段属性% r$ J) l  [) R8 v& Q: K0 k+ T
  22.         LimitH          DB      0 ;段界限(BIT16-19)(含段属性的高4位)
    - F6 b* e  a9 L5 F5 R
  23.         BaseH           DB      0 ;段基地址(BIT24-31)" L, p6 L3 l& t- c" n
  24. DESC            ENDS2 ^4 u* R- }+ a& |
  25. 3 ^! c6 z, Z1 A" n, S' |. p% E9 x
  26. PDesc           STRUC7 t8 Y& v$ ?2 i; q' r* ^; V. @* z
  27.         Limit           DW      0 ;16位界限& B9 T5 w9 D  b8 M7 f# x8 h
  28.         Base            DD      0 ;32位基地址
    / i. p* R' \& `' }6 |
  29. PDesc           ENDS0 g: P0 t) J) v8 c( h

  30. - t3 o) D; |' j- \( @, m" \! [
  31. GDT_def         Label   Fword5 {" A* r/ V; M
  32. Null_Desc       DESC    <     0h,  0h, 00h, 00h, 000h, 0>* `6 u! S# U3 j/ ]9 p% t
  33. Data_Desc       DESC    < 0FFFFh,  0h, 00h, 92h, 08Fh, 0>% l' Z/ i. p2 K% s  l
  34. ) n$ w9 Z+ V' H4 X# q
  35. GDT_Addr        PDesc   <$-GDT_def-1, >
    " ?! F- b9 s0 e+ H$ {) p9 Z
  36. DSEG            ENDS                          ;数据段定义结束9 f3 D7 E/ r7 o% W% u2 g% k7 o

  37. 9 n) T' j, N7 _$ V/ f5 r+ e
  38. CSEG            SEGMENT USE16                 ;16位代码段
    5 P1 ?8 b& T% o% @3 t4 i4 f
  39.                 ASSUME  CS:CSEG,DS:DSEG. X# q) z4 Z( E* h6 s
  40. .Startup9 Y$ [( j  q3 a  R- z- J0 o, ~
  41.         call      Set4gb9 t4 w% s% [. D
  42. ;
    : g/ ^0 m; W6 S0 R/ O2 l3 K9 F
  43. ;       fs, gs即能访问4GB空间0 B. c; A& n, C
  44. ;       write your code in here.6 ?& ?0 L$ J8 o: a
  45. ;
    6 `( ^" R% J: ^* K  O4 Z
  46.         .exit% r/ W1 s0 g  y8 ~9 M9 B( u
  47.         
    , j6 t6 J8 D( }; N
  48. Set4gb          PROC      NEAR
    ( f8 w% [& U. \6 p2 O" X
  49.         in        al, 92h
    0 K5 P8 }- b& g  _4 q3 i
  50.         or        al, 002
    5 ^4 d3 x& |- Z7 P5 p9 j
  51.         out       092h, al; T% x0 B2 w. K: r  U3 h1 K
  52.         out       0edh, al6 _( V2 N! u: ~1 @4 ^; o( D

  53. 7 Y- S5 X2 @# w" {* h
  54.         cli. x+ p6 ]' s: T7 ?4 N
  55. 1 w) {7 U: v5 E7 R) T
  56. ;        mov      word ptr GDT_Addr, (2*8-1);
      B0 k& y6 i' Z2 l3 [  S; W" N% M8 K/ m0 F
  57.   f8 D5 c3 f/ Z1 O
  58.         mov       eax, ds  Q# A1 a& f4 p3 |3 z
  59.         shl       eax, 4
    ) t9 G- E+ ?* x
  60.         xor       ebx, ebx6 L  B# p8 k0 t% }( `* k( d( j
  61.         mov       bx, offset GDT_def4 E2 o7 `( o$ J8 t2 P4 o# H
  62.         add       eax, ebx! [2 o2 Q1 |) ^+ F
  63.         mov       dword ptr GDT_Addr.Base, eax! C% V/ V4 f5 F4 d" @, k/ V
  64.         lgdt      fword ptr GDT_Addr( j( v  G3 f( Z

  65. 7 X: c5 H5 s& a$ x" D
  66.         mov       bx, 8) Y* H& a6 z" w4 ^0 `
  67.         mov       eax, cr0& f$ k  ]4 d( B( R2 H& K6 M
  68.         or        al, 1, C/ J. h* ~! k, f: a
  69.         mov       cr0, eax
    * H& K* P; m6 b+ _* z

  70. & F- W& M' V! g- G! g! A
  71.         jmp       pMod8 M" G' k% G& ]2 p+ @
  72.     pMod:
    * V0 M8 s; n% A3 c

  73. " c- x! K7 u0 J  E( @  |
  74.         mov       fs, bx% K. [: M* h0 a7 G- y. E( Q7 d
  75.         mov       gs, bx9 |7 _8 I9 v) \4 f
  76.         and       al, 0FEh5 b/ v0 D1 p) C. H4 U5 `2 h
  77.         mov       cr0, eax
    ' f4 O, {0 T. ^+ p8 L9 \
  78.         + b& r  e8 q- `7 u$ C
  79.         jmp       rMod
    ( i5 u$ Q1 F! w# s! Y; V! `0 n5 p3 K
  80.     rMod:& }& B1 w1 R6 o- T6 I3 {8 C: u

  81. 0 |* M3 C+ k/ c: j' q. y
  82.         mov       ax, 0
    4 b! D0 r) f  {5 `# g! x3 g
  83.         mov       fs, ax. k# \8 P+ s/ a0 u( x
  84.         mov       gs, ax+ G5 W8 e+ L* r. k7 g
  85.         
    & B' ?, a" o" [+ o8 A
  86.         ; 在2M的位置测试写一下数据6 n/ H' d* r' Q; m
  87.         mov       esi, 200000h
    & Q/ D" Q7 x5 p8 h: f0 M6 y* ?
  88.         mov       dword ptr fs:[esi], 055aa55aah
    & L/ ?+ E) T+ u1 F/ M
  89.         ; 用RU去看看200000h的位置是否是此数据....
    : Y' C9 C* Y! C

  90. ! @1 B2 G. X( q
  91.         sti
    $ S% N. ~: W4 \$ {
  92.         ret) B  {9 k/ _1 f" z; e/ Q: c
  93. Set4gb  ENDP
    8 h: r: l) `0 ]- j
  94.       
    ; Q( k' a; S* v# R, Z0 h
  95. CSEG           ENDS                              ;代码段定义结束
    ! K6 |( H: ?# F7 r3 z7 L5 S2 h* W" d
  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
6 i! Q! ~' J, x/ B* C' i( U' @' e6 d! s+ e6 d
option->compiler->code generation中的option选中, [X] compile via assembler) \, Q- J+ k# S! ^  {% u1 P/ \

2 n& V8 q1 k3 `[ 本帖最后由 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;
$ k4 X7 K, o5 PData_Desc       DESC    &lt; 0FFFFh,  0h, 00h, 92h, 08Fh, 0&gt;
9 l1 }, `# o3 ?* z, O& q& t5 H4 l' `* r$ c! R& B
GDT_Addr        PDesc   &lt;$-GDT_def-1, &gt;. ~- v1 k) p0 q/ L( G
替换如下,- T: H4 B- X6 z8 S1 {9 J5 }
Null_Desc       DESC    < 0h,  0h, 00h, 00h, 000h, 0>
5 P+ h8 ~% }4 F1 a% ZData_Desc       DESC   <0FFFFh,  0h, 00h, 92h, 08Fh, 0>
, a$ I! m) S# \; W: `" f$ t, @' @' Q, ]* r
GDT_Addr        PDesc   <$-GDT_def-1, >
# k4 q2 ?3 H3 p: d  _- D这样你就能编译通过并且可以运行
回复

使用道具 举报

发表于 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 发表
% U* O  e) A! B  toption->compiler->advanced code generation中的instruction set选 80386
1 U& W$ `- a1 H
- u  d: c- E, l3 g& O9 n  R6 voption->compiler->code generation中的option选中, [X] compile via assembler

* @% u; T, j+ {# G/ e0 d   作了上述设置之后还是不行,编译的时候提示: cannot find executable: TASM. 我换了几个版本的TASM还是没用,除非拿掉含有32位寄存器的那些code才行。这个是什么原因,请各位大侠多多指教
回复

使用道具 举报

发表于 2010-4-12 10:27:08 | 显示全部楼层
原帖由 A_jack 于 2010-2-26 10:47 发表 4 t+ R/ K' b6 r' c
- A1 X' X, B6 l- s  q7 L8 g
   作了上述设置之后还是不行,编译的时候提示: cannot find executable: TASM. 我换了几个版本的TASM还是没用,除非拿掉含有32位寄存器的那些code才行。这个是什么原因,请各位大侠多多指教 ...

7 j' V$ v* Z& Y( U) s* M) Z
+ e. ?3 l( e5 ?' u9 \0 E! z9 j$ L我也是相同的问题,请问哪位有解,谢了!
回复

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-5-25 19:13 , Processed in 0.055836 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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