Ch 27 ±ø¥ó²ÕĶ

±ø¥ó²ÕĶ¬O²ÕĶ¾¹¦b²ÕĶ¶¥¬q¡A¨Ì¾Ú©Ò³]©wªº±ø¥ó¡A¨Ï²ÕĶ¾¹²ÕĶ¬Y¤@¬qµ{¦¡¡A©Î¤£²ÕĶ¬Y¤@¬qµ{¦¡¡C¤@¯ë¦Ó¨¥¡A±ø¥ó²ÕĶ±`°t¦X¥¨¶°¨Ï¥Î¡A¨Ï±o¼¶¼g²Õ¦X»y¨¥­ì©lÀɯ঳ªì¨Bªºµ²ºc¤Æ (µù¤@ )¡C©³¤U¤p¤ì°¸¨Ï¥Î±ø¥ó²ÕĶ»P¥¨¶°°t¦X¦Ó¼g¦¨ªº¤@­Ó²³æµ{¦¡¡GEXAM05.ASM¡C

³o­Ó¨Ò¤l¬O¥ý¦b¿Ã¹õ¤W¦L¥X¡y­pºâ¡G2593+8888 = ¡z¦r¦ê¡AµM«á¦A¦L¥Xµ²ªG¨Ó¡C³o¬O¤@­Ó¬O«Ü²³æªº¨Ò¤l¡A¦ý¬O¤p¤ì°¸­n¥Î¤@­Ó¥¨¶°¨Ó¸Ñ¨M¦L¥X¦r¦ê¤Î¼Æ¦r³o¨âºØ¤£¦Pªº¸ê®Æ§ÎºA¡C¤èªk´N¬O¦b¥¨¶°¤¤¥[¤J¯à¦Û°Ê§PÂ_¿é¤Jªº¤Þ¼Æ¬O¦r¦ê©Î¬O¼Æ¦rªº°²«ü¥O¡C

³o¨âªÌªº¤À§O¦b°ª¶¥»y¨¥¬O®ù´ô¤À©úªº¡A¦b²Õ¦X»y¨¥¤¤¡A³o¨âªÌ³£¬O¥H¤G¶i¦ì¼Æ¦rªí¥Ü¡A¤À§O¨Ã¤£¬O¨º»ò©úÅã¡CEXAM05.ASM ¦b³B²z¤å¦r»P¼Æ¦rªºµ{¦¡½X·íµM¤]¬O¤£¤@¼Ëªº¡C°²¦p¸ê®Æ¬O¤å¦rªº¸Ü¡A¥u»Ý¦C¦L§Y¥i¡A¦pªG¬O¼Æ¦rªº¸Ü¡A´N±o´«¦¨¤Q¶i¦ì¦A¦L¥X¨Ó¡C¦ý¬O¦b²Õ¦X»y¨¥ùØ«ÜÃø¯uªº§PÂ_¸ê®Æ¬O¤å¦r§í©Î¼Æ¦r¡C

TYPE ¹Bºâ¤l

¤p¤ì°¸ªº·Qªk«Ü²³æ¡A¥Î TYPE ¹Bºâ¤l³o­Ó°²«ü¥O¨Ó§PÂ_¸Ó¸ê®Æ¬O¦r¦ê©Î¬O¼Æ¦r¡CTYPE °²«ü¥Oªº¥Îªk¬O¡G

TYPE    ÅܼÆ

TYPE ·|®Ú¾ÚÅܼƪº©w¸q¨M©w¹Bºâµ²ªG¡A°²¦pÅܼƬO¥H¡yDB¡z©w¸q¡A«hµ²ªG¬° 1¡F¥H¡yDW¡z©w¸q¡Aµ²ªG¬° 2¡F¥H¡yDD¡z©w¸q¡Aµ²ªG¬° 4¡F¥H¡yDQ¡z©w¸q¡Aµ²ªG¬° 8¡F¥H¡yDT¡z©w¸q¡Aµ²ªG¬° 10¡C¦b¤@¯ë°ª¶¥»y¨¥ùØ¡A«Ü¤ÖÅܼƥu¦û¤@­Ó¦ì¤¸²Õ¡A¦Ó²Õ¦X»y¨¥«h¤£¤@©w¡A¦ý¬O¤p¤ì°¸¦b·Q¤£¥X¨ä¥L§ó¦nªº¤èªk¡A¥u¦³¥Î TYPE ¨Ó§PÂ_¸ê®Æ§ÎºA¡C²Õ¦X»y¨¥ùØ¡A©w¸q¤@­Ó¦r¦ê¡A±`¥Î¡yDB¡z¡A©w¸qÅܼơA±`¥Î¡yDW¡z©Î¡yDQ¡z¡A¦]¦¹¦pªG TYPE ¶Ç¦^¨Óªº­È¬° 1¡A«h¤Þ¼ÆÀ³¸Ó¬O¦r¦ê¡A¤Ï¤§«h§_¡C

IF ¡Ð ELSE ¡Ð ENDIF ±ø¥ó²ÕĶ°²«ü¥O

¸Ñ¨M¤F§PÂ_¸ê®Æªº§ÎºA¤§«á¡A±µ¤U¨Ó´N¬O¨Ì¾Ú¸ê®Æ§ÎºA¨M©w²ÕĶ¨º¤@¬q­ì©lµ{¦¡¡A¤]´N¬O³o¤@³¹ªº¥D¨¤¡AIF ¡Ð ELSE ¡Ð ENDIF °²«ü¥O¡A¥¦ªº®æ¦¡¬O

IF §PÂ_¦¡
        ±Ô­z¤@
[ELSE
        ±Ô­z¤G]
ENDIF

°²¦p§PÂ_¦¡¬°¯u¡A²ÕĶ¾¹´N·|²ÕĶ¡y±Ô­z©Î«ü¥O¤@¡z¤ºªº«ü¥O¡F°²¦p§PÂ_¦¡¬°°°¡A²ÕĶ¾¹·|²ÕĶ¡y±Ô­z¤G¡z¤ºªº«ü¥O¡C°²¦p§PÂ_¦¡¬°°°®É¡A¨Ã¨S¦³«ü¥O»Ý­n°õ¦æ¡A¨º¤]¥i¥H¬Ù²¤±Ô­z¤G¡A¬Ù²¤®É¡A¥²¶·¥Ñ ELSE ¨ì±Ô­z¤G¬°¤îªº³¡¥÷¬Ù²¤¡AENDIF ¬O¥Î¨Óªí¥Ü IF ±Ô­zµ²§ôªº¡A¬O¤£¥i¬Ù²¤ªº¡C±Ô­z¤@©Î±Ô­z¤G¥i¥H¬O¥Ñ«Ü¦h«ü¥O©Î¬O±Ô­z²Õ¦¨¡C

¤@¯ë¦Ó¨¥¡A§PÂ_¦¡¤j³¡¤À¬O¨â­Ó¼Æ­È¤§¤ñ¸û¡A¤ñ¸ûµ²ªG¬°¯u¡A«h¶Ç¦^ 0FFFFH¡A¤ñ¸ûµ²ªG¬°§_¡A«h¶Ç¦^ 0¡A²ÕĶ¾¹¨Ì¾Ú 0FFFFH ©Î 0 ¨Ó²ÕĶ¨º¤@­Óµ{¦¡¤ù¬q¡C¦Ó¤ñ¸ûªº¨â­Ó¼Æ­È¥²¶·¬O¦b²ÕĶ¶¥¬q´N¯à°÷½T©w¤j¤pªº¼Æ­È¡A¦]¦¹¤£¥i¥H¨Ï¥Î¼È¦s¾¹©ÎÅܼơA¦Ó¹³¸ê®Æªø«×¡A©Î¬O¦ì§}³£¬O¥i¥H®³¨Ó§@¬°¤ñ¸ûªº¼Æ­È¡C¤Uªíªí¥Ü¯à¥Î¦b§PÂ_¦¡ªºÃö«Y¹Bºâ¤l¡G

¹Bºâ¤l ¹ê¨Ò»¡©ú
EQvar1 EQ var2 ­Y var1 µ¥©ó var2 ®É¡A¬°¯u
NEvar1 NE var2 ­Y var1 ¤£µ¥©ó var2 ®É¡A¬°¯u
LTvar1 LT var2 ­Y var1 ¤p©ó var2 ®É¡A¬°¯u
LEvar1 LE var2 ­Y var1 ¤p©ó©Îµ¥©ó var2 ®É¡A¬°¯u
GTvar1 GT var2 ­Y var1 ¤j©ó var2 ®É¡A¬°¯u
GEvar1 GE var2 ­Y var1 ¤j©ó©Îµ¥©ó var2 ®É¡A¬°¯u
NOTNOT var ­Y var ¬°°°®É¡A¬°¯u
AND var1 AND var2 ­Y var1¡Bvar2 ¬Ò¬°¯u®É¡A¬°¯u
ORvar1 OR var2 ­Y var1¡Bvar2 ¤¤¦³¤@¬°¯u®É¡A¬°¯u
XOR var1 XOR var2 ­Y var1 ¬°¯u¥B var2 ¬°°°¡A©Î
var1 ¬°°°¥B var2 ¬°¯u®É¡A¬°¯u
¼Æ­Èvar ­Y var ¤£¬°¹s®É¡A¬°¯u

­ì©lµ{¦¡

©³¤U´N¬O EXAM05.ASM µ{¦¡¦Cªí¡G

include mymac.inc     ;01 ¸ü¤J MYMAC.INC ¥¨¶°µ{¦¡®w
purge   display       ;02 °£¥h DISPLAY ¥¨¶°
        .286          ;03 ¨Ï¥Î 80286 «ü¥O¶°

print_number    macro       ;;05 ¦¹¥¨¶°¥Î¨Ó§â DL ùتº¼Æ­È¥H ASCII ¦r¤¸
        add     dl,'0'      ;;06 ¤è¦¡¦L¥X©ó¿Ã¥ú¹õ¡A¦L¥X«e DL À³¸Ó¦b 0
        mov     ah,2        ;;07 ¨ì 9 ¤§¶¡¡C
        int     21h
endm                        ;;09 µ²§ô print_number ¥¨¶°

print   macro   var         ;;11 print ¥¨¶°¶}©l
        local   tmp_var,nxt	
if      (type var) eq 1     ;;13
code    segment para    public  'code'
        mov     dx,offset var
        mov     ah,9
        int     21h
code    ends
        exitm
endif                       ;;20
if      (type var) eq 2     ;;21
data    segment para    public  'data'
tmp_var dt      ?
data    ends
code    segment para    public  'code'
        fild    var
        fbstp   tmp_var
        mov     si,offset tmp_var+2
        mov     dl,[si]
        print_number        ;;30 ©I¥s print_number ¥¨¶°
        mov     cx,2
nxt:    dec     si
        mov     dl,[si]
        shr     dl,4
        print_number
        mov     dl,[si]
        and     dl,0fh
        print_number
        loop    nxt
code    ends
        exitm
endif                           ;;42
endm                            ;;43 print ¥¨¶°µ²§ô

;***************************************
data    segment para    public  'data'
string  db      '­pºâ¡G 2593 + 8888 = $'
sum     dw      2593+8888
data    ends
;***************************************
        initial
        print   string
        print   sum
        exit    0

        end     start

print ¥¨¶°¦bÅÞ¿è¤W¥i¤À¦¨¨â³¡¤À¡A§PÂ_¸ê®Æ§ÎºA¤Î¨Ì¾Ú¸ê®Æ§ÎºA¦p¦ó³B²z³o¨â³¡¥÷¡C´N«eªÌ¦Ó¨¥¡A²Ä 13 ¦æ©M²Ä 21 ¦æ³o¨â¦æ´N¬O§PÂ_¤Þ¼Æ¤§¸ê®Æ§ÎºA¬O¦r¦ê§í©Î¦r²Õ¾ã¼Æ¡F´N«áªÌ¦Ó¨¥¡A°²¦p¬O¦r¦êªº¸Ü¡A²ÕĶ¾¹±N²ÕĶ²Ä 14 ¦æ¨ì²Ä 20 ¦æ¡A°²¦p¬O¦r²Õ¾ã¼Æªº¸Ü¡A²ÕĶ¾¹±N²ÕĶ²Ä 22 ¨ì²Ä 41 ¦æ¡C

¦b MASM 5.0 ¤Î¨ä¥H«áªºª©¥»¡A¤@­Ó¥¨¶°ùØ­±¬O¥i¥H¦A¨Ï¥Î¥t¤@­Ó¥¨¶°¡A¹³³oºØ¡A¥¨¶°¸Ì­±¤S¦³¥¨¶°ªº±¡§ÎºÙ¬°¡y±_ª¬¡z¡A¹³²Ä 30 ¦æ¡B²Ä 35 ¦æ¤Î²Ä 38 ¦æ³£¬O¦b print ¥¨¶°ùئA¨Ï¥Î¤@­Ó¥¨¶°¡A³o¬O¥i¥H³Q¤¹³\ªº¡CMASM ¨Ã¨S¦³­­¨î±_ª¬¥¨¶°ªº¼h¼Æ¡A¥u­n°O¾ÐÅé¤Î°ïÅ|¤£³Q¨Ï¥Î§¹§Y¥i¡C


¨ä¥L±ø¥ó²ÕĶ«ü¥O

IFE °²«ü¥O

MASM ©Ò´£¨Ñªº±ø¥ó²ÕĶ±Ô­z¡A°£¤F IF ¡Ð ELSE ¡Ð ENDIF ¤§¥~¡AÁÙ¦³¦n´X­Ó¡A¥¦­Ì³£¥i¥H°t¦X ELSE ¨Ï¥Î¡A¨Ã¥B¦ü¥G¡y¦¨Âù¦¨¹ï¡z¡C¤p¤ì°¸ªº·N«ä¬O¡AIF ¬O·í±ø¥ó¬°¯u®É¡A²ÕĶ IF ¤§«áªº±Ô­z©Î«ü¥O¡A¦ÓÁÙ¦³¤@­Ó IFE °²«ü¥O»P¤§°t¹ï¡AIFE ¬O«ü·í±ø¥ó¬°°°®É¡A²ÕĶ IFE ¤§«áªº±Ô­z©Î«ü¥O¡C

IF1 »P IF2 °²«ü¥O

IF1¡BIF2 ¬O´ú¸Õ¥Ø«eªº²ÕĶ¨BÆJ¡CMASM ¬O¨â¶¥¬q ( µù¤G )ªº²ÕĶ¾¹¡AIF1 »P IF2 ´N¬O¤À§O¥u¦b²Ä¤@¶¥¬q²ÕĶ©Î²Ä¤G¶¥¬q²ÕĶ¤~²ÕĶªº±ø¥ó²ÕĶ°²«ü¥O¡C¤@¯ë¦Ó¨¥¡A¥¨¶°¥u»Ý²ÕĶ¤@¦¸¡A©Ò¥H¥i¥H¥Î IF1 ¨Ó¼W§Ö²ÕĶ³t«×¡C³o¨â­Ó°²«ü¥Oªº»yªk¬O¡G

IF1
        ±Ô­z1
[ELSE
        ±Ô­z2]
ENDIF

IF2 ¤]¬O¤@¼Ë¡A³£¤£»Ý­n´ú¸Õ±ø¥ó¡A¦]¬°³£¤w¸g¼g¦b IF ¤§«á¤F¡C

IFDEF »P IFNDEF °²«ü¥O

IFDEF °²«ü¥O¬O¥Î¨Ó´ú¸Õ¨ä«áªºÅܼƩμаOµ¥²Å¸¹¬O§_¸g¹L©w¸q¡A¦pªG¬Oªº¸Ü¤~²ÕĶ¡F¦Ó IFNDEF «h¬O¥¼©w¸q¤~²ÕĶ¡C¨ä»yªk¬O¡G

IFDEF   ²Å¸¹¦W
        ±Ô­z1
[ELSE
        ±Ô­z2]
ENDIF

¦ý³o­Ó«ü¥O«o¦³¥O¤H¤£¸Ñªº¦a¤è¡C°²¦p¬Y­Ó²Å¸¹¦b IFDEF ¤§«á¤~©w¸q¡A¦b²Ä¤@¶¥¬q²ÕĶ ( µù¤G ) ®É¡A·íµM¬OÁÙ¥¼©w¸q¡A¦ý²Ä¤G¶¥¬q²ÕĶ®É´N¬O¤w©w¸q¤F¡F¤S¦pªG¸Ó²Å¸¹¦b IFDEF ¤§«e´N¤w¸g©w¸q¤F¡A¤£ºÞ²Ä¤@¶¥¬q©Î²Ä¤G¶¥¬q²ÕĶ³£¬O¤w©w¸q¡A©Ò¥H·Ó³o¼Ë¬Ý¨Ó¡A¦ü¥G³£±o²ÕĶ IFDEF ¤§«áªº±Ô­z¤F¡A³o¼Ë IFDEF¡BIFNDEF °Z¤£¬O®Ú¥»´N²@µL¥Î³B¡H

­ì¨Ó­n¨Ï¥Î IFDEF ©Î IFNDEF ¦³¨â­Ó¤èªk¥i¨Ñ¨Ï¥Î¡A¤@¬O°t¦X«e­±ªº IF1 ©Î IF2 ¨Ï¥Î¡A¥t¤@ºØ¤èªk¬O®Ú¥»´N¤£­n¦b­ì©lµ{¦¡¤¤©w¸q¸Ó²Å¸¹¡Aµ¥¨ì­n¨Ï¥Î®É¡A¦A©ó DOS ©R¥O´£¥Ü¤U¿é¤J MASM ªº°Ñ¼Æ¡y/D¡z¨Ó©w¸q¸ÓÅܼơA¨Ò¦p©³¤U³o­Óµ{¦¡¡ASUM02.ASM¡A¬O­pºâ¥Ñ¤@¶}©l¡A¤½®t¬°¤@ªºµ¥®t¼Æ¦C¤§©M¡A¦Ü©ó³Ì¥½¤@¶µ¬O¤°»ò¡A«h¬O¥Ñ¡y/D¡z°Ñ¼Æ«á­±ªº©w¸q¨Ó¨M©w¡A¦pªG¨S¥H¡y/D¡z°Ñ¼Æ©w¸q³Ì¥½¶µ¡A«h³]¬° 100¡C

last_number     macro   ;;01 ¬O§_©w¸q³Ì«á¤@¼Æ
ifdef   number
n       dw      number  ;;02 ¬O¡A«h¥H¿ï¶µ©w¸q¬°·Ç
else
n       dw      100     ;;03 §_¡A«h¥[¨ì 100
endif
endm

;***************************************
code    segment
        assume  cs:code,ds:code
        org     100h
;---------------------------------------
start:  jmp     short begin
        last_number             ;15 ©w¸q³Ì«á¤@¶µ¤§­È
counter dw      1               ;16 ­p¼Æ¾¹
string  db      "1+2+...+$"     ;17 ¦L¥Xªº¦r¦ê
begin:  sub     bx,bx           ;18 BX ¬°©M
        mov     cx,n            ;19 CX ¬°¶µ¼Æ
next:   add     bx,counter      ;20 ¬Û¥[°j°é
        inc     counter
        loop    next

        mov     dx,offset string
        mov     ah,9
        int     21h
        push    bx              ;27 «O¦s©M
        mov     ax,n            ;28 ¦L¥X³Ì«á¤@¶µ
        call    display_ax
        mov     dl,'='          ;30 ¦L¥Xµ¥¸¹
        mov     ah,2
        int     21h

        pop     ax              ;34 ¦L¥X©M
        call    display_ax
        mov     ax,4c00h        ;36 µ²§ô
        int     21h
;---------------------------------------
;39 AL ¤§¼Æ­È¬°¤Q¶i¦ì¤§­Ó¦ì¼Æ¡A¦¹°Æµ{¦¡±N¥[¤W 30h
;40 ¨Ï¤§¦¨¬° ASCII ¦r¤¸¡A¦L¥X¿Ã¹õ¤W
display_decimal proc    near
        cmp     n_zero,0        ;42 Àˬd
        jnz     dply
        or      al,al           ;44 Àˬd³Ì°ª¦ì¼Æ¬O§_¬°¹s
        jz      exit            ;45 ­Y¬O¡A«h¤£¦L¥X¨Ó
        or      n_zero,1        ;46 ­Y§_¡A«h¦L¥X¨Ó¨Ã¥B¨Ï n_zero ³]¬°¤@
dply:   push    ax
        push    dx
        mov     dl,al
        add     dl,'0'
        mov     ah,2
        int     21h
        pop     dx
        pop     ax
exit:   ret
n_zero  db      0               ;56 n_zero ¬°¤@­ÓºX¼Ð¡A­Y¬O³Ì°ª¦ì¼Æ¬°
display_decimal endp            ;57 ¹s«h¬°¤@¡A¨Ì¦¸»¼´îª½¨ì³Ì°ª¦ì¼Æ¤£¬°
;-------------------------------;58 ¹s®É¡An_zero ¤~³]¬°¤@
;59 §â AX ¤ºªº¤Q¤»¶i¦ì¼Æ­È¡A¥H¤Q¶i¦ì¤è¦¡¦L¦b¿Ã¹õ¤W
display_ax      proc    near
        sub     dx,dx
        mov     bx,10000
        mov     n_zero,dl
        div     bx
        call    display_decimal
        mov     ax,dx
        mov     bx,1000
        sub     dx,dx
        div     bx
        call    display_decimal
        mov     ax,dx
        mov     bl,100
        div     bl
        mov     dl,al
        call    display_decimal
        mov     al,ah
        cbw
        mov     bl,10
        div     bl
        mov     dl,al
        call    display_decimal
        mov     dl,ah
        add     dl,'0'
        mov     ah,2
        int     21h
        ret
display_ax      endp
;---------------------------------------
code    ends
;***************************************
        end     start

²ÕĶ SUM02.ASM ¥i¥H¹³¥H«e¤@¼Ëª½±µ©ó DOS ´£¥Ü¸¹¤U¡yMASM SUM02;¡z§Y¥i¡A³o¼Ëªº¸Ü°õ¦æµ²ªG·|¬O¡y1+2+...+100=5050¡z¡C¦ý±z¤]¥i¥H«ü©w¥½¶µ¬°¨ä¥L¼Æ¡A°õ¦æµ²ªG·|¤£¦P³á¡C¨Ò¦p¡G

H:\HomePage\SOURCE>masm /Dnumber=200 sum02; [Enter]
Microsoft (R) Macro Assembler Version 5.00
Copyright (C) Microsoft Corp 1981-1985, 1987.  All rights reserved.


  51502 + 418690 Bytes symbol space free

      0 Warning Errors
      0 Severe  Errors

H:\HomePage\SOURCE>link sum02; [Enter]

Microsoft (R) Personal Computer Linker  Version 2.40
Copyright (C) Microsoft Corp 1983, 1984, 1985.  All rights reserved.

Warning: no stack segment

H:\HomePage\SOURCE>exe2bin sum02 sum02.com [Enter]

H:\HomePage\SOURCE>sum02 [Enter]
1+2+...+200=20100
H:\HomePage\SOURCE>

ª`·N¨ì MASM ²ÕĶ¾¹¥Õ¦â³¡¤Àªº°Ñ¼Æ¿ï¶µ¡A§ïÅܨä­È´N·|³y¥X¤£¦Pªº°õ¦æÀɨӡC

IFB »P IFNB °²«ü¥O

³o¨â­Ó°²«ü¥Oªº»yªk¬O¡G

IFB     <¤Þ¼Æ>
IFNB    <¤Þ¼Æ>

IFB ¬O¥Î¨Ó´ú¸Õ¬O§_¦³¤Þ¼Æ¶Ç¨ì¥¨¶°¤¤¡A¦pªG¨S¦³¤Þ¼Æªº¸Ü ( B ¬O«üªÅ¥Õ¡Ablank¡Aªº·N«ä¡A§Y¨S¦³¤Þ¼Æ )¡A«h²ÕĶ¡C¦Ó IFNB «h¬O¦³¤Þ¼Æ ( NB ¬O«ü¤£ªÅ¥Õ¡A§Y¦³¤Þ¼Æ )¡A«h²ÕĶ¡C³o¼Ë»¡¡A±z¥i¯àÁÙ¬O¤£À´¡A«Ý¤p¤ì°¸Á|­Ó¨Ò¤l§a¡A©³¤U³o­Ó¥¨¶°¡Apush_reg¡A¥i¥H§â¦n´X­Ó¼È¦s¾¹±À¤J°ïÅ|¡Aª½¨ì¨S¦³«ü©wªº¼È¦s¾¹¥i±À¤J¡A¦Ó±À¤J°ïÅ|ªº¼È¦s¾¹¼Æ¥Ø¥i¥H¤£©T©w¥B¥i¥H¬O¥ô·N¤Q¤»¦ì¤¸ªº¼È¦s¾¹¡C

push_reg        MACRO   reg_string
        IRP     reg,<reg_string>
IFNB    <reg>
        push    reg
ENDIF
        ENDM
        ENDM

¨Ï¥Î³o­Ó¥¨¶°®É¡A¿é¤J¤§°Ñ¼Æ¥²¶·¥H¨¤¬A¸¹¥]³ò°_¨Ó¡A¨Ò¦p¦bµ{¦¡¤¤¥Î

        push_reg        <ax,bx,si>

¨Ó¨Ï¥Î¦¹¥¨¶°¡A¦]¬°¨¤¬A¸¹ªºÃö«Y¡AMASM ·|§â¿é¤Jªº ax,bx,si ·í°µ¤@­Ó¦r¦ê¶Ç¤J push_reg ¥¨¶°¡A¥¨¶°ªº¥D­n¤º®e¬O¤@­Ó¤£©w­«½Æ°Ï¶ô¡A¸Ó¤£©w­«½Æ°Ï¶ôªº¤Þ¼Æ´N¬O­è­è¶Ç¤J¥¨¶°ªº¦r¦ê¡A¦Ó«á¨Ì¦¸¨ú¥X¤@­Ó¼È¦s¾¹±À¤J°ïÅ|¡Aª½¨ì¼È¦s¾¹³£³Q´£¥X¬°¤î¡C¦p¦óÀˬd¼È¦s¾¹¥þ³£³Q´£¥X¤F©O¡H´N¬O¥Î IFNB ¨ÓÀˬd¡A·íÁÙ¦³¼È¦s¾¹¥¼³Q´£¥X®É¡AIFNB ¬°¯u¡A²ÕĶ push reg ³o¤@¦æ¡A­Y¬°°°®É¡A«h²ÕĶ exitm¡A´N¸õ¥X¥¨¶°¤F¡C

IFIDN ©M IFDIF °²«ü¥O

¨ä»yªk¬O

IFIDN   <¤Þ¼Æ1>,<¤Þ¼Æ2>
IFDIF   <¤Þ¼Æ1>,<¤Þ¼Æ2>

IFIDN ¬O¥Î¨Ó¤ñ¸û¤Þ¼Æ1 ©M¤Þ¼Æ2 ¬O§_¬Û¦P¡AIDN ¬O identical ¤§·N¡A°²¦p¬Û¦P«h²ÕĶ¡CIFDIF «h¬O¥Î¨Ó¤ñ¸û¤Þ¼Æ1 ©M¤Þ¼Æ2 ¬O§_¤£¦P¡ADIF ¬O different ¤§·N¡A°²¦p¤£¦P«h²ÕĶ¡C³o¨Ç¤Þ¼Æ³£¥²¶·¥Î¨¤¬A¸¹¥]¦í¡A¨Ã¥H¡y,¡z¹j¶}¡C

