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

關於SEGMENT 宣告變數的問題

[复制链接]
发表于 2010-10-19 16:50:51 | 显示全部楼层 |阅读模式
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)  r, u8 {; q8 d# g) P( d, d; w! |
8 u2 Q8 ^  q4 S
則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'0 Z( I; c; P  e* N

" e7 R1 s/ j4 |* z! m6 H: f宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝  
5 q! [% n9 J$ m# q) J
+ L' X+ c, f1 Y/ }+ R% q: @# ^.model small
6 W7 R  ~" s* U. U.386p
$ f# w, D/ a" x+ y6 B1 X, j# |, Q! S- VDSEG SEGMENT USE16'data' 5 B- H- ?/ U7 i

; C( ]1 V8 D% s* xDESC STRUC2 w. Y4 D; z" i) o
     LimitL DW 0
' t. F5 {# y) Z, q- r6 p# p     BaseL DW 0
% U) x2 @' N( Y- F0 I! b% x     BaseM DB 0
5 f& `0 A5 b+ l     Attributes DB 0 2 W$ d( f3 F% `$ B8 n
     LimitH DB 0 8 u2 {0 s1 {- M# R( z
     BaseH DB 0 1 X" `' D6 D9 R& z" o' j. `; ]: \
DESC ENDS
2 J) w8 Y. e* n3 X" m+ Z- F- k
& s4 b5 ]( v1 N. M4 sPDesc STRUC2 k. L5 x8 e$ @! @$ ~4 u
     Limit DW 0
3 J. Y; a7 x% T  Y% V7 C0 X     Base DD 0
1 J, B$ A! A1 ^% ^PDesc ENDS1 n* I! M* J& j* W" C3 {5 m' `

( z7 v' @" h* J0 v0 `$ U$ N; t& E* dGDT_def Label Fword
6 V1 z2 z9 o+ `9 PNull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
3 r7 H- _% _# Q  p& rData_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>+ G# m& w& u" G- X5 O* v: c& }
GDT_Addr PDesc <$-GDT_def-1, >
1 M4 v9 A$ _6 l& D+ J, I9 I
. {" F0 m# {" r7 L# aMaddress Dword 0
( X& I. p. f$ c+ K; [; r+ q3 v8 k" e4 M1 z% U" O! C
DSEG ENDS
  w7 \3 W0 ^( \) D8 W7 Z5 @ASSUME CS:CSEG,DS:DSEG
6 S5 U1 Q# k6 X0 p3 s4 l* h0 `2 y, E1 C+ ]9 x* g6 e
CSEG SEGMENT USE16'code' ' S! [" S4 V: u1 L
      push   ds, n0 S# R) F6 y
      push   es: c4 ?* w/ ]# u( I: j, H8 {) v
      push   fs
7 [, C4 R+ s/ [2 ?5 w- W" X9 C      push   gs1 e$ c3 b, _# E& V: ~0 ?
      call   big_real_mode     1 o/ G& B  i3 ~3 [
      call   Get_Commandtail
9 j- a2 u: V" S0 g) x* e( f& ]8 T      xor    ebx,ebx7 E7 a( z7 Q, B$ P' j$ {- l
      mov    si,82h9 ~& W) Z4 E3 p$ Z5 n7 L) `
      mov    al,es:[si]
2 m: K# E/ K( ^      cmp    al,'r'$ m+ ~. V6 i  O% t( _6 ~+ f- _$ H/ L
      je     R
4 M$ V% @' t- C% v- h      cmp    al,'R'8 s4 u6 P* i5 a+ l* o7 O- \' C
      je     R  P" ?# l( a. T9 Q. `
      cmp    al,'w'  U$ [! s! E8 B2 u% M7 P: [) P
      je     W
7 `" E8 }+ v5 R0 l4 e* C4 I      cmp    al,'W'4 s0 t5 `8 C( ], g* g, }6 X; J
      je     W          7 V5 h2 w' K$ f" j
R:
) A  o* v: J$ i; m: p" x      mov    si,84h2 F# y8 F) U* l  g/ M" K2 o
      mov    al,es:[si]
% J* u7 K7 s- b; K. _      cmp    al,'b'6 x  q- j! K8 \% J# z2 p
      je     RBT
0 o; G# P; A1 Q/ A+ Y" P$ U( L      cmp    al,'B'2 y6 E; d* _: k
      je     RBT# [! k; K% I1 i; `
      cmp    al,'w'* H; T6 U3 @4 Z7 w  {; F  _
      je     RWR
1 b$ k! |0 I7 R' M2 P* P      cmp    al,'W'0 E6 u* p' b# e/ k  P- g
      je     RWR
0 `' y" h8 R9 w      cmp    al,'d'' F: V3 D( ?5 p6 q; [* O+ r
      je     RDR2 c3 H- a& r3 e6 t) C
      cmp    al,'D'
; Y- f) ~$ `5 B      je     RDR             / `, h* I8 w4 X+ j' `- k$ ^! {9 P9 C
W:      
5 z1 g# P- T  D1 ]5 p: Z, ?      mov    si,84h. m  I. ^4 c& D0 y# G& ?% S" E, X
      mov    al,es:[si]
# H2 f; F: v& q8 k( d      cmp    al,'b'& J  [) Q/ I+ v" q0 W
      je     WBT9 n( v) I0 `7 S$ P8 Z( ?6 ^
      cmp    al,'B'6 R9 j: v. l: {
      je     WBT: M& i. S/ j% D5 O: N0 P. |
      cmp    al,'w'
' |8 C: `9 ~; `      je     WWR
( E6 P* h5 y) @0 E6 o      cmp    al,'W'
$ ?4 y$ L$ R7 X; b      je     WWR% \- \7 @9 a. z' ?! m
      cmp    al,'d'
% B5 a) B: C  b- b* ^  H      je     WDR9 i5 _, X# @' L& X' G
      cmp    al,'D'0 o2 p# L, u! v, \8 n8 n
      je     WDR
% Y/ d( y0 y% z  @RBT:8 X! ?4 t* ^( |( _& i8 e
      call   PSP        6 g' R5 s9 Z$ r( u
      call   crlf           
3 E, p* i) @8 y/ V% H# F! |      mov    esi,ebx8 Z3 P+ Q5 y+ X
      mov    eax,fs:[esi]: d: E6 D& }$ T( G. Z# o( Q
      out    80h,eax
0 ~: W2 d  {8 e9 b& P3 L5 L      mov    ebx,eax9 }# @7 }5 m4 T- h7 a
      call   _8bits
% ]2 p8 r+ Z7 O7 Q      jmp    Exit9 b7 ?, J* ]5 C' O$ z/ u
RWR:
  \; S2 ~+ `3 d. r5 T      call   PSP        
! G; R! N+ y: _+ L& l! `9 \      call   crlf           8 Z  h% S! X1 x3 N
      mov    esi,ebx
6 J( N" e6 s, w9 s      mov    eax,fs:[esi]
+ t: |9 H; `$ H. ^, _/ b! N- u+ i5 m      out    80h,eax9 P+ ]- L1 w3 ~( M6 M
      mov    ebx,eax# _0 O+ c5 Q5 ]8 c" O8 I
      call   _16bits6 \1 {) w8 W8 l: V( d+ [) ?! W5 A8 n
      jmp    Exit
7 B) R3 D. J) J, R6 @; s# o" VRDR:
' R. H0 G( V  i. [      call   DPSP        
4 L4 ^  U" D2 w) ?/ y. w      call   crlf           9 C$ C1 C) @: l. y7 r7 f
      mov    esi,ebx
2 S1 D0 }8 j/ K# u" ^  W' p9 ]      mov    eax,fs:[esi]
+ G+ C/ x  P! n% y$ A0 O# Z      out    80h,eax) M: R: g3 p( z& e' G  g
      mov    ebx,eax; c0 H- A$ E: r: J, p' B
      call   _32bits
+ }8 S* E6 ~9 Z0 l; Z      jmp    Exit
' q) I, Y' l( C$ e;------------------------------------------------------------------------------------------------' p& C2 L+ \; F6 `$ H% ]
WBT:
. \( {& C9 r) h! u" Z      jmp    Exit" l7 N( D4 b3 s; g* Q% C
WWR:0 z: o$ m0 L4 D$ Y% |7 u: z$ B
      jmp    Exit
/ ?# q% G# |! k6 DWDR:9 @) `5 C; b; M8 m/ s/ v9 y2 m
      call   DPSP# X8 [0 Z; f6 m# R- Q
      mov    Maddress,ebx      / H5 x+ g* E: G6 S2 `7 {
      call   crlf+ r- q% O; ^; o/ J* T4 ]% H% z
      call   WDPSP% c  f. T6 T) a
      mov    eax,ebx9 d4 s! H+ E4 i. P2 Y9 }* v/ Y7 s
      mov    esi,Maddress          / Z% L2 n8 f, n
      mov    fs:[esi],eax
$ a, r2 `) w* x/ A5 m      out    80h,eax
% B; |% W; H% }, @7 e  F      jmp    Exit
. t' `5 S/ @6 _0 C, M  V;------------------------------------------------------------------------------------------------      
. `8 ^8 T0 A: I. i* l) g5 X% YExit:6 y8 y# z/ C" V8 _
      call   real_mode     6 F; T6 L; |# z. K' D. `
      pop    gs
) S9 I+ S: {. ]  ~      pop    fs
- @. P( @0 l# ~2 I4 m      pop    es
4 y9 F+ I$ P% J, y! J      pop    ds      
# o, r( ~6 c' @1 L8 k3 b" n1 x4 V      .exit7 a- j* _" D3 {/ s" ~8 R. M
;------------------------------------------------------------------------------------------------
: D. _# L. W) d% ^8 x1 |0 |big_real_mode proc near% ^. A4 o4 y' ?# ^) O2 `$ ?( ^
      in     al, 92h% ?* h% S" Y% r- L1 w8 e0 Z$ E/ M
      or     al, 002/ W6 ?2 O/ Y6 E: Y0 @
      out    092h, al
8 _" Y5 h0 \; k* a  j/ d0 @      out    0edh, al' l' t# N0 q  a: e6 e
      cli) `: o( P+ s: i" H6 O6 H
      mov    eax,DSEG
  u4 P) X9 L4 c9 k* m( P% S      shl    eax, 4
! y: y& y+ m9 x: \. q      xor    ebx, ebx
: N+ c  T" Y3 k2 x" W      mov    ebx, offset GDT_def
- G( \; w) b% V/ E% Z- y      add    eax, ebx- d5 W+ k; Q5 ]4 K2 q
      mov    dword ptr GDT_Addr.Base, eax
, X0 N7 s; j- W+ _, D9 j* W1 G0 G# N. {      lgdt   fword ptr GDT_Addr
4 m' c- S; y5 ^) s$ t0 b2 {      mov    bx, 8
5 P" b' R1 f7 N, |* K. N1 S  D      mov    eax, cr0
- n6 Y7 [( i2 L: T      or     al, 17 ~4 n# z& E. K# f& M" o- k
      mov    cr0, eax& c- [8 w8 ?5 P2 j
      jmp    PMod3 [; E' A( j# s; V+ \& U
PMod:0 i9 y( }. h9 T7 Y1 ^
      mov    fs, bx
9 _' K6 S* _/ u  r/ ^2 j; P0 b% r      mov    gs, bx
8 H' H, s: v2 F# T, A7 v$ N      mov    eax,cr0
8 O- f) M9 f% {; S4 T+ w7 ?      and    al, 0FEh
& U: a- S+ x/ b- M9 q, T      mov    cr0, eax 3 e. `% Y+ E% m/ {% j: O. h( E6 y
      jmp    RMod
+ c1 @! o5 g8 d4 M2 h1 `. g# }RMod:
$ [( o4 ]# @' M8 w0 Z: \, C( }      xor    ax, ax; P4 U- y$ z4 z- W* b$ t
      mov    fs, ax5 L/ `3 r# F- T$ g
      mov    gs, ax     % t. u3 |5 M9 Z( d# `: M& A3 R/ z
      sti     
0 Y1 ?7 f4 Z* z# S! d      ret6 n) h9 W) M$ H! t
big_real_mode ENDP& K" }1 S! c5 ~7 K7 q* d4 j, P
;------------------------------------------------------------------------------------------------
/ A8 F. z% k. G. F" i, dreal_mode proc near
# i: D/ {% I3 G. V1 D3 U      in     al, 92h' [5 R( V% r- z5 b( Q- `) p
      and    al, 028 a* }$ M' A& i% u2 {2 T- G4 T
      out    92h, al   
& B8 k4 h* e' o1 A      ret
) h* L9 d) S2 dreal_mode ENDP
/ C& r& g3 y: r% Q& q% X1 S;------------------------------------------------------------------------------------------------- H$ ^' l& \; X' Z
Get_Commandtail PROC near4 m" t2 o' @6 m6 U+ [# ?" j
      mov    ah,62h
