3.16 ½âÊÍXLATÖ¸ÁîÊÇÔõÑùת»»AL¼Ä´æÆ÷ÖеÄÈݵġ£²¢±àдһ¶Î³ÌÐòÓÃXLATÖ¸ÁBCDÂë0¡«9ת»»³É¶ÔÓ¦µÄASCIIÂ룬²¢½«ASCIIÂë´æÈëÊý¾ÝARRAYÖС£ ¡¾½â¡¿£º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 ¡ £ 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 £ 01H 02H 01H 02H 1 2 1 2 59H 00H 54H 00H 45H 00H 56H Y T E 30¸ö×Ö½Ú
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 MOD GAMMA+BETA ¢Ç (ALPHA+2)*BETA-2 ¢È (BETA/3) MOD 5 ¢É (ALPHA+3)*(BETA MOD GAMMA) ¢Ê ALPHA GE GAMMA ¢Ë BETA AND 7 ¢Ì GAMMA OR 3 ¡¾½â¡¿£º ¢Å ALPHA*100+BETA
100¡Á10025£½10025 ¢Æ ALPHA MOD GAMMA+BETA