IFIDN ©M IFDIF ¤ñ¸û®É¡A·|¦Ò¼{­^¤å¦r¥Àªº¤j¤p¼g¡A·N«ä¬O¡AAX ©M ax ³Qµø¬°¤£¦Pªº¦r¦ê¡F¦pªG­n©¿²¤¤j¤p¼g¡A«h¥i¥H¥Î IFIDNI ©M IFDIDI¡A³o³Ì«áªº I ¦r¥Àªí¥Ü©¿²¤¤§·N¡C


½d¨Ò¡G³q¥Îªº±À¤J°ïÅ|¥¨¶°

8086 «ü¥Oªº PUSH ¥u¯à§â¤Q¤»¦ì¤¸ªº¼È¦s¾¹©Î¤Q¤»¦ì¤¸ÅܼƱÀ¤J°ïÅ|¡A¤£¯à§â¤Q¤»¦ì¤¸¥ß§Y­È (±`¼Æ) ©Î¤K¦ì¤¸ªº¼È¦s¾¹±À¤J°ïÅ|¡A¦Ó©³¤U³o­Ó¥¨¶°½d¨Ò¡Apush_op¡A¤]¯à¨Ï¥ß§Y­È©Î¤K¦ì¤¸ªº¼È¦s¾¹±À¤J°ïÅ|¡C©³¤U¬O push_op ­ì©l½X¡G

        page    ,132            ;01

push_op MACRO   arg             ;;03

reg16   =       0               ;;05
reg08   =       0               ;;06
addr    =       0               ;;07

;;09 Àˬd¿é¤J°Ñ¼Æ¬O§_¬° 16 ¦ì¤¸ªº¼È¦s¾¹
IRP     reg,<AX,BX,CX,DX,CS,DS,ES,SS,SI,DI,BP,SP,ax,bx,cx,dx,cs,ds,es,ss,si,di,bp,sp>
  IFIDN <reg>,<arg>
        push    arg             ;;12 ¦pªG¬Ûµ¥ªº¸Ü¡A±À¤J°ïÅ|
        reg16   =       0ffffh  ;;13 ¼Æ©wµêÀÀÅܼƬ°¯u
        exitm                   ;;14 ¸õ¥X IRP °Ï¶ô
  ENDIF
ENDM
IF      reg16                   ;;17 ­Y reg16 ¬°¯u
        exitm                   ;;18 «h¸õ¥X push_op ¥¨¶°
ENDIF

;;21 Àˬd¿é¤J°Ñ¼Æ¬O§_¬° 16 ¦ì¤¸ªº¼È¦s¾¹
IRP     reg,<aX,bX,cX,dX,cS,dS,eS,sS,sI,dI,bP,sP,Ax,Bx,Cx,Dx,Cs,Ds,Es,Ss,Si,Di,Bp,Sp>
  IFIDN <reg>,<arg>
        push    arg
        reg16   =       0ffffh
        exitm
  ENDIF
ENDM
IF      reg16
        exitm
ENDIF

;;33 Àˬd¿é¤J°Ñ¼Æ¬O§_¬° 8 ¦ì¤¸ªº¼È¦s¾¹
IRP     reg,<al,bl,cl,dl,ah,bh,ch,dh,AH,BH,CH,DH,AL,BL,CL,DL>
  IFIDN <reg>,<arg>
        reg08   =       0ffffh
        exitm
  ENDIF
ENDM
IF      reg08
  IRPC  char,arg                ;;41 ¨ú±o¼È¦s¾¹¦Wªº²Ä¤@­Ó¦r¥À
        push    char&&x         ;;42 ±À¤J°ïÅ|
        exitm                   ;;43 ¸õ¥X IRPC °Ï¶ô
  ENDM
        exitm                   ;;45 ¸õ¥X push_op ¥¨¶°
ENDIF

;;48 Àˬd¿é¤J°Ñ¼Æ¬O§_¬° 8 ¦ì¤¸ªº¼È¦s¾¹
IRP     reg,<Al,Bl,Cl,Dl,Ah,Bh,Ch,Dh,aL,bL,cL,dL,aH,bH,cH,dH>
  IFIDN <reg>,<arg>
        reg08   =       0ffffh
  ENDIF
ENDM
IF      reg08
  IRPC  char,arg
        push    char&&x
        exitm
  ENDM
        exitm
ENDIF

;;62 Àˬd¿é¤J°Ñ¼Æ¬O§_¬°§t¦³¼È¦s¾¹¶¡±µ©w§}¼Ò¦¡¡A§Y [BX]¡B[SI]¡K¡Kµ¥µ¥
IRPC    char,arg
  IF    ('&char' eq '[')
        addr=0ffffh
        exitm
  ENDIF
ENDM
IF      addr
        push    arg
        exitm
ENDIF

arg_size=((type arg)+1)/2       ;;74 ¿é¤J°Ñ¼Æ¤§ªø«×
arg_type=(.type arg) and 3      ;;75 ¿é¤J°Ñ¼Æ¤§«¬ºA

;;77 Àˬd¿é¤J°Ñ¼Æ¬O§_¬°ÅܼÆ
IF      arg_type eq 2
  arg_offset  =0
  REPT  arg_size
        arg_address=word ptr arg+arg_offset
        push    arg_address
        arg_offset=arg_offset+2
  ENDM
        exitm
ENDIF

;;88 Àˬd¿é¤J°Ñ¼Æ¬O§_¬°¼Ð°O
IF    arg_type eq 1
        push    bp
        mov     bp,sp
        push    ax
        mov     ax,offset arg
        xchg    ax,[bp]
        mov     bp,ax
        pop     ax
      exitm
;;98 ­Y¤£¬O¼È¦s¾¹¡B©w§}¼Ò¦¡¡BÅܼơB¼Ð°Oªº¸Ü¡AÀ³¬°¥ß§Y­È
ELSE
        push    bp
        mov     bp,sp
        push    ax
        mov     ax,arg
        xchg    ax,[bp]
        mov     bp,ax
        pop     ax
ENDIF

ENDM

³o­Ó¥¨¶°µ²ºc«Ü©úÅã¡A¥ýÀˬd­n±À¤J°ïÅ|ªº°Ñ¼Æ¬O§_¬° 16 ¦ì¤¸¼È¦s¾¹( ²Ä 9 ¦æ¨ì²Ä 31 ¦æ )¡A¦pªG¤£¬O¦AÀˬd¬O§_¬° 8 ¦ì¤¸¼È¦s¾¹ ( ²Ä 33 ¦æ¨ì²Ä 60 ¦æ )¡A¦pªG¤£¬O¼È¦s¾¹ªº¸Ü¡A¦AÀˬd¬O§_¬°¼È¦s¾¹¶¡±µ©w§} ( ²Ä 62 ¦æ¨ì²Ä 72 ¦æ )¡A¦pªG¤£¬O¥H¤W³o´XºØªº¸Ü¡A¦AÀˬd¬O§_±À¤JÅܼƨì°ïÅ| ( ²Ä 77 ¦æ¨ì²Ä 87 ¦æ )¡A±µ¤U¨ÓÀˬd¬O§_±À¤J¼Ð°O¨ì°ïÅ| ( ²Ä 88 ¦æ¨ì²Ä 97 ¦æ )¡A°²¦p³£¤£¬O¤W­z±¡§Îªº¸Ü¡A´N¬O±À¤J¥ß§Y­È¨ì°ïÅ|¤F ( ²Ä 98 ¦æ¨ì²Ä 107 ¦æ )¡C

Àˬd¬O§_¬°¼È¦s¾¹ªº¤èªk¬O¥Î¤£©w­«½Æ°Ï¶ô ( IRP ) ¨Ó«ü©w­n¤ñ¸ûªº½d³ò¡A¬G¤Þ¼Æ¦C ( §Y²Ä 10 ¦æ¨¤¬A¸¹¤ºªº¤Þ¼Æ ) ¥]§t©Ò¦³ 16 ¦ì¤¸¼È¦s¾¹¦WºÙ¡A¦ý¬O¦]¬°°Ñ¼Æ»P¤Þ¼Æ³£³Qµø¬°¦r¦ê¡A©Ò¥H¤j¤p¼g¬O¦³®t§Oªº¡A¥²¶·¦b¤Þ¼Æ¦CùØ¥]§t¤£¦Pªº¤j¤p¼g±Æ¦C¤è¦¡¡C«ü©w¦n¤ñ¸û½d³ò«á¡A¦A¥Î IFIDN ¤ñ¸û¿é¤J°Ñ¼Æ¬O§_¬°¤Þ¼Æ¦C¤¤ªº¤@­Ó¡A°²¦p¬O 16 ¦ì¤¸¼È¦s¾¹ªº¸Ü¡A«hª½±µ§â¸Ó°Ñ¼Æ±À¤J°ïÅ|§Y¥i¡A¨Ã³]©w¤@­ÓµêÀÀÅܼơAreg16¡A¬° 0ffffh¡A0ffffh ªí¥Ü¯uªº·N«ä ( ²Ä 12¡B13 ¦æ )¡CµM«á¦A¸õ¥X push_op °ïÅ|¡C

¤p¤ì°¸¦A§â IRP ­«½Æ°Ï¶ôªº°õ¦æ¤è¦¡»¡©ú¤@¹M¡C²Ä 10 ¦æ¨ì²Ä 16 ¦æµ{¦¡½X¬°¡G

IRP     reg,<AX,BX,CX,DX,CS,DS,ES,SS,SI,DI,BP,SP,ax,bx,cx,dx,cs,ds,es,ss,si,di,bp,sp>
  IFIDN <reg>,<arg>
        push    arg             ;;12 ¦pªG¬Ûµ¥ªº¸Ü¡A±À¤J°ïÅ|
        reg16   =       0ffffh  ;;13 ¼Æ©wµêÀÀÅܼƬ°¯u
        exitm                   ;;14 ¸õ¥X IRP °Ï¶ô
  ENDIF
ENDM
IF      reg16                   ;;17 ­Y reg16 ¬°¯u
        exitm                   ;;18 «h¸õ¥X push_op ¥¨¶°
ENDIF

ªí¥Ü¦b²Ä 10 ¦æ¨ì²Ä 16 ¦æµ{¦¡½X·|­«½Æ²ÕĶ¡C²Ä¤@¦¸®É¡Areg ·|¥H AX ¥N¤J²ÕĶ¡A²Ä 11 ¦æ¬O¤ñ¸û arg »P reg ³o¨â¦r¦ê¬O§_¬Ûµ¥¡A¦pªG¬Ûµ¥«h²ÕĶ²Ä 12 ¦æ¨ì²Ä 14 ¦æ¤§¶¡ªºµ{¦¡½X¡A¤£¬Ûµ¥«hµ²§ô IFIDN¡AµM«á¹J¨ì ENDM¡A¬G­«½Æ²Ä¤G¦¸¡A¨Ï reg ¥H BX ¥N¤J²ÕĶ¡K¡K¤@ª½¨ì sp ©Ò¦³¤Þ¼Æµ²§ô¡C

²Ä 14 ¦æ¡A¬O¦]¬°°²¦p¤w¸g§ä¨ì¬Û²Å¦Xªº¼È¦s¾¹¡A´N¨S¥²­n¦A¤ñ¸û¤F¡A³o¼Ë¥i¥H¥[§Ö²ÕĶ³t«×¡C( ÁöµM¤]¨S§Ö¦h¤Ö¡C) ²Ä 17 ¦æ¨ì²Ä 19 ¦æ¡A¤]¬O³o¼Ëªº¹D²z¡A¬J¤w§ä¨ì¬O§â¼È¦s¾¹±À¤J°ïÅ|¡A¤]´N¨S¥²­n²ÕĶ¥H¤Uªºµ{¦¡¤F¡A¬Gª½±µ¸õ¥X push_op °ïÅ|¡C

±z¥i¯à·|°Ý¡A²Ä 14 ¦æ´N¤w¦³¤F exitm¡A¬°¦ó²Ä 18 ¦æÁÙ­n¦³­Ó exitm ©O¡H³o¬O¦]¬° RPT¡BIRP¡BIRPC ³o¤T­Ó­«½Æ°Ï¶ô¡AÃþ¦ü¥¨¶°µ²ºc¡A­Y­n¦b¤¤¶¡°±¤î²ÕĶ³£¥i¥H¥Î exitm ¨Ó¸õ¥X¥¨¶°©Î°Ï¶ô¡A©Ò¥H²Ä 14 ¦æ¬O¸õ¥X IRP °Ï¶ô¡A²Ä 17 ¦æ¬O¸õ¥X push_op ¥¨¶°¡C

²Ä 33 ¦æ¨ì²Ä 61 ¦æ¡A¬OÀˬd°Ñ¼Æ¬O§_¬° 8 ¦ì¤¸¼È¦s¾¹¡A¤èªk©M¤W­z´X¥G¬Û¦P¡A®t§O¦b©ó 8 ¦ì¤¸¼È¦s¾¹ ( ¨Ò¦p ah ) µLªk±À¤J°ïÅ|¥²¶·§ï¦¨ 16 ¦ì¤¸¼È¦s¾¹ ( ¨Ò¦p ax )¡C©Ò¥H²Ä 41 ¦æ¨ì²Ä 44 ¦æ¦h¤F­Ó IRPC ­«½Æ°Ï¶ô¡A¦¹­«½Æ°Ï¶ô¬O¬°¤F¨ú±o¼È¦s¾¹ªº²Ä¤@­Ó¦r¥À¡A·í¨ú±o²Ä¤@­Ó¦r¥À´N§â¸Ó¦r¥À¥[¤W¡yx¡z¦A±À¤J°ïÅ|¡AµM«á¸õ¥X IRPC °Ï¶ô¤Î push_op ¥¨¶°¡C¦Ü©ó¸Ó IRPC ­«½Æ°Ï¶ôªº¹B§@¤è¦¡¦p¤U¡G¸Ó IRPC °Ï¶ô­«½Æ¦¸¼Æ¥u¦³¨â¦¸¡A¤À§O¥H 8 ¦ì¤¸¼È¦s¾¹¦WºÙªº¨â­Ó¦r¥À¥N¤J²ÕĶ¡A·í²Ä¤@¦¸®É§Y¥H 8 ¦ì¤¸¼È¦s¾¹¦WºÙªº²Ä¤@­Ó¦r¥À¥N¤J¡AµM«á¥[¤W¡yx¡z¦A±À¤J°ïÅ|¡AµM«á¥ß¨è¸õ¥X IRPC °Ï¶ô¡A¬G¨Æ¹ê¤W³o­Ó­«½Æ°Ï¶ô¥u²ÕĶ¤@¦¸¦Ó¤w¡C

²Ä 42 ¦æªº¡y&&x¡z¬°¦ó­n¦³¨â­Ó¡y&¡z©O¡H³o¬O¦]¬°®Ú¾Ú MASM ¤â¥U¤W»¡¨C¼h°Ï¶ô­n¨Ï¥Î¡y&¡z¡A¬G²Ä¤G¼h­n¥Î¨â­Ó¡y&¡z¡C

²Ä 62 ¦æ¨ì²Ä 73 ¦æ¬O¥Î¨ÓÀˬd±À¤J°ïÅ|ªº°Ñ¼Æ¬O§_¬°¼È¦s¾¹¶¡±µ©w§}¡A¼È¦s¾¹¶¡±µ©w§}¼Ò¦¡¬O¹³©³¤Uªº¼Ë¤l¡G

mov     ax,[bx]
push    [si]
sub     ax,[bx+200h]

Æ[¹î¥H¤W´X­Ó¨Ò¤l¡A±z·|µo²{¡A³oºØ©w§}¼Ò¦¡§t¦³¨â­Ó¤¤¬A¸¹¡A¦]¦¹ÀËÅç¤èªk´N¬O¥H IRPC Àˬd°Ñ¼Æ¤¤¬O§_¦³¡y[¡z( ²Ä 64 ¦æ¨ì²Ä 67 ¦æªº IF ±ø¥ó²ÕĶ )¡A°²¦p¦³ªº¸Ü¡A·|¨ÏµêÀÀÅܼơAaddr¡A³]¬°¯u¡CµM«á±µ¤U¨Óªº´Nª½±µ¨Ï¸Ó°Ñ¼Æ±À¤J°ïÅ|¡A¦]¬° PUSH «ü¥O´N¥i¥Hª½±µ±À¤J¼È¦s¾¹¶¡±µ©w§}¼Ò¦¡¡C

±µ¤U¨Ó´N¥u³Ñ¤UÅܼơB¼Ð°O»P¥ß§Y­È¥¼³B²z¡A­n°Ï§O«e¨âªÌ¥i¥Î MASM ©Ò´£¨Ñªº .TYPE ¹Bºâ¤l¡C

.TYPE ¹Bºâ¤l

.TYPE ©M TYPE ¤£¦P¡ATYPE ¤w¦bµy«e»¡©ú¹L¤F¡A³o¨à¤p¤ì°¸¥u»¡©ú .TYPE ªº¥Îªk¡G( .TYPE «e¦³­Ó¤p¼ÆÂI¡A¤£¥i¬Ù²¤ )

.TYPE   ¹Bºâ¦¡

.TYPE ¹Bºâ·|®Ú¾Ú¹Bºâ¦¡¶Ç¦^¤@­Ó¦ì¤¸²Õ¤j¤pªº¸ê®Æ¡A°²¦p¹Bºâ¦¡¤£¦Xªk¡A«h¶Ç¦^¹s¡F¦pªG¦Xªk¡A©Ò¶Ç¦^ªº¦ì¤¸²Õ¥u¦³²Ä 0¡B1¡B5¡B7 ¦ì¤¸¦³·N¸q¡A¨ä¥L¦ì¤¸§¡¬°¹s¡A³o¥|­Ó¦ì¤¸©Ò¥Nªíªº·N¸q¦p¤Uªí¡G

¦ì¤¸  ¸Ó¦ì¤¸¬°¹s      ¸Ó¦ì¤¸¬°¤@        »¡©ú
------------------------------------------------------------
 0    »Pµ{¦¡µLÃö      »Pµ{¦¡¦³Ãö    »Pµ{¦¡¦³Ãö¬O«ü¼Ð°O¡K¡Kµ¥
 1    »P¸ê®ÆµLÃö      »P¸ê®Æ¦³Ãö    »P¸ê®Æ¦³Ãö¬O«üÅܼơK¡Kµ¥
 5    ¥¼©w¸q          ¤w©w¸q
 7    °Ï°ì©Ê©Î¤½¦@©Ê  ¥~³¡ªº

·í²Ä 75 ¦æªºµêÀÀÅܼơAarg_type¡A¬° 2 ®É¡Aªí¥Ü¬°ÅܼơA¥Ñ²Ä 79 ¦æ¨ì²Ä 85 ¦æªºµ{¦¡³B²z¡F­Y arg_type ¬° 1 ®É¡Aªí¥Ü¬°¼Ð°O¡A¥Ñ²Ä 90 ¨ì²Ä 97 ¦æªºµ{¦¡³B²z¡F­Y¤£¬° 1 ¤]¤£¬° 2¡Aªí¥Ü¬°¥ß§Y­È¡A¥Ñ²Ä 100 ¦æ¨ì²Ä 106 ¦æªºµ{¦¡³B²z¡C

³B²zÅܼƮɡA¤£¥u­n¯à³B²z¦r²ÕÅܼơA¤]¬°¤F­n¯à³B²zÂù¦r²Õ¡B¥|¦r²Õµ¥«¬ºAªºÅܼơA©©Ò¥H¥ý¨ú±oÅܼƪø«×¡A¦A°£¥H 2¡A´N¯à¨D¥X±À¤J°ïÅ|ªº¦¸¼Æ¡A¦Ó¨C¦¸±À¤J°ïÅ|®É¦ì§}³£±o¼W¥[ 2¡A³o¨Ç²Ó¸`³£¥i¦b²Ä 79 ¦æ¨ì²Ä 85 ¦æ IF¡ÐENDIF ¤§¶¡ªºµ{¦¡³B²z¡C

³B²z¥ß§Y­Èªº¤è¦¡«Ü¯S§O¡A¤p¤ì°¸¬°¤F¥u§â¥ß§Y­È±À¤J°ïÅ|¡A¨Ã¥B¨Ï©Ò¦³¼È¦s¾¹³£¤£§ïÅÜ¡A¡A·íµM¥u¦³ SP ¼È¦s¾¹·|¦]¬°±À¤J¤F¤@­Ó¥ß§Y­È¦Ó´î¤Ö¤G¡C¬°¤F¹F¨ì¤W­±ªº¥Øªº¡A¼g¤F²Ä 100 ¦æ¨ì²Ä 106 ¦æªºµ{¦¡¡AÁöµM¦³ÂI¨à½ÆÂø¡A¦ýÀ³¸Ó¤£¤ÓÃøÀ´¡C³B²z°ïÅ|¨ä¹ê´N¬O³o¼Ë¡C¦Ó³B²z¼Ð°Oªº¤èªk©M¥ß§Y­È¬Û¦ü¡A¦]¬°¼Ð°O¨ä¹ê´N¬O¤@­Ó¥ß§Y­È¡A¥Lªí¥Üµ{¦¡¦ì§}¡C


·P·Q

¤p¤ì°¸·Q¡A²Ä 26¡B27 ¨â³¹ªº¤º®e¡A¥¨¶°»P±ø¥ó²ÕĶ¡AÀ³¸Ó¥i¥H¨Ï±z¹ï¥¨¶°¥u¯à³æ³æ´î¤Ö¥´¦rªº¨èªO¬M¹³¦³©Ò§ïÅÜ¡C°²¦p±z¯àµo´§¤@¨Ç·Q¹³¤O¡A¥¨¶°»P±ø¥ó²ÕĶ¼g¥X¨Óªº²Õ¦X»y¨¥µ{¦¡¥i¤@ÂI³£¤£¹³²Õ¦X»y¨¥©O¡I


µù¤@¡G

¥j¦­¥H«e¡A¼gµ{¦¡¡A¤×¨ä¬O§Q¥Î BASIC ¼¶¼gªºµ{¦¡¡A±`±`¦]¬°±ø¥ó¸õÅD¡]IF¡ÐELSE¡ÐTHEN¡^§YµL±ø¥ó¸õÅD¡]GOTO¡^¨Ï±o­ì©lµ{¦¡³Q¤Á³Î¦¨¤äÂ÷¯}¸H¡A«Ü¤£©öºûÅ@¡C¦]¦¹«á¨Ó¦³³\¦hµ{¦¡³]­p®v¡A¤£¦AÀݥΠGOTO «ü¥O¡A¹J¨ì±ø¥ó¸õÅD®É¡A¨Ï±ø¥ó¬°¯u¨à­n°õ¦æªº«ü¥O¥]§t¦b¤@­Ó°Ï¶ô¤¤¡A¤£¥Î°õ¦æªº«ü¥O¥]§t¦b¥t¤@­Ó°Ï¶ô¤¤¡A¨Ã¤j¶q¥Î°Æµ{¦¡¡A³o¼Ë´N¨Ï±o­ì©lµ{¦¡¸û©öºûÅ@¡CPASCAL¡BC¡BC++ ³o¨Ç»y¨¥´N¬OÄݩ󵲺c¤Æªº»y¨¥¡C


µù¤G¡G

MASM ²ÕĶ­ì©lÀɮɡA¬O¤À¨â¦¸²ÕĶªº ( two pass )¡A­n³o»ò°µªº­ì¦]¬O³o¼Ëªº¡A½Ð¬Ý¥H¤U»¡©ú¡C·í MASM ¶}©l²ÕĶ®É¥ýŪ¤J­ì©lÀɮסA¥Ñ¤W¦Ó¤U²ÕĶ¡A¦pªG¹J¨ì©|¥¼©w¸qªº¼Ð°O¡BÅܼƵ¥¡AMASM ·|¥ý°²³]¡A¦Ó¹w¯d¤U¤@¨ÇªÅ¶¡µ¹³o¨Ç¥¼©w¸qªº¸ê®Æ¡A·íŪ¨ì­ì©lµ{¦¡«á­±®É¡AMASM µo²{³o¨Ç¥¼©w¸qªº¼Ð°O¡BÅܼƦb«á­±©w¸q¡A©ó¬O·í²Ä¤G¦¸²ÕĶ®É¡A¦A§â³o¨Ç¥ý«e°²³]ªº¦ì§}©Îªø«×­×§ï¦¨¥¿½Tªº¼Æ­È¡C

