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

DOS 4G big real Mode Demo code。

[复制链接]
发表于 2008-10-8 14:29:37 | 显示全部楼层 |阅读模式
刚学习的同学,有些还不会,我这里贴点C和asm的代码。只供参考。
6 D# k. Z3 G6 H; ?6 W3 q6 p* q+ D& D( p7 F2 i
这是C的
  1. /********************************************************************
    7 D: F. K' @% g+ Z( i/ \7 w' I
  2. *    File: DOS4G.H                                                  *" o  J: d, z5 x" k6 v
  3. *       Compile with BC 3.1 ( Editor: Tab size = 4 )                *
    - v" f+ n: {' i3 f( m
  4. *                                                                   *! }9 b" B+ R4 q: W6 g9 t
  5. *    ========================Title===============================   *( X1 P+ [' x! c; a
  6. *        这个函数是让系统进入DOS 4G模式                             *
    ) P& r* h( K9 r0 w5 q" Q
  7. *       程序参考了:陈家琪《DOS实方式下直接访问4GB》                *
      I3 r- i* p+ ^2 E7 [
  8. *                                                                   *1 B( G+ e. \# b2 ?- t6 t, c. i* t
  9. *       使用: openA20(); set4gb();                                  *
    / z( F/ p$ v% j( |' x% ]
  10. *                                                                   *6 i/ n) J( T: ~8 g: F7 U  d& v
  11. *   ===========================History==========================    *7 a1 r. W+ G3 u! a
  12. *    author: bini                                                   *: B4 Q; ^, i7 W( Y* C
  13. *      date: 2004-11-30  Frist version.                             *
    + R1 ?! K. Z- F8 m: H/ L
  14. ********************************************************************/0 x" X: ^# i) v+ _! H

  15. - G0 {1 J2 W! L4 L5 R  L
  16. #include <conio.h>
    1 g; j0 N3 b/ e6 I& G
  17. #pragma inline4 T, ~6 W2 b! m+ q3 U' l, c
  18. 9 }; n1 D; L. G1 Z# u, I9 P4 c
  19. /***********************************************
    $ q" y4 }+ z5 w% ^
  20. *    两个GDT,第一个为系统使用,不管,默认为0   *
    : i- L5 P, U. R: r
  21. *    第二个为一个数据段,没有代码段。           *
    3 C2 @4 [) m1 z: w7 k- o1 N% I( _' W: m
  22. ***********************************************/, K/ F5 A0 V# m4 \7 S2 y6 d* x
  23. unsigned long GDT_def[ ]={0,0,      /*系统使用*/
    : v! ^7 D( ?. ~: A* v4 _! c
  24.                           0x0000FFFF, /* hi16bit( 0~15 ) is base low=0, . a! z2 R7 f9 W6 U+ Q8 K& O
  25.                                          low16bit( 0~15 ) is limit low=0xFFFF & @6 ~/ D( ^% Q# C3 `# s2 E
  26.                                       */! j0 z; U8 h1 o( r
  27.                           0x008F9200};/* 最低字节为 base( bit 16~23 )
    * U' }: A2 s" p$ M
  28.                                          最高字节为 base( bit 24~31 )
    & F3 h& ^/ G/ g: y2 M( ]
  29.                                          ( c% V$ h# |" q! J1 F
  30.                                          属性Attrib = 0x8F92
    7 N6 A' u; }$ w
  31.                                          4 J/ J4 g* {6 s+ `+ I9 M# w) b
  32.                                              属性位Hibyte低四位为 1 n* Q9 ?8 y) P7 `; n
  33.                                                  Limit( 16~19 )=F
    9 V- q+ Z" p  Y/ P! H
  34.                                              属性位Hibyte bit7 为粒度# M# T8 k4 |" s9 z' \) ?. J7 _) O8 a
  35.                                                  (值1=4KB粒度)5 V1 R* e4 M- d) B5 A4 j5 h
  36.                                                  8F & 0x80 = 1
    & I6 t( V- l9 g5 E$ e$ V
  37.                                                 
    ( i8 _9 e3 \1 Y5 m
  38.                                              属性位Lowbyte低四位为段类型,值=2
    2 ], ~0 K0 i2 d; [6 |4 C
  39.                                                  表示为可读/写段$ [& _  o/ c. s% f" s' \
  40.                                              属性位Hibyte高四位=9,bit3=1表示:  B  ^8 z0 g* ^+ S; |% y8 p
  41.                                                  描述符对地址转换是有效的。; V8 @, y# A& ]' o% w( r
  42.                                                  bit0=1表示为:/ t, c) A( o" j6 |
  43.                                                  系统段描述符。而不是门描述符。
    ( n# P) W# [: y4 _5 b
  44.                                              # M) N- Z' |8 e4 h4 H
  45.                                          */+ f! [0 C/ R+ B- a; J" Y2 v

  46. ; N& C! u4 G& M' ]2 b
  47. /****************************************6 x5 p& _5 @  h/ J6 t. W% X
  48. *    GDTR寄存器, 48bit=6bytes            *$ ^! j0 J  z# c0 n5 n( z, B9 n
  49. *    +-------------------------------+   *# i. W  z  r& M3 Q5 P7 Y
  50. *    |   32bit基地址       |16bit界限|   *
    8 O! M( S+ h$ L8 u. p5 o
  51. *    +-------------------------------+   *
    - l5 x, q* p. G) h
  52. ****************************************/
    " j& s5 n% h0 [5 d
  53. unsigned char GDT_Addr[6]={0};' _9 C! n+ W6 ^. I: Z9 Y

  54. 1 i: }- ]+ Z$ {  R  q1 n
  55. /****************5 f: Z# r- P/ {
  56. *    打开A20门    *
    . I/ s* \- y( O' X$ r+ P
  57. ****************/
    1 y. b5 D" U  `5 T# @3 m
  58. void openA20(void)9 Q2 z, v% [1 b3 C# ?
  59. {# J" j* a% w0 v
  60.     asm{7 D# a1 R) Y$ _# K
  61.         pusha
    1 u$ `: O6 g) d+ d
  62.         in         al, 92H) L! k- D& @" V( N* m
  63.         or         al, 0x02: X- y  p# Q& v! N
  64.         out        0x92, al
    * ]& z6 }* j' N7 [, J" D" {
  65.         out        0xed, al: q/ c: \+ w( v5 V" E
  66.         popa, S$ d. y8 v% H! M# H% i2 B
  67.     }% ^, D1 y4 _. [
  68. }
    8 d& o; x) M* ]5 L1 e& G& U' C
  69. . c+ b9 ~- U6 h
  70. /***********************************************
    ; \9 f! r. B& |) s0 F
  71. *    函数功能:进入DOS4G                       *& P- s# Z0 e6 }# H0 D* k+ f
  72. *    ====================                      ** _4 [, j8 K! J" G
  73. *                                              *
    ( n9 N% t4 @8 u  C+ z
  74. *    GDT描述符界限计算方式:描述符个数*8-1     *% M; ~" N( k/ G
  75. *   如:                                       *
    % U& b7 S, ]6 [4 P, W! O
  76. *        mov    word ptr GDT_Addr[0], (2*8-1); *
    , S3 A7 H& W5 y1 S4 ~6 H9 u/ O! A
  77. *       表示为 2个GTD                          *  S! ~( N) T. l' Q6 ~7 Y7 B6 _
  78. *                                              *
    1 ]; w2 D8 P( o
  79. *    选择子为所在描述符内的字节偏移。          *
    2 E$ r- J) x  i# Z6 Z* P
  80. *                                              *
    % a- Z$ w  z: v. W: [  P1 f2 T
  81. ***********************************************/; o. R, @' J" g9 u$ I4 O$ f9 E2 A2 A* z
  82. void set4gb(void)* n- [7 A( B* x% _
  83. {9 o5 ^) x$ B; b9 P* E
  84.     asm{
    + O# Y2 V1 d. R8 f! Q
  85.         cli9 s- l5 e- t; z9 Z
  86.         /****************************************
    3 }: z+ s1 \8 K
  87.         *    GDTR寄存器                          *
    . g) ]3 D, W, |8 e1 k
  88.         *    +-------------------------------+   *
    9 H/ f$ Y$ m: `4 F& e( @
  89.         *    |   32bit基地址       |16bit界限|   *: b& ~- R" F4 V
  90.         *    +-------------------------------+   *2 @, I4 K! U+ k
  91.         *****************************************/
    ! P2 l$ e5 u0 o+ ?4 I' }
  92.         /*********************
    8 P5 k: I& d/ F/ C7 t% t3 [* H1 w! |
  93.         *        得出段界限       *
    5 l6 k* D0 {# Z# {; |6 w
  94.         *********************/
    9 W; I( _; }  l0 Z( ?5 |
  95.         mov        word ptr GDT_Addr[0], (2*8-1);
    5 l' q. f& R; T: B+ c
  96.         /********************************************% {7 C: w% u; ]7 L" s1 i1 |# z
  97.         *    计算GDT表的32位基地址,存入GDTR        *$ j; l: t' k6 Z$ @+ z* b9 ~
  98.         ********************************************/9 w9 o' I( h) d4 c5 M  E+ Q7 e
  99.         mov        eax, ds
    5 T3 A, B, O7 x% O/ ]: a
  100.         shl        eax, 4
    4 w' L) h; N! H# j1 ?
  101.         xor        ebx, ebx
    " s3 h) e3 ~/ k. M. L, @" e# W
  102.         mov        bx, offset GDT_def* w  ]$ x  K: R6 T
  103.         add        eax, ebx/ t+ s$ A/ h/ U  Y& r4 l& f
  104.         mov        dword ptr GDT_Addr[2], eax! p( g/ s! Q. t- H$ T0 @
  105.         lgdt       fword ptr GDT_Addr
    4 b& J. l/ y( e/ ~8 I( r4 c
  106.         /********************
    1 g: ^* m4 [7 `; N3 S
  107.         *   选择子偏移      *+ ~$ @" [* J, W0 w' M- y. @
  108.         ********************/
    , t. H+ f( K# P" R; T1 y9 f+ y
  109.         mov        bx, 8. D% d, K- k7 f6 X8 u4 D" C+ V
  110.         mov        eax, cr0
    ; k; d  e, _) p3 F
  111.         or         al, 1) n5 S( L# O( G% Z: P# C$ U3 N
  112.         /**********************
    % l+ c$ v" Y. g
  113.         *     进入保护模式    *) ]* @! w5 E/ u* M
  114.         **********************/' G  t% s# q0 N1 w, r% I& M
  115.         mov        cr0, eax" z9 ]& O1 {# i4 V: G( Y
  116.         jmp        pMod
    $ D  W$ d) M; `  h9 y
  117.     }
    ' `2 H: }6 j& n, t

  118. & \% n' S4 r6 O1 L( M
  119.     pMod: asm{
    : y* T; }6 ]6 y
  120.            /************************************************************
    1 {: d/ K. W1 q* r; U# ]0 E+ _( G
  121.            * 让fs与gs加载选择子,使其能访问 0xFFFFF * 4K (4GB) 空间    *" Y! M+ g5 R" p
  122.            ************************************************************/2 C9 J7 b3 ]6 v1 _% r
  123.         mov        fs, bx7 }5 G. X# `6 i) @0 U, D
  124.         mov        gs, bx3 y, W/ P) \& a  B
  125.         and        al, 0x0FE" F" g- A( u: [
  126.         /******************
    3 b1 y5 G/ R( Q
  127.         * 进入实模式      *
    - X2 G5 [7 d' V8 M9 a! O! C
  128.         ******************/" F0 v5 K' C3 _) C6 I
  129.         mov        cr0, eax' H% e  [' J: I
  130.         jmp        rMod
    . ~3 A: E- k+ g+ H* V0 R
  131.        }
    * L+ @" k* i9 T# S. @  J

  132. 1 |! A0 x: O, q" B6 H
  133.     rMod: asm{
    3 `: u) H. t+ S0 g  c
  134.         /* ******************************************************************7 F. O9 }8 [* s0 j3 S5 K
  135.         * 退出,fs、gs清0,访问系统内存可用: gs[32位,相对于0的偏移地址]     *$ H6 M5 ~2 Z- Z4 ?7 [$ n
  136.         ********************************************************************/
    " ~; A3 q6 b5 g; h
  137.         mov        ax, 0
    . ?4 Q) y( U7 t4 m$ B0 `# q
  138.         mov        fs, ax2 B" b# w/ \: s5 _5 W; G
  139.         mov        gs, ax. b7 @- r9 q, U0 }2 z
  140.         sti
    8 ]: `4 b) |2 h. Z1 p
  141.     }8 `6 Q) e- m! b5 T2 b
  142. }