$ R3 y3 d& f) V' ?9 X      int    21h$ ]  V  M, l8 Y+ ^! k
      mov    es,bx
$ d3 j# m  x# G$ ^% @3 H( W; W      ret7 d( k( T) `/ c0 h8 o+ J
Get_Commandtail ENDP    6 G. o% m  [0 Y9 g6 a' S! C- @; a) {
;------------------------------------------------------------------------------------------------* {9 f; I6 p9 D1 p$ D
PSP proc near$ ^4 I9 [. _% h
      xor    ebx,ebx
6 w' |6 O1 i1 K$ G% G/ n! w      mov    si,89h
6 b# u4 Z: w8 {/ T' a1 W      mov    al,es:[si]' K8 X8 G0 w) Y- [
      call   Change: P8 o4 l9 ~0 ^# Y/ p' @
      mov    cl,4  M* q7 J% L# j
      shl    ebx,cl
6 r- H, a7 I2 X/ Z% L9 Y2 G      add    ebx,eax
7 x" k0 F& w+ U# B& t& y      mov    al,es:[si+1]
) M( r: h) n# `- t* Y7 c, R. o  \      call   Change# n) d7 _5 O) ], v) i/ X2 [0 G$ ]
      mov    cl,4
) K7 @* ?/ N% V      shl    ebx,cl
/ ~! [& e5 K" S8 c( N% j      add    ebx,eax# K7 r4 T* O0 I
      mov    al,es:[si+2]$ n! P; ]* E5 Y
      call   Change
3 E% q4 x& v4 [% u2 w$ k& r      mov    cl,4" h: Y& A7 q7 f: u+ F8 _) Y7 r
      shl    ebx,cl
# J5 e; D5 t7 j% e6 Y* g      add    ebx,eax
7 c( Z2 V2 C# H6 w. y: z9 Z      mov    al,es:[si+3]" {& }4 O" p  V9 z8 [5 O! ?* W7 ~
      call   Change
5 x7 c) K8 |- E% x: A( S; q! ^/ k( X      mov    cl,4
( J0 u- b5 t: W, s  b, V$ I; k      shl    ebx,cl
0 K+ |5 ^7 S( e5 o1 H      add    ebx,eax8 f9 V% w& |$ p' p! ], O
      mov    al,es:[si+4]
1 }2 [' B( B  `3 q2 v2 H3 M      call   Change
7 P0 V* ?3 r% j. i* R      mov    cl,4; d( S. z) }8 I% \  @- X# A, K0 `& z. l
      shl    ebx,cl
& v" \) P: [. E! M/ d" s/ ]- V      add    ebx,eax
) |8 }% k& a1 k      mov    al,es:[si+5]
8 @5 i% ~$ V7 q( d7 v      call   Change
3 X& E$ N3 ?$ N) [# @2 p  Y      mov    cl,4! p0 P+ L! K3 ^+ y9 {- c2 w
      shl    ebx,cl, l+ T1 t8 p; [0 k0 P8 l
      add    ebx,eax
0 h/ T1 M' e+ [/ G$ l; m# k6 e      mov    al,es:[si+6]
# ?! u, a/ q; u# x0 ]      call   Change
, }4 Z, h+ _* p8 u      mov    cl,4
7 N. z8 t2 B1 A& z% L) o+ d      shl    ebx,cl
  f) ~/ Y# T$ Z5 ?      add    ebx,eax
% n# b* L8 s- O1 z# R# @      mov    al,es:[si+7]1 J5 q3 c% W0 n( T
      call   Change
. b1 K. |: ~' c. [! J9 m      mov    cl,49 N8 u# o) K6 I8 A
      shl    ebx,cl
% ]8 v; d) }: c$ ^5 t, h      add    ebx,eax
: Z: s, V  B: c      ret/ i* J8 ~4 @4 N
PSP endp
& B) r! q( b9 Y" Q;================================================================================================
5 G9 u- I' a" s+ A2 t, |DPSP proc near
5 ~) v5 |3 V3 ]! q7 ^6 C      xor    ebx,ebx
$ v( }9 W) @( z4 A      mov    si,8ah
% p4 V6 g$ O- Q- Q; ?- ?      mov    al,es:[si]# N2 u& ^) w5 O5 w0 l7 O5 m
      call   Change+ I0 y2 L+ _4 s
      mov    cl,4
3 v* H& q" }0 t& s      shl    ebx,cl
7 L0 p2 I2 m9 N2 f3 u4 C; i      add    ebx,eax2 Z, D; ?& b  f' \
      mov    al,es:[si+1]
+ ?% c3 i1 V: A+ t4 A      call   Change
3 ~  p6 U/ I: ^' w      mov    cl,4, Y! k5 H7 B! {2 r' U
      shl    ebx,cl
8 Z5 E5 y! m" V) J, x; n      add    ebx,eax
$ b; U! o, a: ~1 u3 j      mov    al,es:[si+2]1 i. o& q$ u8 N
      call   Change( N3 s* L0 @  q. X
      mov    cl,4
+ A# `/ U6 H0 G      shl    ebx,cl' h/ L* |0 q! {9 W2 |4 [
      add    ebx,eax$ {9 w  n$ k# L6 b; w! B! K
      mov    al,es:[si+3]6 ?' i4 G3 b% U6 u# P
      call   Change
" j$ a4 D3 y1 M9 H. _1 H$ ~* T      mov    cl,4/ s" ~1 z. z& |4 i3 }' a- P
      shl    ebx,cl2 ?7 i2 {+ U; w' W! U
      add    ebx,eax
+ X- x: I2 P3 R: K" b0 q      mov    al,es:[si+4]
) E7 I  M  M* E, H$ @      call   Change! I1 g" C# Z6 A( s" n6 W: {
      mov    cl,4
, Z( m+ y/ v, B# J5 v* w0 I6 i# h  y      shl    ebx,cl
! l; ]$ ]! F. c- @: [      add    ebx,eax# ~( D) \+ ]# N
      mov    al,es:[si+5]
9 k2 i1 G1 U! ]      call   Change: [/ m& I1 U7 @' [3 y
      mov    cl,4
* w, [+ ^, Z8 O      shl    ebx,cl
! z' B$ W7 f9 X0 X      add    ebx,eax, l" M$ X  h; s. \
      mov    al,es:[si+6]6 [  y+ A/ G' D$ c! P) ?; m
      call   Change8 e! c' {8 U7 R9 v& H5 \% I% L
      mov    cl,4
" y4 q' L/ V0 u& N/ M      shl    ebx,cl3 v  ]7 ~6 [- [
      add    ebx,eax" ?0 l/ L1 }$ b* w
      mov    al,es:[si+7]# `# d3 K! K" [9 |
      call   Change: ]* d4 h5 a0 X
      mov    cl,4# T' o1 f3 Y/ J) P1 `, d
      shl    ebx,cl
+ r" g8 g# H" h0 ~      add    ebx,eax5 C. o0 s2 ?$ h5 E/ [
      ret
7 k0 t; X* u/ f% gDPSP endp$ ^" J- u8 V9 ~# S
;================================================================================================( E3 n- a+ e- W8 w- x3 H7 r
WDPSP proc near
+ T) k) C9 R3 i2 X( T      xor    eax,eax: s. s) E# D. ~9 C
      xor    ebx,ebx4 u' U- w; h- Z: g" _
      mov    si,93h8 U. C$ C7 d% h( {) w
      mov    al,es:[si]( j3 O2 q5 X% a
      call   Change
3 F7 t. H' }# D) O      mov    cl,4
+ A2 C& n) V. }8 e  a      shl    ebx,cl
/ }" o6 E) H0 w5 j3 `      add    ebx,eax
/ z! T& H3 O6 Z% o/ G5 P      mov    al,es:[si+1]
* z% [, e9 \9 P4 x4 n      call   Change
( `) P+ r& G9 j) W. g# A3 o      mov    cl,4
* [! N% V8 G( g$ I* Q; g' y  `9 {      shl    ebx,cl6 Y( t9 d6 _% z
      add    ebx,eax$ {3 M" o/ ^4 a/ [. K
      mov    al,es:[si+2]* e- u+ l( X8 ~0 r2 ?. a5 ~
      call   Change& t& @, s2 ]% a! ^' e; W1 U
      mov    cl,4
) P1 W+ J8 ?- ~: n, d      shl    ebx,cl
+ P0 @9 p8 O6 K, q- J- V      add    ebx,eax
6 I/ {4 t' l) W% H. L      mov    al,es:[si+3]# W7 ~. V6 L7 m
      call   Change
$ o( ?7 ]0 A  w  s0 [/ I% f      mov    cl,4
3 b, q: o; K/ F+ Y$ M3 ^      shl    ebx,cl2 Z3 H3 E; a. B- Y& M
      add    ebx,eax
( @- z6 Y& v2 a, P  C9 J      mov    al,es:[si+4]4 b  i$ i$ ~1 V5 B
      call   Change
% `2 ^# A( h4 @. A; u5 K9 u3 b6 h* X      mov    cl,4
+ j8 p6 E2 l0 W1 Z( o' ]4 T      shl    ebx,cl* m! g! A: J2 W
      add    ebx,eax
' `/ a, S% V* J6 J5 C  K      mov    al,es:[si+5]( \0 q& @/ l' l9 I8 o2 S. E
      call   Change( R. o( G  v$ Z; T
      mov    cl,40 r; k6 m( y. |
      shl    ebx,cl6 j4 w7 [  q' W* Q6 S
      add    ebx,eax
: M" k+ V$ Z8 `, A% S; ~      mov    al,es:[si+6]
7 y& H  _. g/ h7 K& [! O      call   Change
$ ]4 c( w. X) B* ]; ~      mov    cl,4, N9 T" G8 t/ n0 ^4 G& K
      shl    ebx,cl+ V2 C6 E+ G) a' O
      add    ebx,eax
* u. D% {& J9 l: B. g. E      mov    al,es:[si+7]
! Y: j6 \  l  L, Q      call   Change
, s; }4 _- A5 h5 j      mov    cl,40 U4 J# a: k( o/ K
      shl    ebx,cl
  Z$ o0 L* i4 A7 p1 }8 O      add    ebx,eax) m9 u4 d! j. K6 f& f9 D
      ret
- `: p$ z; c  w  Y* g  yWDPSP endp
+ C( R' ]% e+ w5 h$ ?;================================================================================================  G# @9 i( c; W5 E) k  }
Change proc near
! n1 B1 a% `6 J( _% A5 Y( VA:    ( N) m  o6 E2 H; N
      movzx  eax,al( |* G3 f2 l* F& q0 C
      mov    edx,eax
9 k( j' R7 i4 h9 t      cmp    eax,'0'            ) [  M/ y- l6 {3 Z) x0 V
      jb     A8 Z* @, b7 s8 w0 P2 @4 S/ x
      cmp    eax,'9'            6 h: x6 q* l, V4 U  _! \6 n3 K
      ja     B# c* M4 r" x% d
      sub    eax,'0'5 G; K2 G4 u. W2 m, T' _7 |
      jmp    short E
  [7 k& q" x: a/ C9 I. cB:; ?0 s+ F- G& A  P0 i2 h
      and    eax,0dfh           1 N0 I* n1 N- L
      mov    edx,eax( D! G$ S2 K1 U  u- X+ }' g- t6 d
      sub    eax,37h            . K( _8 Q: N# t$ ~( `# }' }5 U
      cmp    eax,0ah1 e( H, [5 G9 |; A) E$ i# Q$ F' L
      jb     A                    X# w1 F8 h' F7 A
      cmp    eax,0fh
/ w# ~/ Y1 P- k8 b+ R( j      ja     A                  ( E1 s4 A1 q! P6 K: j/ W
E:
! |' R$ ~+ S! F9 j      push   eax      
& P8 c" i  }+ ~      call   PRT                0 O% w  M$ ]# a8 N5 A! I& [5 B
      pop    eax4 [0 h6 g- j" z. Z2 e- U
CExit:( V! z0 C& Y( r! g0 L
      ret2 s" u% d) v- D5 j) W% t# u( b
Change endp- m  c. c1 r) P0 w' ?
;------------------------------------------------------------------------------------------------
% T' \. d' P5 g/ J0 E% MPRT proc near
9 U/ m4 L' U: H7 c# t! g. J9 P      mov    ah,02h, e  q0 K' A1 n9 D
      int    21h
0 W, x: n) \! J( y' n& n      ret3 ]: e+ F" O2 d3 i
PRT endp# {. Z7 O3 l' g: m" u
;------------------------------------------------------------------------------------------------
, r% q" n6 o5 ~6 l5 Zcrlf proc near
* Q6 H3 `% [; c0 r: Q3 P  c      mov    ah,02h
  d$ X# P; M/ Z" \! H2 U! }      mov    dl,0dh9 z" m; i1 i4 z- I( n$ e! G  q) b
      int    21h
5 B( _: ~* @$ {# L      mov    ah,02h
! p( W/ `8 u2 q4 d8 L2 J9 g: Q" R      mov    dl,0ah
" j+ b1 G5 ~) ~) C# Z& o      int    21h
5 \' h9 C2 Q+ d      ret
1 ~* y; h9 X9 k, _6 K. k5 |' hcrlf endp- x- E# d  l2 u
;------------------------------------------------------------------------------------------------2 i& q: U0 _; L
_32bits proc near5 D5 c1 B# t4 `5 C$ j
      pushad2 m% b5 k% u) |4 n
      mov    cl,4. e" ?6 o- Q- p
      rol    ebx,cl$ D0 e4 R! n+ L8 I. I# U( J1 P1 \
      call   print_4_bits) L- c8 a4 P0 v3 V; Q  c
      rol    ebx,cl
$ r+ O: P9 {# N: j4 l& z( v( a0 a' x      call   print_4_bits
8 I4 d$ q5 l4 ]# g4 i$ W! L      rol    ebx,cl
3 |% @* j% c1 t4 M0 W      call   print_4_bits& k; U9 Z! z+ |9 ?0 |$ M
      rol    ebx,cl5 P8 A! E7 Q' T7 a) w: B3 _+ E
      call   print_4_bits
2 `5 Q+ A  X  \3 J      rol    ebx,cl
) Z% e- O) {) ]; h9 F      call   print_4_bits/ @6 ^7 b/ h4 M, y
      rol    ebx,cl
* m& L* P; s/ X. Y# i      call   print_4_bits9 \0 B! |& Q) C( J" g. N
      rol    ebx,cl
* v5 v1 P4 N& L' M      call   print_4_bits
: F+ `  J- W. h& D* }' i9 r! P      rol    ebx,cl) a  }7 h; I0 Y6 g* A
      call   print_4_bits
+ R# f! \# Y+ E! w- r" v$ |: f      rol    ebx,cl8 E% u. ]- o% \. p: |& m; L" U
      popad
- O: v) a0 p+ i8 P- t      ret1 V4 m: d( s5 j# E! a/ S% I0 @6 r% V
_32bits endp
6 h3 ]" ?' k& H$ z# r5 e' p;------------------------------------------------------------------------------------------------
1 a' Z- e( j8 C  __16bits proc near
( i1 i# U0 @8 K% A7 `+ a      pusha        
! j) [. O, Y; y1 l5 L2 b1 L      rol    bx,cl+ v0 m9 Q0 D; g) ?* F
      call   print_4_bits- M/ |. A$ G$ {- K9 ?# |
      rol    bx,cl0 j9 v) g! M. z4 a4 ?, Z
      call   print_4_bits
# W) G1 T3 |! L7 S      rol    bx,cl
" U. ~) U2 ]4 f% `/ S3 ]0 k2 m      call   print_4_bits
0 Z3 O* Z  P$ [. Q' y) w* G/ `      rol    bx,cl' t2 w" y) R" T/ {8 w
      call   print_4_bits
8 p* {$ h. C, c6 w3 \/ ~: o      popa
- ?  [% J3 u$ y) C! s& I- b      ret
) j2 c8 C* \! f" I1 t9 J_16bits endp& F1 R, @) E5 r: A, I
;------------------------------------------------------------------------------------------------6 j/ c+ H5 \' i0 @- {9 g
_8bits proc near
5 ]' I3 G. _+ @      pusha        ) |* s0 J8 K0 A! ]  \
      rol    bx,cl
. X7 Y3 c# W$ {+ a. l      call   print_4_bits$ ?" M* }; M7 ]3 Z/ s
      rol    bx,cl$ h8 P4 S6 P4 s% X, K% t
      call   print_4_bits( X: d  w" S* \$ S7 u4 g9 y% k
      popa
; q% V* `4 q1 t5 X3 K      ret, H2 E, k% z7 _, a  p
_8bits endp4 E% e$ ^" w6 N. e( [3 G& [# k) Q
print_4_bits proc near
$ i8 H8 d! D0 ~! k: a) B/ U: V  j0 \. u      mov    dx,bx& r/ J0 m( g5 r) C# b$ Z3 ~
      and    dl,0fh
" L7 \6 B$ w1 O      add    dl,30h. @# q: p: W* R% E. T4 Y" y$ v
      cmp    dl,3ah5 e; f, B$ n. q8 v" ~# S! t
      jb     print
  O# O# L" u: u: C+ n" X, B  s6 C      add    dl,7
7 Y3 O2 m1 o/ s) R! T3 gprint:    U* R! r! ^& A0 c/ D* E( v( y
      mov    ah,2
* B3 X1 S7 @2 }, f9 d      int    21h
9 c5 h# f) ]% Q$ V) A3 _      ret
6 u7 ?! m6 l- z- r5 vprint_4_bits endp    2 q8 f+ T+ L/ {2 N
CSEG ends$ Q$ ^4 p- S* R; h; J
END
您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

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

GMT+8, 2026-2-1 12:12 , Processed in 0.101798 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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