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

DOS 4G big real Mode Demo code。

[复制链接]
发表于 2008-10-8 14:29:37 | 显示全部楼层 |阅读模式
刚学习的同学,有些还不会,我这里贴点C和asm的代码。只供参考。
; V9 O2 m, C: j- v% v
( @* s$ d  Z0 Y' l这是C的
  1. /********************************************************************
    - ~9 I0 u* o  L& Z* y
  2. *    File: DOS4G.H                                                  *
    ) @0 ~1 v% ^" r
  3. *       Compile with BC 3.1 ( Editor: Tab size = 4 )                *
    ; n' ?, a5 A, Y5 h: t) ^
  4. *                                                                   *% ]+ F( A6 P7 w  A: ~6 [
  5. *    ========================Title===============================   *
    + \/ ?. n' A0 {% ^" i$ K! I' {! L
  6. *        这个函数是让系统进入DOS 4G模式                             *
    + H% |! u5 G& B$ _
  7. *       程序参考了:陈家琪《DOS实方式下直接访问4GB》                *9 w0 U8 V: i: N( ]$ x1 ~* M7 c
  8. *                                                                   *. _* S# h/ S; E6 _- t5 B6 c
  9. *       使用: openA20(); set4gb();                                  *  ~& k0 J8 d( @) d# I, B9 k
  10. *                                                                   *
    3 i% c  ?# K  x4 J0 Z5 f+ t3 d
  11. *   ===========================History==========================    *& a/ \7 _9 e7 k" y
  12. *    author: bini                                                   *2 b7 ]) z) F* F+ F0 I: @2 ~  Y
  13. *      date: 2004-11-30  Frist version.                             *
    ; m, ~; w4 ]7 X" v; ]! R$ P
  14. ********************************************************************/
    ! X3 O( B/ [; l, o" c% A' J

  15. % [+ ]  t' U# ]5 A# k, P
  16. #include <conio.h>
    + N' k% z- f9 @/ d  D
  17. #pragma inline, |( c6 @% Q' ?) @& ]

  18. # Q. n2 I* S1 v/ r
  19. /************************************************ X: k, ]: A$ `5 Z
  20. *    两个GDT,第一个为系统使用,不管,默认为0   *: m7 h4 }, L7 O( i% I
  21. *    第二个为一个数据段,没有代码段。           *2 r8 V: y& G" \: R* Z* T. t
  22. ***********************************************/0 m: t1 j0 F1 H# {0 p/ N. T
  23. unsigned long GDT_def[ ]={0,0,      /*系统使用*/
    # P+ i* z/ l: Z# v
  24.                           0x0000FFFF, /* hi16bit( 0~15 ) is base low=0, 9 H8 R3 C8 W: c, L
  25.                                          low16bit( 0~15 ) is limit low=0xFFFF
    % P' p) U  J) ?8 f/ {
  26.                                       */9 F& h; U- m1 U7 B
  27.                           0x008F9200};/* 最低字节为 base( bit 16~23 )& L% \, x" P7 J' \4 ?
  28.                                          最高字节为 base( bit 24~31 )
    1 f3 ]" }5 u+ {! z
  29.                                          
    1 o% k* M, ?& O
  30.                                          属性Attrib = 0x8F92" i2 r4 ^" S5 H' u
  31.                                          
    # n# w8 F2 Q. g- S
  32.                                              属性位Hibyte低四位为 / y6 _, N$ R, B' v9 k* y, U" t
  33.                                                  Limit( 16~19 )=F: J! ]. x( s( h/ {; u
  34.                                              属性位Hibyte bit7 为粒度
    " O* P) ]  B; ^" J
  35.                                                  (值1=4KB粒度)& x  m  @5 q: X2 L
  36.                                                  8F & 0x80 = 13 Y( a1 ~, t1 ^' W
  37.                                                 
    ! Q9 Q3 I0 t; c* ?
  38.                                              属性位Lowbyte低四位为段类型,值=28 j* |% J! w3 d' g2 t
  39.                                                  表示为可读/写段3 e2 s& F. E2 |, _  b
  40.                                              属性位Hibyte高四位=9,bit3=1表示:' S# W" @% M" e, y+ r+ t
  41.                                                  描述符对地址转换是有效的。4 n5 g! [# h' D2 ?
  42.                                                  bit0=1表示为:2 D5 D, Q5 B7 t- u  L
  43.                                                  系统段描述符。而不是门描述符。- }# E( e& h% c) N! l
  44.                                              
    " _8 k: o+ P/ u9 P! Y2 ~' g5 f
  45.                                          */4 H6 Q3 k! ^( z  x/ `

  46. 5 Z8 w7 h  A4 `. Z+ _& I
  47. /****************************************
    8 L; w0 w: H' Q; {2 O2 O
  48. *    GDTR寄存器, 48bit=6bytes            *
    & q1 Y/ m. L5 _+ ?" a0 h) g
  49. *    +-------------------------------+   */ z: H0 V0 e, F% m- t3 [# A( t
  50. *    |   32bit基地址       |16bit界限|   *0 z' J  G9 Q, \8 ?: s+ E5 f) x$ _
  51. *    +-------------------------------+   *$ W% u, b/ w7 p+ E# O; F
  52. ****************************************/9 ^3 E* C3 z1 v: N/ i
  53. unsigned char GDT_Addr[6]={0};
    , [5 }. Y/ o6 G* V$ @' ?% _

  54. " N  F8 F( |/ }- E. G) |9 ~
  55. /****************, G# O: G: e" y  j/ l
  56. *    打开A20门    *
    3 Z+ n, S& G6 \" \5 J0 z$ [
  57. ****************/
    7 m8 t) O. ?; m7 e7 d
  58. void openA20(void)' S" U. r  F' I+ d! J
  59. {4 A, P% E0 q( G4 Q& M
  60.     asm{) l* n8 i/ Q( m" l7 L
  61.         pusha8 \( K/ p$ t+ u
  62.         in         al, 92H# `' V* Q, M1 J: ~9 [$ N; F% ?! Q
  63.         or         al, 0x02% w  p* l2 j% u, [" d5 f! J' G
  64.         out        0x92, al
    , X. V1 t8 N/ X0 ~
  65.         out        0xed, al3 K! F' H7 n: V0 U# O
  66.         popa5 i$ b% R9 X8 I
  67.     }
    8 V3 T4 a: A4 W- |$ k" O
  68. }
    , y& M' ^) p5 H" _
  69. & i# S" Y, f: E3 L. [/ d1 d& c
  70. /***********************************************
    7 w4 W" O8 Y2 I1 y6 {/ A
  71. *    函数功能:进入DOS4G                       *; ~. J8 l' O( o" p0 z
  72. *    ====================                      *# m0 U& }. x; D0 Q
  73. *                                              *
    4 D4 [: r7 `5 j3 R1 D7 K2 ]
  74. *    GDT描述符界限计算方式:描述符个数*8-1     *& H, V, B) b0 m* L
  75. *   如:                                       *
    7 T7 A# Y9 S8 E
  76. *        mov    word ptr GDT_Addr[0], (2*8-1); *3 F' R5 r! b) o
  77. *       表示为 2个GTD                          *+ _7 Q# H3 X5 d2 L+ Q, P- Q
  78. *                                              *, g* a$ `8 q' o/ H1 ^  ^" Z$ N& b
  79. *    选择子为所在描述符内的字节偏移。          *
    3 [' \. P! Q/ j. e1 {
  80. *                                              *
    ! O$ ~/ S% q5 k% Y% ~* x+ y! x
  81. ***********************************************/( n0 a5 o3 t, ~8 s
  82. void set4gb(void)
    . N1 t# l1 e5 d/ M: U# E* e
  83. {2 j8 d( O3 j4 d/ J' |* L
  84.     asm{. n2 c$ M. y  E0 h
  85.         cli% H9 G( P0 s, s/ f, v% G* m4 h6 U1 I
  86.         /****************************************
    . m5 T8 X6 T; K
  87.         *    GDTR寄存器                          *7 g% W% [! z9 o* b2 n
  88.         *    +-------------------------------+   *) L1 _0 l6 w2 {: A- }1 N
  89.         *    |   32bit基地址       |16bit界限|   *
    + [1 A. m, x3 Q7 S& G) V6 I  h1 X
  90.         *    +-------------------------------+   *
    ) b7 X, c, g2 V9 C
  91.         *****************************************/
    9 @# w. V7 X8 X, K+ [2 Z' Q
  92.         /*********************- I8 Y6 i- {' h1 ]1 U+ d5 O& ]. B
  93.         *        得出段界限       *+ h1 W9 F+ g+ F( n  C
  94.         *********************/
    * m$ k# a8 i. F7 N
  95.         mov        word ptr GDT_Addr[0], (2*8-1);8 W% n$ P0 u) i+ ~- g1 k
  96.         /********************************************
    + d) ^  C5 {9 [$ {2 x/ {
  97.         *    计算GDT表的32位基地址,存入GDTR        *$ q% v+ u1 y: j* q$ J  f* F3 O
  98.         ********************************************/
    1 _$ @# i. {+ r* L
  99.         mov        eax, ds
      W! Y% V% X! S& W0 {
  100.         shl        eax, 4
    : |. ~( {. X* i9 ]& H: |* i2 O
  101.         xor        ebx, ebx4 t+ Z) Q, \1 b9 F
  102.         mov        bx, offset GDT_def" v2 a* I$ U  D% ~
  103.         add        eax, ebx
    5 C" I. H" l; l& y3 Z* C. `2 f
  104.         mov        dword ptr GDT_Addr[2], eax
    # F/ G% P1 f, V! r
  105.         lgdt       fword ptr GDT_Addr" q3 ~  t) D( U( k- Z
  106.         /********************% p5 L1 a: |/ l1 K
  107.         *   选择子偏移      *
    6 ?  x+ n0 r  n% U6 w: l
  108.         ********************/, |8 `1 K& I- b/ ]
  109.         mov        bx, 8
    ! V5 h* o4 u4 U% x# v) M. N  S
  110.         mov        eax, cr0' A4 b0 V( l: ~* A2 E6 s& v
  111.         or         al, 1
    ! |5 t; D: a0 V; l
  112.         /**********************
      j: p& g: ]( z/ Y! f+ K
  113.         *     进入保护模式    *, P/ L: A9 R* V7 c
  114.         **********************/  f1 p: O$ x' H1 m) z
  115.         mov        cr0, eax" B" b  H4 z* w4 O' p. i
  116.         jmp        pMod( s% y8 T( m+ D5 [( k' u7 i( _0 T* ?
  117.     }
    5 h6 B9 D1 ?& S1 s+ L, I4 H
  118. 8 V1 N8 x  v( ?
  119.     pMod: asm{
    ' d& `+ @/ N4 T
  120.            /************************************************************/ D( z* L6 E% L3 F2 T% R1 z
  121.            * 让fs与gs加载选择子,使其能访问 0xFFFFF * 4K (4GB) 空间    *8 P3 F! Z1 V7 n6 n7 ?2 \2 A) k! Q
  122.            ************************************************************/
    1 p) E" ~- c. D. M5 J4 i
  123.         mov        fs, bx
      @  R& i5 B( l' L) t0 l
  124.         mov        gs, bx
    / T1 D; o+ K/ I& u9 @
  125.         and        al, 0x0FE6 J. @' A  u2 `- d1 N+ |9 d
  126.         /******************' F8 Q! K) x4 z6 {( T' ?
  127.         * 进入实模式      *
    # ^: t6 y1 C! m$ [! S
  128.         ******************/
    / o9 T% d0 ~1 S: p3 u, t7 e
  129.         mov        cr0, eax8 W4 n# y! A1 ]1 |' @0 ^1 ]
  130.         jmp        rMod
    & U4 C5 S( m3 `) _9 E& ^  J4 W
  131.        }  w9 r8 D* `3 q- B
  132. . r- Q) {  k1 S% M
  133.     rMod: asm{* r8 |8 ~1 ^* \3 l9 ?
  134.         /* ******************************************************************
    . X3 I) z. {+ S* [( H
  135.         * 退出,fs、gs清0,访问系统内存可用: gs[32位,相对于0的偏移地址]     *9 x- f* W7 a; g; Q/ u- ]% {
  136.         ********************************************************************/. F5 [2 h: O) f; `8 o" V  [2 i* y5 `
  137.         mov        ax, 01 v8 E  ~& P* j
  138.         mov        fs, ax
    . z/ `  N5 G2 r4 t
  139.         mov        gs, ax
    9 `$ c+ K1 o) ]2 @9 D' Z5 ?
  140.         sti  b0 j# _! ^0 W' S
  141.     }2 @5 g' C2 F6 p( {( Q7 e8 s% e
  142. }
复制代码
这是asm的
  1. ;/********************************************************************. v- \: }" y: i& y. }+ v3 p* f
  2. ;*    File: DOS4G.asm                                                *( Q2 v6 `% J' ]
  3. ;*       Compile with masm ( Editor: Tab size = 4 )                  *
    7 }' s# }* z1 O* f, ~$ F1 y: R& l
  4. ;*                                                                   */ S( K" t  t' x5 ?" y! W2 G3 X
  5. ;*    ========================Title===============================   *7 @& _% j  }4 F( r' ~! k
  6. ;*        这个demo是让系统进入DOS 4G模式,进行数据访问               *
    8 C+ B- j: d: Y
  7. ;*                                                                   *
      I& B+ ^# Z7 t& P/ I
  8. ;*   ===========================History==========================    *! k- k5 x% x% \: ~9 M
  9. ;*    author: bini                                                   *
    % Z& D0 h5 m1 z: c, ?4 [, N. _
  10. ;*      date: 2008-10-08  Frist version.                             *" \- g/ \! G+ C3 J" {
  11. ;********************************************************************/
    7 J+ a7 }' |; \
  12. .model small
    $ G! i8 D6 b; }! |# [
  13. .586p5 ?  t: z8 j& _! b6 H+ Y
  14. 3 z$ q3 X, @0 y9 P
  15. DSEG  SEGMENT   USE16                 ;16位数据段9 i; O# ^( G# b

  16. ! U% ^; `- U; J. e7 b
  17. DESC            STRUC
    # `" W2 o, l+ K. ^5 _( f
  18.         LimitL          DW      0 ;段界限(BIT0-15)
    & j, p9 e4 E6 x$ m4 Q  P
  19.         BaseL           DW      0 ;段基地址(BIT0-15)6 o/ Z5 ^( N3 g
  20.         BaseM           DB      0 ;段基地址(BIT16-23)5 F& x4 U, Z1 h" C- B5 I' `
  21.         Attributes      DB      0 ;段属性
    4 d+ |9 p  s/ \  ^. i
  22.         LimitH          DB      0 ;段界限(BIT16-19)(含段属性的高4位)
    - E4 ?$ d5 J+ b
  23.         BaseH           DB      0 ;段基地址(BIT24-31), J3 O  I' E+ t. m3 a
  24. DESC            ENDS" n" L4 p  c! t& ]$ Y0 P; ]' W

  25. + O1 Q, m' `5 B: W
  26. PDesc           STRUC
    / a: L' P, x: \3 W5 K
  27.         Limit           DW      0 ;16位界限
    4 W2 {# r# g2 i$ B
  28.         Base            DD      0 ;32位基地址4 M( X' V6 V% q
  29. PDesc           ENDS
    ; F' M( \1 F6 F, C4 `: r
  30. : b3 n2 Y2 x7 B9 Y- g
  31. GDT_def         Label   Fword) I0 ^3 Z. {" i8 c' ~0 [
  32. Null_Desc       DESC    <     0h,  0h, 00h, 00h, 000h, 0>' R. `; i" E: t3 V0 T
  33. Data_Desc       DESC    < 0FFFFh,  0h, 00h, 92h, 08Fh, 0>
    2 c4 E' \7 R6 \; L: m5 [, Z
  34. / P$ o% e/ W. O
  35. GDT_Addr        PDesc   <$-GDT_def-1, >
    " g- m5 t- I3 T
  36. DSEG            ENDS                          ;数据段定义结束
    : m: P4 j: P" R* Y8 x

  37. 2 h9 x- t" b* j) H0 n
  38. CSEG            SEGMENT USE16                 ;16位代码段1 p4 q" R( C# F( C7 z
  39.                 ASSUME  CS:CSEG,DS:DSEG" x2 I! t6 H" g6 ]1 @
  40. .Startup) v/ D/ g' R% M1 l4 K) l
  41.         call      Set4gb8 D( I- c. r5 }0 k% }
  42. ;7 s& w" |4 J9 Y6 Y5 J2 F
  43. ;       fs, gs即能访问4GB空间3 e: S+ J/ i3 J9 c
  44. ;       write your code in here.
    4 w) W6 }7 H3 s9 ]- x5 Y0 ?' J2 x
  45. ;
    9 [0 j5 Z5 H# B: Z4 E0 @/ n4 X5 C
  46.         .exit( `6 X" {1 D/ u' M3 _/ s7 `
  47.         
    % |# l- W8 u! Y# i# q
  48. Set4gb          PROC      NEAR
    . ~$ z0 g8 |: [% \2 y4 ^6 o
  49.         in        al, 92h+ ~- n: F1 Z" f& F  e& [
  50.         or        al, 0028 `* n/ D# V9 H3 N! s5 H5 M
  51.         out       092h, al
    7 S0 f! V! _  [
  52.         out       0edh, al
    " w0 H+ Q& R1 D

  53. . p- y# m4 ]% Y: W" G: i
  54.         cli+ B' V9 ^' m3 S% W  c9 L

  55. $ r0 F+ Q- A1 Q
  56. ;        mov      word ptr GDT_Addr, (2*8-1);
    * z  H% _' ?% ?6 m* o5 x

  57. % @2 a9 a' H7 x- k+ I  A  k+ p6 G4 A
  58.         mov       eax, ds0 j+ V, K0 f7 e1 J% h" X/ d; `
  59.         shl       eax, 45 ?5 H/ \* A0 @1 @, Q
  60.         xor       ebx, ebx
    / j% ~8 a0 F7 o% [2 t, R, l
  61.         mov       bx, offset GDT_def: b0 h6 o) ]7 G
  62.         add       eax, ebx
    ) s3 c' ?: [+ O' D
  63.         mov       dword ptr GDT_Addr.Base, eax
    . V: s, y* r6 K. A6 b) q' a
  64.         lgdt      fword ptr GDT_Addr
    7 N8 L; Y) G6 S! Z* _
  65. 8 M" F9 I) J2 \+ j( e
  66.         mov       bx, 88 P- G  g# t2 R" [8 ~( Q6 m/ I
  67.         mov       eax, cr05 Y9 ~2 C' X0 Q) B( o1 l
  68.         or        al, 11 u7 F; o! \9 N, P# A
  69.         mov       cr0, eax
    ' i6 D) t, j% {8 i9 }

  70. 5 |5 I6 \. Y0 u. T7 V! C
  71.         jmp       pMod& Z4 F& p0 Y# }2 O$ w
  72.     pMod:
    0 }! g, \+ h4 N9 g4 m' Z. A; A( t
  73.   t% a0 }& e# ?4 w7 k& X
  74.         mov       fs, bx
    ) u* W' J7 g3 o+ N7 r3 o
  75.         mov       gs, bx
    " x3 T6 _& R: i$ M+ C. g/ ?1 V; |
  76.         and       al, 0FEh
    0 H) z, a. S7 [+ a* N; s
  77.         mov       cr0, eax
    2 J7 H/ Q+ f: s/ g  b5 e% E
  78.         
    " m6 G3 K. z) o" [
  79.         jmp       rMod- K  a2 y. N/ _: A
  80.     rMod:5 B: A( ]9 q' ?' r( R
  81. ; r' T. o+ F) O4 h, s$ q
  82.         mov       ax, 0
    6 M& p! t% f1 Y
  83.         mov       fs, ax
    5 i5 P7 g/ I' d( I
  84.         mov       gs, ax; P& U; g! ]% ]
  85.         
    : B$ y5 p& Z8 C3 J) T$ O
  86.         ; 在2M的位置测试写一下数据
    - w) W5 D4 X  h; g
  87.         mov       esi, 200000h
    & M& ~& f7 u- N6 K2 v# H& r3 s
  88.         mov       dword ptr fs:[esi], 055aa55aah" Y$ J, S  _' D$ s9 ]# s; F
  89.         ; 用RU去看看200000h的位置是否是此数据....- b" @% B8 i( M" e& [, Z! k1 ]6 Z
  90. 7 [0 C+ V8 f5 ]
  91.         sti
    - E: w' I( f7 Q# b! g/ A5 l
  92.         ret
    1 X9 c1 G8 x& N% |) {$ L, o
  93. Set4gb  ENDP5 H& {# z- P& e
  94.       
    . U) M8 C, ?1 T5 x
  95. CSEG           ENDS                              ;代码段定义结束
    6 F8 V% @# K; R
  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
  s( |( P) U7 c5 [* c; M7 H) ~& K  o6 d2 Q6 p( V1 Y# \
option->compiler->code generation中的option选中, [X] compile via assembler
6 ^0 U& a3 \0 p; o
; Q+ v+ F) z) ?) C7 B5 M' l[ 本帖最后由 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;% l- M6 ]3 K% l+ N- B
Data_Desc       DESC    &lt; 0FFFFh,  0h, 00h, 92h, 08Fh, 0&gt;
5 w* i+ c, O1 i4 {* _3 M( }: O/ k5 D1 B
GDT_Addr        PDesc   &lt;$-GDT_def-1, &gt;* u9 K  D% F1 \. s
替换如下,
! ?! v0 O  e4 YNull_Desc       DESC    < 0h,  0h, 00h, 00h, 000h, 0>
' Q% ^  H0 k4 B9 p$ g4 F8 r9 `/ K. c; lData_Desc       DESC   <0FFFFh,  0h, 00h, 92h, 08Fh, 0>4 I* ?" s+ w; f$ P; ^: O, e2 Q4 R

* Z% K# z. o; D7 \* F2 ]0 Z" q% MGDT_Addr        PDesc   <$-GDT_def-1, >0 r5 n" [- n% A. {- p: v' M
这样你就能编译通过并且可以运行
回复

使用道具 举报

发表于 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 发表
7 ^, Q2 g+ a2 `$ _, ^) Doption->compiler->advanced code generation中的instruction set选 80386
: K$ r- V" `% U4 ]( P) j8 W1 \6 ]$ L# `; Y: K; m! B. f( M
option->compiler->code generation中的option选中, [X] compile via assembler

' i8 [7 W3 o8 }+ s0 c   作了上述设置之后还是不行,编译的时候提示: cannot find executable: TASM. 我换了几个版本的TASM还是没用,除非拿掉含有32位寄存器的那些code才行。这个是什么原因,请各位大侠多多指教
回复

使用道具 举报

发表于 2010-4-12 10:27:08 | 显示全部楼层
原帖由 A_jack 于 2010-2-26 10:47 发表
; C, n  C8 I1 p7 |3 a1 p+ q; z& v4 L$ O2 G# q, |- G
   作了上述设置之后还是不行,编译的时候提示: cannot find executable: TASM. 我换了几个版本的TASM还是没用,除非拿掉含有32位寄存器的那些code才行。这个是什么原因,请各位大侠多多指教 ...
+ B% h' Q3 Y7 ~% K
, w( g# T; C* q0 S& l
我也是相同的问题,请问哪位有解,谢了!
回复

使用道具 举报

发表于 2011-2-21 21:04:39 | 显示全部楼层
option->compiler->Transfer 设置TASM的路径,就不会提示找不到TASM;
. @( t: o) W6 B* j* J4 F! J$ G7 }, Z还要把TASMMSG.exe拷贝到源代码(工程目录),就可以编译完成了。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-29 04:37 , Processed in 0.247870 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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