复制代码
这是asm的
  1. ;/********************************************************************6 e$ D5 |8 |% z" G2 ]- A5 x
  2. ;*    File: DOS4G.asm                                                *
    6 f, X9 [1 v/ Y" L0 B' T
  3. ;*       Compile with masm ( Editor: Tab size = 4 )                  *
    ; ]. B. x& ]# I' ^
  4. ;*                                                                   *& U: _8 \; m3 r1 _8 [
  5. ;*    ========================Title===============================   *6 X2 i) \% C. l0 {
  6. ;*        这个demo是让系统进入DOS 4G模式,进行数据访问               *
    * d5 @% ]0 R  c! _
  7. ;*                                                                   *+ E7 Z; [% [/ m. s, c5 n. n* s2 M9 t
  8. ;*   ===========================History==========================    *
    : D9 C* a& T) I1 w' `4 B
  9. ;*    author: bini                                                   *
    / q2 f5 ~% x2 Z
  10. ;*      date: 2008-10-08  Frist version.                             *
    6 z, ~. N( K. B8 ~, g
  11. ;********************************************************************/
    : x; G( N% ~4 `+ F3 Y9 x& v
  12. .model small
    9 G2 R: D9 c8 I7 [. `. |
  13. .586p
    ' B9 Z4 ]" n  R. V

  14. & W4 y8 q9 a8 r, a
  15. DSEG  SEGMENT   USE16                 ;16位数据段& R, Q* Z6 I  d# R0 g

  16. % c) B- b# K9 O7 k# y
  17. DESC            STRUC) n1 \, p; @3 g
  18.         LimitL          DW      0 ;段界限(BIT0-15), M( a# \5 t, A# g* c
  19.         BaseL           DW      0 ;段基地址(BIT0-15)4 O# G* u& `! o" t; e
  20.         BaseM           DB      0 ;段基地址(BIT16-23)" V, I; v3 I% b, A0 b
  21.         Attributes      DB      0 ;段属性+ }, C6 l6 x7 C) U' {
  22.         LimitH          DB      0 ;段界限(BIT16-19)(含段属性的高4位); b5 \1 K8 _) B' v
  23.         BaseH           DB      0 ;段基地址(BIT24-31)9 H  U! I" P* A  v8 ?3 A
  24. DESC            ENDS- z. X/ h0 O% }
  25. + |  M5 Y2 ]+ n+ u7 E
  26. PDesc           STRUC# G  x. d$ `( V% T7 w  \
  27.         Limit           DW      0 ;16位界限
    - h; A" {" P! [$ N. M
  28.         Base            DD      0 ;32位基地址
    - {# x: I( }8 |+ b
  29. PDesc           ENDS
    + y4 V' C& L4 y# j$ Z- S$ @! Z

  30. 8 B0 c+ ]! o* K2 i7 \7 X' V
  31. GDT_def         Label   Fword
    " {$ ]5 e4 V" Z6 r
  32. Null_Desc       DESC    <     0h,  0h, 00h, 00h, 000h, 0>5 n+ V  F1 n1 ~  p9 ~) ]* B& {
  33. Data_Desc       DESC    < 0FFFFh,  0h, 00h, 92h, 08Fh, 0>
    1 ]0 }: D8 S3 Q" L8 R# U8 R

  34. ) |3 k! c  t3 L# q* G
  35. GDT_Addr        PDesc   <$-GDT_def-1, >
    ; t# G. ]$ r3 n& D# k: e% d
  36. DSEG            ENDS                          ;数据段定义结束
    ( E. e4 ?4 e' Q; J$ [) J4 E6 T
  37. & G' ?1 O( Q% V/ Z  L5 O
  38. CSEG            SEGMENT USE16                 ;16位代码段2 q1 \* Z7 G- d; O9 \; U
  39.                 ASSUME  CS:CSEG,DS:DSEG
    ! {" h1 S2 \& j( D
  40. .Startup$ G& q$ M( e6 Z' u0 v
  41.         call      Set4gb5 C5 n2 Q) W, S
  42. ;
    5 X/ V' V( A; ~5 y
  43. ;       fs, gs即能访问4GB空间
      c3 G- A% [2 p5 y8 R, o7 A
  44. ;       write your code in here.2 b& @% Y0 u7 [
  45. ;
    9 V  _7 O! _, s, c
  46.         .exit" L* J  h& k& a$ K1 N9 |7 w" ^
  47.         
    % B2 ~* m8 M% `4 U
  48. Set4gb          PROC      NEAR
    # h/ v  `9 Z+ d5 W  v8 O
  49.         in        al, 92h
    ! c; d- T; N* W
  50.         or        al, 002
    ; g5 L$ H9 O' h1 t: v1 }
  51.         out       092h, al
    / R* }5 T" Y( z, p
  52.         out       0edh, al$ X. K* P1 o/ v2 }* W# p
  53. ! s3 e) e1 x0 m* z0 {0 ?
  54.         cli
    # ^1 t; w2 X' n. e
  55. ' t. i+ T, {, H6 q9 a- O) F
  56. ;        mov      word ptr GDT_Addr, (2*8-1);5 [# N9 l( p  I/ O

  57. ; u& i& j2 t  y1 e8 ]% x
  58.         mov       eax, ds
    9 T/ F' G$ z& M1 n6 `9 k* X9 k
  59.         shl       eax, 4
    * p: x; q5 C$ \2 }$ h  p- n: S4 I
  60.         xor       ebx, ebx% ^( g! m+ G1 g' O  o7 u* k
  61.         mov       bx, offset GDT_def; p+ H- o# x3 \/ s  Y; W
  62.         add       eax, ebx
    ' p" ^8 L( j8 B# U* ]
  63.         mov       dword ptr GDT_Addr.Base, eax
    4 f& D; I% I- R
  64.         lgdt      fword ptr GDT_Addr  K, N: `* i, G1 v

  65. ) U$ @0 L  e, I* i2 M) F
  66.         mov       bx, 8
    / G* B& y+ W& u0 _! Q
  67.         mov       eax, cr0
    % c, S/ v: T4 t$ m# E* T
  68.         or        al, 1
    5 J+ U; [! ?7 L8 p( o! K, _) m/ ^# \9 l
  69.         mov       cr0, eax$ v- G4 ?8 }/ m( T- }1 g  A) A

  70. " h: d# F6 q; C  [
  71.         jmp       pMod
    5 K! o2 ]; h% f, D$ i
  72.     pMod:
      x* N: r6 z) q9 |  f
  73. + J( T" u  s( T; F1 M( Q
  74.         mov       fs, bx2 f8 d" o( {8 i8 [- X- Z
  75.         mov       gs, bx; c% [+ M" p6 i7 l
  76.         and       al, 0FEh
    : _% I( I$ H" e2 I8 P8 {* j
  77.         mov       cr0, eax/ L% I$ t9 W/ s
  78.         
    / g7 N! O# v1 s1 e- Y8 c
  79.         jmp       rMod
    , c3 \2 u( o% F) S
  80.     rMod:
    1 Q! ~; N4 ]$ B! ]$ b* B2 ], N

  81. 5 x# U- ?+ @0 L. Q
  82.         mov       ax, 0+ g, X9 s2 S. S  E
  83.         mov       fs, ax2 O+ v7 ?! E4 X9 F/ e2 y+ W: \$ x
  84.         mov       gs, ax2 L# a9 l7 I  a! @
  85.         3 ~( }. k: j1 s# A* X, V
  86.         ; 在2M的位置测试写一下数据
    : g, W$ z, x" O" e8 R
  87.         mov       esi, 200000h5 e9 v  Z) G: g2 A; u# i  U/ A
  88.         mov       dword ptr fs:[esi], 055aa55aah6 d, n# O- w' \) y( \0 t* {
  89.         ; 用RU去看看200000h的位置是否是此数据....' t* v( u* L  r, M6 C9 G
  90. , R* A) A9 D' f9 C: h, i) G  b
  91.         sti9 V$ W* h/ o3 t; j4 R7 c
  92.         ret
    * G$ Z; H, _" ^* E  e
  93. Set4gb  ENDP3 G6 m9 s. w" ?. s8 I* d
  94.       
    * v( t9 m) X5 m% x* m1 i
  95. CSEG           ENDS                              ;代码段定义结束6 |4 C1 ~4 A9 {1 y. ^
  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
0 ^! o2 _& f: w5 O: ^
7 b0 x1 B+ g1 B/ y4 Y4 o$ [' Voption->compiler->code generation中的option选中, [X] compile via assembler
. {( ?1 e3 o$ s) T4 n) c3 y, U2 J2 N: u$ k7 v* }
[ 本帖最后由 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;( E2 g% O$ N! j1 p$ `" [8 ~# y+ \
Data_Desc       DESC    &lt; 0FFFFh,  0h, 00h, 92h, 08Fh, 0&gt;
8 W& ?$ \" q. k( _  H4 X4 r& M( h+ c2 S! J2 \5 X9 u
GDT_Addr        PDesc   &lt;$-GDT_def-1, &gt;! i% t1 h# N9 x4 L1 D* Q7 @
替换如下,
; m0 t3 p; e3 z! {1 g$ L# k) RNull_Desc       DESC    < 0h,  0h, 00h, 00h, 000h, 0>; o; ]$ M; l' T% [: R; |
Data_Desc       DESC   <0FFFFh,  0h, 00h, 92h, 08Fh, 0>+ X0 h6 {0 y+ T; y' ~6 }5 n1 g" f

  E- R& n: Q: N, Q5 \GDT_Addr        PDesc   <$-GDT_def-1, >& Y( _1 P& k1 {5 r7 S
这样你就能编译通过并且可以运行
回复

使用道具 举报

发表于 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 发表 ; E4 B5 P0 y2 P( y& ?# ^/ C$ [- ^3 ?
option->compiler->advanced code generation中的instruction set选 80386
1 g9 d0 s0 P7 I8 R5 l( U
+ M' a1 K* E4 G  t7 Goption->compiler->code generation中的option选中, [X] compile via assembler

8 r- n. @, p! }3 {   作了上述设置之后还是不行,编译的时候提示: cannot find executable: TASM. 我换了几个版本的TASM还是没用,除非拿掉含有32位寄存器的那些code才行。这个是什么原因,请各位大侠多多指教
回复

使用道具 举报

发表于 2010-4-12 10:27:08 | 显示全部楼层
原帖由 A_jack 于 2010-2-26 10:47 发表
* e  |4 J; W) d. g) p6 }) _
$ y! P2 ~- F3 a   作了上述设置之后还是不行,编译的时候提示: cannot find executable: TASM. 我换了几个版本的TASM还是没用,除非拿掉含有32位寄存器的那些code才行。这个是什么原因,请各位大侠多多指教 ...

7 I; |) Y! x, H8 S4 ^8 y' c
# i# k" ^+ b$ [( K# O5 V我也是相同的问题,请问哪位有解,谢了!
回复

使用道具 举报

发表于 2011-2-21 21:04:39 | 显示全部楼层
option->compiler->Transfer 设置TASM的路径,就不会提示找不到TASM;
  b% m/ }1 v* o! d) e! F# x还要把TASMMSG.exe拷贝到源代码(工程目录),就可以编译完成了。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-5 00:40 , Processed in 0.022566 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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