±ê³ÌÐò.OBJÁ¬½ÓÉú³ÉÖ´ÐгÌÐò.EXE)¡¢ÔËÐÐ(ÔÚDOS״̬Ï£¬Ö±½ÓÔËÐÐÖ´ÐгÌÐò)¡¢µ÷ÊÔ(ÔËÓõ÷ÊÔ³ÌÐòDEBUG.EXE½«Ö´ÐгÌÐòÌøÈëµ÷ÊÔ½çÃæ×´Ì¬£¬²¢½øÐжϵãÉèÖõ÷ÊÔÔËÐлòµ¥²½µ÷ÊÔÔËÐвÙ×÷)»ã±àÓïÑÔÔ´³ÌÐòµÄ¹ý³ÌºÍ²½Öè¡£P94
3.ʲôÊÇαָÁî(·¢Ë͸ø»ã±à³ÌÐòµÄÃüÁî)£¿³ÌÐòÖо³£Ê¹ÓõÄαָÁîÓÐÄÄЩ(Êý¾Ý¶¨Òå¡¢·ûºÅ¶¨Òå¡¢¶Î¶¨Òå¡¢¹ý³Ì¶¨Òå¡¢½á¹¹¶¨Ò塢ģ¿é¶¨ÒåÓëÁ¬½Ó¡¢³ÌÐò¼ÆÊýÆ÷$ºÍÆðµã¶¨ÒåORG)£¿¼òÊöÆäÖ÷Òª¹¦ÄÜ(Êý¾Ý¶¨ÒåΪ±äÁ¿¼°ÆäÀàÐÍ·ÖÅä´æ´¢µ¥Ôª£¬²¢¸³Óè³õÖµ£»·ûºÏ¶¨Òå¸øÒ»¸ö·ûºÅÖØÐÂÃüÃû£»¶Î¶¨ÒåÖ¸¶¨Âß¼¶ÎµÄÃû³Æ¡¢·¶Î§¡¢¶ÏµÄ¶¨Î»ÀàÐÍ¡¢×éºÏÀàÐͺÍÀà±ð£»¹ý³Ì¶¨ÒåΪ³ÌÐò¶Î¶¨Òå³É¹ý³Ì£¬²¢¸³Óè¹ý³ÌÃû×Ö£¬ÒÔ±ãÓÃCALLÖ¸Áîµ÷Ó㻽ṹ¶¨ÒåÓÃÓÚÏ໥¹ØÁªµÄÊý¾Ý¶¨Ò壻ģ¿é¶¨ÒåÓëÁ¬½ÓÓÃNAMEΪԴ³ÌÐò»ã±àºóµÄÄ¿±ê³ÌÐòÖ¸¶¨Ä£¿éÃû£¬ÒÔ±ãÁ¬½Ó¸ÃÄ¿±êÄ£¿é£¬²¢Éú³ÉÖ´ÐгÌÐòÎļþ£»$ÔÚ»ã±à¹ý³ÌÖУ¬ÓÃÓÚ´æ´¢µ¥Ôª·ÖÅ伯ÊýÆ÷£¬¸Ã¼ÆÊýÆ÷¿ÉÔÚÖ¸Áî²Ù×÷Êý±í´ïʽÖÐÒýÓã»ORGΪÊý¾Ý±äÁ¿ºÍ³ÌÐò¶ÎÖ¸¶¨ÆðʼλÖá£)£¿P87~P93
4.ʲôÊǺêÖ¸Áî(´ú±íij¹¦ÄܵÄÒ»¶ÎÔ´³ÌÐò)£¿ºêÖ¸ÁîÔÚ³ÌÐòÖÐÈçºÎ±»µ÷ÓÃ(ÔÚÔ´³ÌÐòÖУ¬Í¨¹ýºêÃû×Ö(¼´ºêÖ¸ÁîÃû)½øÐе÷ÓÃ)£¿P107
5.×Ó³ÌÐòÓëºêÖ¸ÁîÔÚ³ÌÐòµÄʹÓÃÖÐÓкι²ÐÔ(ºêºÍ×Ó³ÌÐò¶¼¿ÉÓÃÀ´¼ò»¯³ÌÐò£¬²¢¿Éʹ³ÌÐò¶à´Î¶ÔËüÃǵ÷Óá£)¼°²»Í¬Ìصã(ºê²Ù×÷¿ÉÖ±½Ó´«µÝºÍ½ÓÊÕ²ÎÊý£¬²»Í¨¹ý¶ÑÕ»»òÆäËûý½é£»×Ó³ÌÐò²»ÄÜÖ±½Ó´ø²ÎÊý£¬ÐèÓд«µÝ²ÎÊýʱ£¬±ØÐëͨ¹ý¶ÑÕ»¼Ä´æÆ÷ºÍ´æ´¢Æ÷½øÐС£ºêµ÷ÓÃÖ»Äܼò»¯Ô´³ÌÐòµÄÊéд£¬²¢Ã»ÓÐËõ¶ÌÄ¿±ê´úÂ볤¶È£»×Ó³ÌÐòµ÷ÓÃÄÜËõ¶ÌÄ¿±ê³ÌÐò³¤¶È¡£Ó¦ÓúòÙ×÷²¢²»»áÔÚÖ´ÐÐÄ¿±ê´úÂëʱÔö¼Ó¶îÍâµÄʱ¼ä¿ªÏú£»×Ó³ÌÐòµ÷ÓÃÓÉÓÚÐèÒª±£»¤ºÍ»Ö¸´ÏÖ³¡ºÍ¶Ïµã£¬Òò¶øÑÓ³¤Ä¿±ê³ÌÐòµÄÖ´ÐÐʱ¼ä)£¿P109 Îå¡¢Éè¼ÆÌâ
22
1.±à³ÌʵÏÖÇóS=(X+Y)/ZµÄÖµ£¬²¢½«½á¹û·ÅÈËRESULTµ¥Ôª¡£ ;XT4_5_1.ASM
DATA SEGMENT ;¶¨ÒåÊý¾Ý¶Î X DW 15 Y DW -32 Z DW 280
RESULT DW 2 DUP(?) ;¶¨Òå½á¹û±£´æµ¥Ôª DATA ENDS ;Êý¾Ý¶Î½áÊø CODE SEGMENT ;¶¨Òå´úÂë¶Î ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA ;³õʼ»¯DS MOV DS,AX
MOV AX,X ;È¡³ö±»³ËÊýX´æÈëAXÖÐ IMUL X ;Ö´ÐÐX2²Ù×÷
MOV CX,AX ;³Ë»ýµÄµÍλ×Öת´æÖÁCX MOV BX,DX ;³Ë»ýµÄ¸ßλ×Öת´æÖÁBX MOV AX,Y ;È¡³ö±»³ËÊýX´æÈëAXÖÐ IMUL Y ;Ö´ÐÐY2²Ù×÷
ADD AX, CX ;X2+Y2µÄµÍλ×ÖÓëZµÄµÍλ×ÖÏà¼Ó ADC DX, BX ;X2+Y2µÄ¸ßλ×ÖÏà¼Ó IDIV Z ;(X2+Y2)/Z
MOV RESULT,AX ;ÉÌ´æÈëRESULTµ¥Ôª
MOV RESULT+2,DX ;ÓàÊý´æÈëRESULT+2µ¥Ôª MOV AH,4CH
INT 21H ;·µ»ØDOS CODE ENDS ;´úÂë¶Î½áÊø END START ;»ã±à½áÊø 2.±à³ÌÐòÍê³É¼ÆËãS=(A+B)/2-2(A AND B)¡£ ;XT4_5_2.ASM
DATA SEGMENT ;¶¨ÒåÊý¾Ý¶Î A DW 15 B DW -32 S DW ?
RESULT DW 2 DUP(?) ;¶¨Òå½á¹û±£´æµ¥Ôª DATA ENDS ;Êý¾Ý¶Î½áÊø CODE SEGMENT ;¶¨Òå´úÂë¶Î ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA ;³õʼ»¯DS MOV DS,AX
MOV AX,A ;È¡³ö±»³ËÊýA´æÈëAXÖÐ ADD AX, B ;A+B SAR AX,1 ;(A+B)/2 MOV BX,AX ;´æÈëBXÖÐ
MOV AX,A ;È¡³ö±»³ËÊýA´æÈëAXÖÐ AND AX, B ;A AND B SAL AX,1 ;(A AND B)*2
SUB BX,AX ; (A+B)/2-2(A AND B) MOV S,BX ;´æÈëSµ¥Ôª MOV AH,4CH
INT 21H ;·µ»ØDOS CODE ENDS ;´úÂë¶Î½áÊø
END START ;»ã±à½áÊø
3.ÊÔ±à³ÌʵÏÖ½«ÄÚ´æÖеÄÈô¸É¸öÎÞ·ûºÅ×ÖÊý¾ÝÖеÄ×î´óÖµºÍ×îСֵÕÒ³öÀ´£¬²¢¿ª±Ù¶ÀÁ¢µÄ´æ´¢ÇøÓò±£´æ½á¹û¡£ ;XT4_5_3.ASM DATA SEGMENT
ARR DW 123,456,67,0,34,90,89,67,0,256 CN EQU ($-ARR)/2
ZD DW 0 ;×î´ó(Êý×éÖÐÈκÎÊý¾ù´óÓÚAXÄÚÈÝ) ZX DW 0FFFFH ;×îС(Êý×éÖÐÈκÎÊý¾ùСÓÚBXÄÚÈÝ) DATA ENDS CODE SEGMENT
ASSUME DS:DATA,CS:CODE START: MOV AX,DATA
MOV DS,AX ;³õʼ»¯DS
MOV SI,OFFSET ARR ;Êý×éÊ×µØÖ·ËÍSI MOV CX,CN ;Êý×éÔªËØ¸öÊýËÍCX
CALL QZDZXS ;µ÷Óýü¹ý³ÌQZDZXS(Çó×î´ó×îСÊý)
MOV AH,4CH
INT 21H ;·µ»ØDOS ;Çó×î´ó×îСÊý×Ó³ÌÐòÃû:QZDZXS
;×Ó³ÌÐò¹¦ÄÜ:ÇóÒ»×é×ÖÊý¾ÝÖеÄ×î´ó×îСÊý
;Èë¿Ú²ÎÊý:Êý×éÊ×µØÖ·ÔÚSIÖÐ,Êý×é¸öÊýÔÚCXÖÐ ;³ö¿Ú²ÎÊý:×î´óÊýÔÚZDÖÐ,×îСÊýÔÚZXÖÐ ;ʹÓüĴæÆ÷:CX¡¢DX¡¢SI¼°PSW QZDZXS PROC NEAR PUSH SI PUSH DX
PUSH CX ;±£»¤ÏÖ³¡
ZDZX0: MOV DX,[SI] ;ȡһ¸öÊý×éÔªËØËÍDX
CMP ZD,DX ;AXÖÐÄÚÈݺÍDXÖÐÄÚÈÝ±È½Ï JNB ZDZX1 ;(ZD)>(DX),תZDZX1 MOV ZD,DX ;½Ï´óÊý´æÈëZD
ZDZX1: CMP ZX,DX ;AXÖÐÄÚÈݺÍDXÖÐÄÚÈÝ±È½Ï JNA ZDZX2 ;(ZX)<(DX),תZDZX1 MOV ZX,DX ;½ÏСÊý´æÈëZX ZDZX2: ADD SI,2 ;Êý×éÖ¸Õë¼Ó2µ÷Õû LOOP ZDZX0 ;Ñ»·¿ØÖÆ POP CX POP DX
POP SI ;»Ö¸´ÏÖ³¡ RET ;·µ»ØÖ÷³ÌÐò
QZDZXS ENDP ;×Ó³ÌÐò¶¨Òå½áÊø CODE ENDS ;´úÂë¶Î½áÊø END START ;»ã±à½áÊø 4.±àд³ÌÐò£¬¼ÆËãÈçϺ¯ÊýµÄÖµ£º
;XT4_5_4.ASM
DATA SEGMENT X DB 15 S DB ? DATA ENDS
CODE SEGMENT
ASSUME DS:DATA, CS:CODE START: MOV AX,DATA MOV DS,AX MOV AL,X TEST AL,80H JZ LL0
SAL AL,1 ;2X JMP LL10 LL0: CMP AL,10 JG LL1
MOV BL,AL
SAL AL,1 ;3X ADD AL,BL JMP LL10
LL1: SAL AL,1 ;4X SAL AL,1 LL10: MOV S,AL MOV AH,4CH
INT 21H ;·µ»ØDOS CODE ENDS
END START ;»ã±à½áÊø
5.´Ó¼üÅÌÊäÈëһϵÁÐ×Ö·û£¬ÒԻسµ·û½áÊø£¬±àд³ÌÐòͳ¼ÆÆäÖзÇÊý×Ö×Ö·ûµÄ¸öÊý£¿ ;XT4_5_5.ASM
DATA SEGMENT
NUM DB 0 ;ͳ¼Æ±äÁ¿ DATA ENDS
STACK SEGMENT STACK ;¶¨Òå¶ÑÕ»¶Î
DB 100 DUP(?) ;¿ª±Ù100¸ö´æ´¢µ¥Ôª STACK ENDS ;¶ÑÕ»¶Î½áÊø CODE SEGMENT ;¶¨Òå´úÂë¶Î
ASSUME CS:CODE,SS:STACK,DS:DATA START: MOV AX,DATA MOV DS,AX
LLL: MOV AH,01H ;1ºÅµ÷ÓÃ,´Ó¼üÅÌÊäÈëÒ»×Ö·û´æÈëAL INT 21H
CMP AL,13 ;Óë¡°»Ø³µ·û¡±µÄASCIIÂë±È½Ï JZ L2 ;ÊÇ¡°»Ø³µ·û¡±,תL2£¨Í˳ö£© CMP AL,30H ;Óë¡°0¡±µÄASCIIÂë±È½Ï
JB L1 ;µÍÓÚ¡°0¡±µÄ·ÇÊý×Ö×Ö·ûASCIIÂë,תL1(ͳ¼Æ)¡£ CMP AL,39H ;Óë¡°9¡±µÄASCIIÂë±È½Ï
JA L1 ;¸ßÓÚ¡°9¡±µÄ·ÇÊý×Ö×Ö·ûASCIIÂë,תL1(ͳ¼Æ)¡£ JMP LLL
L1: INC NUM ;·ÇÊý×Ö×Ö·û,ͳ¼Æ;¼ÆÊýÔö1¡£ JMP LLL ;תLLL£¨¼ÌÐø£© L2: MOV DL,0AH ;ÉèÖû»Ðзû MOV AH,02H ;ÉèÖÃÏÔʾ¹¦ÄܺŠINT 21H ;»»ÐÐ
MOV DL,NUM ;ÉèÖÃÏÔʾͳ¼ÆÊý×Ö(8λ¶þ½øÖÆÊý) MOV CL,4
SHR DL,CL ;±£Áô¸ß4λ¶þ½øÖÆÊý
OR DL,30H ;ת»»³ÉASCIIÂë(¸ß1λʮÁùÖÆÊýµÄASCII) MOV AH,02H ;ÉèÖÃÏÔʾ¹¦ÄܺÅ
INT 21H ;ÏÔʾ¸ß1λʮÁùÖÆÊýµÄASCII MOV DL,NUM ;ÉèÖÃÏÔʾͳ¼ÆÊý×Ö(8λ¶þ½øÖÆÊý) AND DL,0FH ; ±£ÁôµÍ4λ¶þ½øÖÆÊý
OR DL,30H ;ת»»³ÉASCIIÂë(µÍ1λʮÁùÖÆÊýµÃASCII) MOV AH,02H ; ÉèÖÃÏÔʾ¹¦ÄܺÅ
INT 21H ; ÏÔʾµÍ1λʮÁùÖÆÊýµÄASCII MOV DL,¡¯H¡¯ ; ÉèÖÃÏÔʾ¡¯H¡¯ MOV AH,02H ; ÉèÖÃÏÔʾ¹¦ÄܺŠINT 21H ; ÏÔʾ¡¯H¡¯
MOV AH,4CH ;ÉèÖ÷µ»ØDOS¹¦ÄÜÂë¡£
Ïà¹ØÍÆ¼ö£º