¡¾½â¡¿£ºXLATÖ¸ÁîÊǽ«ALµÄÄÚÈÝÌæ»»³É´æ´¢µ¥ÔªÖеÄÒ»¸öÊý£¬ÍùÍùÓÃÓÚ´úÂëת»»¡£Ê¹ÓôËÖ¸Áîǰ£¬ÏÈÔÚÊý¾Ý¶Î½¨Á¢Ò»¸ö±í¸ñ£¬±í¸ñÊ×µØÖ·´æÈëBX¼Ä´æÆ÷£¬ÓûÈ¡´úÂëµÄ±íÄÚÎ»ÒÆÁ¿´æÈëAL¼Ä´æÆ÷ÖС£XLATÖ¸Á(AL)ÖµÀ©Õ¹³É16룬Óë(BX)Ïà¼ÓÐγÉÒ»¸ö¶ÎÆ«ÒÆµØÖ·£¬¶ÎµØÖ·È¡(DS)£¬¾Ý´Ë¶Á³ö´úÂëËÍÈëAL¼Ä´æÆ÷¡£ ³ÌÐòÈçÏ£ºTABLE DB 30H, 31H, ©©, 39H ARRAY DB 1O DUP(?) MOV CL, 10 MOV SI, 0
MOV BX, OFFSET TABLE MOV AL, AL AGAIN: XLAT
MOV [SI], AL INC SI INC AL
LOOP AGAIN
3.17 Èô(AX)=0001H£¬(BX)=0FFFFH£¬Ö´ÐÐADD AX£¬BXÖ®ºó£¬±ê־λZF¡¢SF¡¢CFºÍOF¸÷ÊÇʲô£¿ ¡¾½â¡¿£º (AX)= 0001H = 0000 0000 0000 0001 B + (BX)=0FFFFH = 1111 1111 1111 1111 B
(AX)= 0001H = 1 0000 0000 0000 0000 B Ôò£ºZF=1¡¢SF=0¡¢CF=1¡¢OF=0 3.18 дһָÁîÐòÁÐÍê³É½«AX¼Ä´æÆ÷µÄ×îµÍ4λÖÃ1£¬×î¸ß3λÇå0£¬µÚ7¡¢8¡¢9λȡ·´£¬ÆäÓàλ²»±ä¡£ ¡¾½â¡¿£º OR AX, 000FH (OR AX, 0000 0000 0000 1111 B) AND AX, 1FFFH (AND AX, 0001 1111 1111 1111 B) XOR AX, 01C0H (XOR AX, 0000 0001 1100 0000 B)
3.19 ÊÔд³öÖ´ÐÐÏÂÁÐÖ¸ÁîÐòÁкóAX¼Ä´æÆ÷µÄÄÚÈÝ¡£Ö´ÐРǰ(AX)=1234H¡£ MOV CL£¬7 SHL BX£¬CL ¡¾½â¡¿£º(AX) = 1234H = 0001 0010 0011 0100 B
Ö´Ðкó£º(AX) = 0 0011 0100 0000 000 B = 0001 1010 0000 0000 B = 1A00H
4.1 ¼ÙÉèÏÂÁÐÖ¸ÁîÖеÄËùÓбêʶ·û¾ùΪÀàÐÍÊôÐÔΪ×ֵıäÁ¿£¬ÇëÖ¸³öÏÂÁÐÖ¸ÁîÖÐÄÄЩÊÇ·Ç·¨µÄ?ËüÃǵĴíÎóÊÇʲô? ¢Å MOV BP£¬AL ¢Æ MOV WORD_OP[BX+4*3][DI]£¬SP ¢Ç MOV WORD_OP1£¬WORD_OP2 ¢È MOV AX£¬WORD_OP1[DX] ¢É MOV SAVE WORD£¬DS ¢Ê MOV SP£¬SS£ºDATA_WORD[BX][SI] ¢Ë MOV [BX][SI]£¬2 ¢Ì MOV AX£¬WORD_OP1+WORD_OP2 ¢Í MOV AX£¬WORD_OP1-WORD_OP2+100 ¢Î MOV WORD_OP1£¬WORD_OP1-WORD_OP2 ¡¾½â¡¿£º¢Å MOV BP£¬AL Á½¸ö²Ù×÷Êý²»Æ¥Åä
¢Æ MOV WORD_OP[BX+4*3][DI]£¬SP ¢Ç MOV WORD_OP1£¬WORD_OP2 Á½¸öÄÚ´æµ¥ÔªÖ®¼ä²»ÄÜÖ±½Ó´«ËÍÊý¾Ý ¢È MOV AX£¬WORD_OP1[DX] ¢É MOV SAVE WORD£¬DS
¢Ê MOV SP£¬SS£ºDATA_WORD[BX][SI] µ±»ùַΪBXʱ£¬Ñ¡È¡DS¼Ä´æÆ÷ ¢Ë MOV [BX][SI]£¬2 ¢Ì MOV AX£¬WORD_OP1+WORD_OP2
¢Í MOV AX£¬WORD_OP1-WORD_OP2+100 ¢Î MOV WORD_OP1£¬WORD_OP1-WORD_OP2
4.2 ¼ÙÉèVAR1ºÍVAR2Ϊ×Ö±äÁ¿£¬LABΪ±êºÅ£¬ÊÔÖ¸³öÏÂÁÐÖ¸ÁîµÄ´íÎóÖ®´¦£º ¢Å ADD VAR1£¬VAR2 ¢Æ SUB AL,VAR1 ¢Ç JMP LAB[SI] ¢È JNZ VAR1 ¢É JMP NEAR LAB ¡¾½â¡¿£º¢Å ADD VAR1£¬VAR2 ADDÁ½¸ö²Ù×÷Êý²»ÄÜͬʱΪ´æ´¢µ¥Ôª£¬ MOV AX, VAR1 ADD AX, VAR2 ¢Æ SUB AL,VAR1 Á½¸ö²Ù×÷Êý²»Æ¥Åä SUB AX, VAR1 ¢Ç JMP LAB[SI] LABÓë[SI]²»ÄÜÏà¼Ó
JMP WORD PTR [SI] ¢È JNZ VAR1
JNZºóÃæÓ¦ÊDZêºÅ£¬²»Ó¦ÊDZäÁ¿ JNZ LAB
¢É JMP NEAR LAB ȱÉÙPTRÔËËã·û
JMP NEAR PTR LAB
4.3 »Í¼ËµÃ÷ÏÂÁÐÓï¾äËù·ÖÅäµÄ´æ´¢¿Õ¼ä¼°³õʼ»¯µÄÊý¾ÝÖµ¡£
¢Å BYTE_VAR DB ¡¯BYTE¡¯£¬12£¬-12H£¬3 DUP(0£¬?£¬2 DUP(1£¬2)£¬?) ¢Æ WORD_VAR DW 5 DUP(0£¬1£¬2)£¬?£¬-5£¬£¬'BY'£¬'TE'£¬256H ¡¾½â¡¿£º(1) (2)
WORD_VAR BYTE_VAR 41H 00H B 0
59H 00H Y T 54H 01H 1 E 45H 00H
0CH 12 02H 2
F4H £12H 00H 00H 0 30¸ö×Ö½Ú ¡ £ 00H 0 01H 1 00H
02H 2 01H 1 01H 1 00H 02H 2 02H 2 00H 0 00H
£ £ 2 01H 1 £ FBH 02H 2 £5 FFH 01H 1
41H 02H 2 B 00H 00H 0 59H £ Y
01H 02H 01H 02H 1 2 1 2 00H 54H 00H 45H 00H 56H T E
256H 02H
4.4 ¼ÙÉè³ÌÐòÖеÄÊý¾Ý¶¨ÒåÈçÏ£º PARTNO DW ?
PNAME DB 16 DUP(?) COUNT DD ?
PLENTH EQU $-PARTNO
ÎÊPLENTHµÄֵΪ¶àÉÙ?Ëü±íʾʲôÒâÒå? ¡¾½â¡¿£ºPLENTHµÄֵΪ22£¬Ëü±íʾÊý¾ÝµÄ¸öÊý¡£ 4.5 ÓзûºÅ¶¨ÒåÓï¾äÈçÏ£º
BUFF DB 1£¬2£¬3£¬¡¯123¡¯ EBUFF DB 0
L EQU EBUFF-BUFF ÎÊLµÄÖµÊǶàÉÙ? ¡¾½â¡¿£ºPLENTHµÄֵΪ6¡£
4.6 ¼ÙÉè³ÌÐòÖеÄÊý¾Ý¶¨ÒåÈçÏ£º LNAME DB 30 DUP(?) ADDRESS DB 30 DUP(?) CITY DB 15 DUP(?) CODE-LIST DB 1£¬7£¬8£¬3£¬2
¢Å ÓÃÒ»ÌõMOVÖ¸ÁLNAMEµÄÆ«ÒÆµØÖ··ÅÈëAX¡£
¢Æ ÓÃÒ»ÌõÖ¸ÁCODE_LISTµÄÍ·Á½¸ö×Ö½ÚµÄÄÚÈÝ·ÅÈëSI¡£
¢Ç дһÌõα²Ù×÷ʹCODE_LENGHTµÄÖµµÈÓÚCODE_LISTÓòµÄʵ¼Ê³¤¶È¡£ ¡¾½â¡¿£º ¢Å ÓÃÒ»ÌõMOVÖ¸ÁLNAMEµÄÆ«ÒÆµØÖ··ÅÈëAX¡£ MOV AX, OFFSET LANME
¢Æ ÓÃÒ»ÌõÖ¸ÁCODE_LISTµÄÍ·Á½¸ö×Ö½ÚµÄÄÚÈÝ·ÅÈëSI¡£ MOV SI, WORD PTR CODE_LSIT
¢Ç дһÌõα²Ù×÷ʹCODE_LENGHTµÄÖµµÈÓÚCODE_LISTÓòµÄʵ¼Ê³¤¶È¡£ CODE_LENGHT EQU CITY-CODE_LIST
4.7 ÊÔд³öÒ»¸öÍêÕûµÄÊý¾Ý¶ÎDATA_SEG£¬Ëü°ÑÕûÊý5¸³ÓèÒ»¸ö×Ö½Ú£¬²¢°ÑÕûÊý-1£¬0£¬2£¬5ºÍ4·ÅÔÚ10×ÖÊý×éDATA_LISTµÄÍ·5¸öµ¥ÔªÖС£È»ºó£¬Ð´³öÍêÕûµÄ´úÂë¶Î£¬Æä¹¦ÄÜΪ£º°ÑDATA_LISTÖÐÍ·5¸öÊýÖеÄ×î´óÖµºÍ×îСֵ·Ö±ð´æÈëMAXºÍMINµ¥ÔªÖС£ ¡¾½â¡¿£º²Î¿¼³ÌÐòÈçÏ£º
DATA_SEG SEGMENT DB1 DB 5
DATA_LIST DB -1, 0, 2, 5, 4, 5 DUP(?) COUNT DB 5 MAX DB ? MIN DB ? DATA_SEG ENDS
CODE_SEG SEGMENT
ASSUME CS:CODE_SEG, DS:DATA_SEG START PROC FAR PUSH DS MOV AX, 0 PUSH AX
MOV AX, DATA_SEG MOV DS, AX
LEA BX, DATA_LIST MOV CX, COUNT-1 MOV AL, [BX] MOV AH, [BX+1] LOOP1: INC BX CMP AH, AL JAE LOOP1 XCHG AH, AL LOOP2 INC BX
CMP AH, [BX] JAE LIS
XCHG AH, [BX] JMP LOP2 LIS: CMP AL , [BX] JBE LOP2
XCHG AL, [BX] LOOP2
MOV MAX, AH MOV MIN, AL RET START ENDP CODE_SEG ENDS END START 4.10 ¸ø³öµÈÖµÓï¾äÈçÏ£º ALPHA EQU 100 BETA EQU 25 GAMMA EQU 2 ÏÂÁбí´ïʽµÄÖµÊǶàÉÙ? ¢Å ALPHA*100+BETA ¢Ç (ALPHA+2)*BETA-2 ¢É (ALPHA+3)*(BETA MOD GAMMA) ¢Ë BETA AND 7 ¡¾½â¡¿£º ¢Å ALPHA*100+BETA 100¡Á10025£½10025 ¢Æ ALPHA MOD GAMMA+BETA 100/(25£«2)£½19
¢Æ ALPHA MOD GAMMA+BETA ¢È (BETA/3) MOD 5
¢Ê ALPHA GE GAMMA ¢Ì GAMMA OR 3