16¡¢³ÌÐò¶ÎÈçÏ£º CXFX
BLK1 DB 46£¬84£¬34£¬£5£¬20£¬122£¬73 :
MOV CX£¬7
LEA S1£¬BLK1
NEXT£º MOV AL£¬[SI] INC SI
TEST AL£¬81H LOOPZ NEXT MOV BL£¬[SI] :
Çë»Ø´ð³ÌÐò¶ÎÔËÐк󣺣¨AL£©£½£ß£ß£ß5»ò0FBH£ß£ß £¨BL£©£½£ß£ß£ß14H»ò20£ß£ß£ß£ß£ß£ß 17¡¢ÏÂÃæ³ÌÐòµÄ¹¦ÄÜÊÇʲô£¿ CXFX STRING DB 100 DUP(?) MOV AX,SEG STRING MOV DS,AX
LEA SI,STRING MOV CX,100 LAB: MOV AL,[SI] CMP AL,¡¯a¡¯ JB LAB1
CMP AL,¡¯z¡¯ JA LAB1 SUB AL,32 MOV [SI],A
LAB1: INC SI
LOOP LAB
½«STRINGÀïµÄСд×Öĸ¡¯a¡¯-¡®z¡¯×ª³ÉÏàÓ¦µÄ´óд×Öĸ¡¯A¡¯-¡®Z¡¯ 18¡¢ÏÖÓÐÏÂÁÐÊý¾Ý¶Î£º CXTK DATA SEGMENT
STR1 DB¡®ABCDEFGHIJKL' COUNT EQU £STR1 BUF DB COUNT DUP£¨0£© DATA ENDS
ÏÂÃæ³ÌÐò¶ÎÊÇʵÏÖ°ÑSTR1ÖÐËùÓÐ×Ö·ûÄæÏò´«Ë͵½BUF»º³åÇø£¨¼´STR1ÖеÚÒ»¸ö×Ö·ûË͵½BUFµÄ×îºóÒ»¸öµ¥Ôª£¬STR1ÖÐ×îºóÒ»×Ö·ûË͵½BUFµÄµÚÒ»¸öµ¥Ôª£©¡£Ê԰ѳÌÐòÖÐËù¿ÕȱµÄÖ¸ÁîÌîÉÏ¡£
MOV SI£¬OFFSET BUF£1 MOV DI£¬OFFSET BUF
MOV CX£¬COUNT
£ß£ß£ßCLD£ß»ò STD£ß£ß£ß£ß£ß LOOP:MOVSB
26
______ SUB SI£¬2__»ò____ ADD DI£¬2__
LOOP LOP
19¡¢ÏÂÊö³ÌÐò¶ÎÍê³É¼ÆËã2~20Ö®¼äµÄżÊýµÄºÍ£¬²¢´æÓÚAXÖС£Ê԰ѿհ״¦ÌîÉÏÊʵ±µÄÖ¸Áî¡£ CXTK
XOR AX£¬AX
MOV BX£¬0
MOV CX£¬10»òMOV CX£¬0AH CONT£º ADD AX£¬BX
ADD BX£¬2 LOOP CONT
20¡¢BEGΪÆðʼµØÖ·µÄ´æ´¢ÇøÓòÖдæ·ÅÓÐ100¸ö×Ö½ÚÊý¾Ý£¬ÏÖ½«ÆäÊס¢Î²µßµ¹¹ýÀ´£¬ÖØÐÂÅÅ·ÅÕâ100¸ö×Ö½ÚÊý¾Ý¡£ÇëÔÚ³ÌÐòÖеĿոñ´¦ÌîÈëÊʵ±µÄÖ¸ÁîʹÆäÍêÕû¡£ CXTK
MOV CX£¬32H LEA SI£¬BEG MOV DI£¬SI (1)
DON£ºMOV AL£¬[SI] (2) MOV [SI]£¬AL (3) DEC DI LOOP DON HLT
´ð: (1) ADD DI, 99
(2) XCHG AL, [DI]
(3) INC SI
21¡¢ÊÔ±àÖÆÒ»Ô´³ÌÐò£¬Í³¼ÆDA1×Öµ¥ÔªÖк¬0µÄ¸öÊý£¬Èçͳ¼ÆµÄ¸öÊýÎªÆæÊý£¬Ôò½«½øÎ»Î»ÖÃ1£¬·ñÔò½øÎ»Î»Çå0¡£ BC
DATA SEGMENT DA1 DW XXXX DATA ENDS ´ð£º
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA SI,DA1 MOV CX,16 XOR BL,BL AGAIN: MOV AL,[SI] HL AL,1 JC NEXT
27
INC BL NEXT:INC SI
LOOP AGAIN TEST BL,01H JNE L1 CLC
JMP DONE L1: STC
DONE: MOV AH,4CH INT 21H CODE ENDS END START
22¡¢ÏÂÊö³ÌÐò¶ÎÍê³É¼ÆËã2~20Ö®¼äµÄżÊýµÄºÍ£¬²¢´æÓÚAXÖС£Ê԰ѿհ״¦ÌîÉÏÊʵ±µÄÖ¸Áî¡£ CXTK
XOR AX£¬AX MOV BX£¬0
MOV CX£¬10»òMOV CX£¬0AH CONT£º ADD AX£¬BX
ADD BX£¬2
LOOP CONT
23¡¢ÈçϳÌÐòÓ¦ÓÃðÅÝ·¨¶ÔÒ»¸öÎÞ·ûºÅÊý×éÅÅÐò£¨ÓÉСµ½´óÅÅÐò£©£¬ÇëÍê³É¸Ã³ÌÐò¡£
£¨×¢£ºÎª¸Ã³ÌÐò·ÖÅä100×ֵĶÑÕ»´æ´¢¿Õ¼ä¡££© CXTK SSEG SEGMENT STACK
DW 100 DUP (£¿) SSEG ENDS DSEG SEGMENT
SWAP DB £¿
ARRAY DW 32760£¬ 127£¬ 0£¬ 65000£¬ 230£¬ 100 DSEG ENDS
CSEG SEGMENT
ASSUME CS¡ÃCSEG£¬DS¡ÃDSEG£¬SS¡ÃSSEG START£º MOV AX£¬DSEG MOV DS£¬AX
SORT£º MOV CX£¬5
MOV SI£¬0 MOV SWAP£¬0
INNER£º MOV AX£¬ARRAY[SI] CMP AX£¬ARRAY[SI+2] JBE NOSWAP
XCHG AX£¬ARRAY[SI+2]
MOV ARRAY[SI]£¬AX MOV SWAP£¬1
NOSWAP£º ADD SI£¬2
28
LOOP INNER
CMP SWAP£¬1 JNZ SORT MOV AH£¬4CH INT 21H CSEG ENDS
END START
µÚ7Õ£º×Ó³ÌÐòÉè¼Æ
1¡¢Ö÷³ÌÐòºÍËùµ÷ÓõÄ×Ó³ÌÐòÔÚͬһ´úÂë¶ÎÖУ¬×Ó³ÌÐòµÄÊôÐÔÓ¦¶¨ÒåΪ( C )¡£ DX
A£®TYPE B£®WORD C£®NEAR D£®FAR 2¡¢ MOV AL£¬38H MOV BL£¬49H CALL SUBO INC AL DEC CL ©«
SUBO PROC ADD AL£¬BL MOV CL£¬AL
DAA RET
SUBO ENDP
ÉÏÊö³ÌÐò¶ÎÔËÐкó£¬AL=________88H _____________£¬CL=________80H __________¡£ CXFX
3¡¢FACT PROC
PUSH DX
MOV DX£¬AX CMP AX£¬0 JZ DONE DEC AX CALL FACT MUL DX POP DX RET DONE£ºMOV AX£¬1 POP DX RET
FACT ENDP
ÈôÖ´ÐÐÒÔÉÏ×Ó³ÌÐòǰ£¬(AX)=5£¬Ôò×Ó³ÌÐòÍê³ÉµÄ¹¦ÄÜÊÇ£º Çó5£¡(»òÇó5µÄ½×³Ë) £¬Ö´ÐиÃ×Ó³ÌÐòºó(AX)= 120 ¡£ CXFX
4¡¢ÔÚÒ»¶Î»ã±à³ÌÐòÖжà´Îµ÷ÓÃÁíÒ»¶Î³ÌÐò£¬ÓúêÖ¸Áî±ÈÓÃ×Ó³ÌÐòʵÏÖÆðÀ´¡££¨Õ¼ÄÚ´æ¿Õ¼ä´ó£¬µ«Ëٶȿ죩¡£ DX
29
5¡¢ÉèÔÚDATµ¥Ôª´æ·ÅÒ»¸ö£9~£«9µÄ×Ö½ÚÊý¾Ý£¬ÔÚSQRTABÊý¾ÝÇøÖдæ·ÅÁË0~9µÄƽ·½Öµ£¬ÇëÓÃÖ±½Ó²é±í·¨±àдһ¸ö×Ó³ÌÐò£¬ÔÚSQRTABÖвéÕÒ³öDATµ¥ÔªÖÐÊý¾Ý¶ÔÓ¦µÄƽ·½ÖµËÍSQRµ¥Ôª¡£²¢Ð´³öÖ÷³ÌÐòµÄµ÷Ó÷½Ê½¡£ CX
Êý¾Ý¶ÎÈçÏ£º DATA SEGMENT
DAT DB XXH
SQRTAB DB 0£¬1£¬4£¬9£¬...81 SQR DB£¿ DATA ENDS ´ð£º
DATA SEGMENT DAT DB XXH
SQRTAB DB 0£¬1£¬4£¬9£¬?£¬81 SQR DB£¿
DATA EMDS
STACL1 SEGMENT PARA STACK DW 20H DUP£¨£¿£© STACK1 ENDS CODE SEGMENT
ASSUME CS£ºCODE£¬DS£ºDATA£¬SS£ºSTACK1 START£º MOV AX£¬DATA
MOV DS£¬AX ©«
CALL SUBROT ©«
MOV AH£¬4CH INT 21H SUBROT PROC PUSH AX PUSH BX LEA BX£¬SQRTAB MOV AL£¬DAT TEST AL£¬80H JNS NEXT
NEG AL
NEXT£º XLAT SQRTAB MOV SQR£¬AL POP BX POP AX RET
SUBROT ENDP
CODE ENDS END SRART
6¡¢ÉèÔÚÄÚ´æµ¥ÔªSQTABÊ×Ö·¿ªÊ¼´æ·ÅÁË0¡«15µÄƽ·½Êý±í¡£ÒªÇóÓÃÖ±½Ó²é±í·¨
30
±àÒ»³ÌÐò£¬Çó³öAµ¥ÔªÖиø¶¨Êý£¨£¼=15£½µÄƽ·½ÖµËÍBµ¥Ôª±£´æ¡£ BC
´ð: DATA SEGMENT
SQTAB DB 0£¬1£¬4£¬9£¬16£¬25£¬36£¬49£¬64£¬81 DB 100£¬121£¬144£¬169£¬196£¬225 A DB 12 B DB£¿
DATA ENDS
CODE SEGMENT
ASSUME CS£ºCODE£¬DS£ºDATA START PROC FAR PUSH DX XOR AX£¬AX PUSH AX
MOV AX£¬DATA
MOV DS£¬AX
MOV BX£¬OFFSET SQTAB MOV AL£¬A XLAT
MOV B£¬AL RET
START ENDP
CODE ENDS END START
7¡¢FUNCTION MACRO P1£¬P2£¬P3 MOV AX£¬P1 P2 P3 ENDM
Çë»Ø´ðÏÂÁÐÎÊÌ⣺
¢ÅÉÏÃæ³ÌÐò¶ÎÖУ¬MACROºÍENDMÊÇÒ»¶ÔαָÁÔÚ ºê ¶¨ÒåÖУ¬ËüÃdzɶԳöÏÖ¡£
¢ÆÍ¨¹ýµ÷ÓÃÓï¾äFUNCTION 100£¬SUB£¬AXµ÷ÓÃÖ®ºó£¬AX¼Ä´æÆ÷ÖеÄÄÚÈÝΪ 99 ¡£ CXFX
31