·íµM¦pªG¥ý«e°²³]ªº¥¿½T´N¨S¦³°ÝÃD¡A¦pªG°²³]¿ù»~ªº¸Ü¡A¥i¥H¤À¬°¨âºØ±¡§Î¡C²Ä¤@ºØ±¡§Î¬O MASM ©Ò°²³]ªºªÅ¶¡©Îªø«×¤ñ©Ò©w¸qªº¨Ó±o¤j©Î¦h¡A¨º²Ä¤G¶¥¬q²ÕĶ®É¡AMASM ·|§â¦h¾lªºªÅ¶¡¥H NOP «ü¥O¨ú¥N¡C°²¦p©Ò°²³]ªºªÅ¶¡©Îªø«×¤ñ©Ò©w¸qªº¨Ó±o¤p©Î¤Öªº¸Ü¡A¨º´N·|²£¥Í¿ù»~¡A³o´N¬O©Ò¿×ªº¡y¬Û¦ì¿ù»~¡z(Phase error between passes)¡C

NOP «ü¥O

³o¬O¤@­Ó 8086 «ü¥O¶°ªº¨ä¤¤¤@­Ó«ü¥O¡A¥¦ªº¥\¥Î¥u¬OÅý CPU ªÅÂà¤@­Ó®É¯ß¡A¨Ã¤£°µ¥ô¦ó¨Æ¡C


¦^¨ì­º­¶¡A ¨ì²Ä¤G¤Q¤»³¹¡A ¨ì²Ä¤G¤Q¤K³¹