ÄÚÈÝ·¢²¼¸üÐÂʱ¼ä : 2025/9/10 12:17:50ÐÇÆÚÒ» ÏÂÃæÊÇÎÄÕµÄÈ«²¿ÄÚÈÝÇëÈÏÕæÔĶÁ¡£
END START
30 ÎÞ·ûºÅÊý±äÁ¿XÓÃDD¶¨Ò壬±àд³ÌÐò£¬ÓÃÊ®Áù½øÖƸñʽÊä³ö±äÁ¿XµÄÖµ¡£ ´ð£º .386
DATA SEGEMNT USE16
X DD 36895471 £»Ò»¸ö32B³¤ÕûÊý
MESS DB 0DH, 0AH, ¡®The X in hexdecimal is : $¡¯ HEXTAB DB ¡®0123456789ABCDEF¡¯ DATA ENDS
CODE SEGMENT USE16
ASSUME CS: CODE, DS: DATA START:
MOV AX, DATA MOV DS, AX LEA DX, MESS MOV AH, 09H INT 21H £»Êä³öǰµ¼ÐÅÏ¢
MOV ESI, X £»½«X´æÈëESI
MOV CX, 8 £»Ñ»·¼ÆÊýÆ÷ÖóõÖµ LEA BX, HEXTAB £»»»Âë±íÊ×µØÖ·×°ÈëBX AGAIN: ROL ESI, 4 £»°Ñ×î¸ß4Î»ÒÆµ½×îµÍ4λÉÏ MOV AX, SI £»µÍ8λתÈëAL AND AX, 0004H £»Çå³ý¸ß4λ
XLAT £»×ª»»³ÉÊ®Áù½øÖÆÊý×ÖµÄASCII´úÂë MOV DL, AL MOV AH, 2 INT 21H £»Êä³öÒ»¸öÊ®Áù½øÖÆÊý×Ö
LOOP AGAIN £»Ñ»·16´Î MOV AX, 4C00H INT 21H CODE ENDS END START
31 ´Ó¼üÅÌÉÏÊäÈëÁ½¸öÓзûºÅ×ÖÕûÊýAºÍB£¬¼ÆËã²¢Êä³öËüÃǵĺ͡¢²î¡¢»ý¡¢É̺ÍÓàÊý¡£
´ð£º INCLUDE YLIB.H DATA SEGEMNT
MESS1 DB 0DH, 0AH, ¡®Input a integer number please : $¡¯ MESS2 DB 0DH, 0AH, ¡®The sum of 2 number is : $¡¯
MESS3 DB 0DH, 0AH, ¡®The difference of 2 number is : $¡¯ MESS4 DB 0DH, 0AH, ¡®The product of 2 number is : $¡¯ MESS5 DB 0DH, 0AH, ¡®The quotient of 2 number is : $¡¯ MESS6 DB 0DH, 0AH, ¡®The remainder of 2 number is : $¡¯ A DW ?
32 Êý×éARRAYÖдæÓÐ10¸öÎÞ·ûºÅ×ÖÕûÊý£¨ÔªËØÐòºÅ0~9£©£¬ÏÖÔÚҪɾ³ýÆäÖеÄ
µÚ5¸öÔªËØ¡£±àд³ÌÐò£¬°ÑµÚ6~9¸öÔªËØÒÆµ½µÚ5~8¸öÔªËØµÄλÖÃÉÏ£¬²¢°ÑµÚ9¸öÔªËØÇåÁã¡£ ´ð£º DATA SEGEMNT
ARRAY DW -386, 97, 213, 21, 77, -91, 56, 7, 123, 65
B DW ? DATA ENDS CODE SEGMENT
ASSUME CS: CODE, DS: DATA START:
MOV AX, DATA MOV DS, AX LEA DX, MESS1
CALL READINT £»ÊäÈëµÚÒ»¸öÓзûºÅÕûÊý MOV A, AX
LEA DX, MESS1
CALL READINT £»ÊäÈëµÚ¶þ¸öÓзûºÅÕûÊý MOV B, AX ADD AX, A £»ÇóÁ½¸öÊýµÄºÍ LEA DX, MESS2
CALL WRITEINT £»Êä³öÁ½¸öÊýµÄºÍ MOV AX, A SUB AX, B £»ÇóÁ½¸öÊýµÄ²î LEA DX, MESS3
CALL WRITEINT £»Êä³öÁ½¸öÊýµÄ²î MOV AX, A
IMUL B £»ÇóÁ½¸öÊýµÄ»ý£¬¼ÙÉèÈÔÈ»ÊÇ16λ LEA DX, MESS4
CALL WRITEINT £»Êä³öÁ½¸öÊýµÄ»ý MOV AX, A CWD
IDIV B £»ÇóÁ½¸öÊýµÄÉ̺ÍÓàÊý PUSH DX LEA DX, MESS5
CALL WRITEINT £»Êä³öÁ½¸öÊýµÄÉÌ POP AX LEA DX, MESS6
CALL WRITEINT £»Êä³öÁ½¸öÊýµÄÓàÊý CALL CRLF
MOV AX, 4C00H INT 21H CODE ENDS END START
DATA ENDS CODE SEGMENT
ASSUME CS: CODE, DS: DATA START:
MOV AX, DATA MOV DS, AX MOV BX, 6*2 £»µÚÁù¸öÔªËØÔÚÊý×éÄÚµÄÎ»ÒÆ MOV CX, 4 £»Ñ»·¼ÆÊýÆ÷ÖóõÖµ AGAIN: MOV AX, ARRAY[BX] £»È¡³öÒ»¸öÔªËØ MOV ARRAY[BX-2], AX £»ÏòÇ°ÒÆ¶¯Ò»¸öλÖà ADD BX, 2 £»ÐÞ¸ÄÖ¸Õë LOOP AGAIN £»Ñ»·4´Î MOV ARRAY[BX], 0 £»×îºóÒ»¸öÔªËØÇåÁã MOV AX, 4C00H INT 21H CODE ENDS END START
33 ±àдָÁîÐòÁУ¬°ÑAXÖеÄ16b¶þ½øÖÆ·ÖΪ4×飬ÿ×é4b£¬·Ö±ðÖÃÈëAL£¬BL£¬
CL£¬DLÖС£ ´ð£º MOV DX, AX £»×îµÍ4λֱ½Ó½øÈëDX
MOV CX, 4
ROL AX, CL £»×î¸ß4Î»ÒÆÈë×îµÍ4λ
PUSH AX £»Ñ¹Èë¶ÑÕ»±£´æ£¨×¼±¸ËÍÈëAL£© ROL AX, CL £»´Î¸ß4Î»ÒÆÈë×îµÍ4λ MOV BX, AX £»ËÍÈëBL ROL AX, CL £»µÚ3×é4Î»ÒÆÈë×îµÍ4λ MOV CX, AX £»ËÍÈëCL POP AX £»´Ó¶ÑÕ»Öе¯³öÔ×î¸ß4λ AND AX, 000FH £»Çå³ý¸ß12λ AND BX, 000FH £»Çå³ý¸ß12λ AND CX, 000FH £»Çå³ý¸ß12λ AND DX, 000FH £»Çå³ý¸ß12λ
34 ʲô½Ð×ö¡°¿ØÖÆ×ªÒÆÖ¸Á£¿ËüºÍÊý¾Ý´«ËÍ¡¢ÔËËãÖ¸ÁîÓÐÊ²Ã´Çø±ð£¿ËüÊÇÔõ
ÑùʵÏÖËüµÄ¹¦Äܵģ¿
´ð£º¿ØÖÆ×ªÒÆÖ¸ÁîÊÇ¿ÉÒԸıäÖ¸ÁîÖ´ÐÐ˳ÐòµÄÖ¸Áî¡£Êý¾Ý´«ËÍ¡¢ÔËËãÖ¸Áî×ÜÊÇ˳
ÐòÖ´Ðе쬶ø¿ØÖÆ×ªÒÆÖ¸Áîͨ¹ý¸Ä±äIPºÍ/»òCS¼Ä´æÆ÷µÄÖµ£¬¸Ä±äÁ˳ÌÐòÖ¸ÁîµÄÖ´ÐÐ˳Ðò¡£
35 Ö¸Áî¡°JMP DI¡±ºÍ¡°JMP WORD PTR [DI]¡±×÷ÓÃÓÐʲô²»Í¬£¿Çë˵Ã÷¡£ ´ð£ºÉÏÊöÁ½ÌõÖ¸Áî¶¼ÊǶÎÄÚ½ü×ªÒÆÖ¸Áµ«ÊÇÆ«ÒƵØÖ·µÄÀ´Ô´²»Í¬¡£Ö¸Áî¡°JMP
DI¡±Ö´ÐÐʱ£¬ÐÂµÄÆ«ÒƵØÖ·ÔÚDI¼Ä´æÆ÷ÄÚ£¬¡°JMP WORD PTR [DI]¡±Ê±£¬Ä¿µÄÆ«ÒÆµØÖ·ÔÚ´æ´¢µ¥ÔªÖУ¬¸Ã´æ´¢µ¥ÔªµÄµØÖ·ÔÚDS: DIÖС£
36 ʲôÊÇ¡°½ü³Ì¡±×ªÒÆ£¿Ê²Ã´ÊÇ¡°Ô¶³Ì¡±×ªÒÆ£¿ËüÃǵÄʵÏÖ·½·¨ÓÐʲô²»Í¬£¿ ´ð£ºÖ´ÐС°½ü³Ì¡±×ªÒÆÊ±£¬×ªÒƵÄÄ¿µÄµØÓë³ö·¢µØÔÚͬһ¸ö¶ÎÄÚ£¬ËüÃǾßÓÐÏàͬ
µÄ¶Î»ùÖ·¡£Òò´Ë£¬ÎªÁËʵÏÖ¡°½ü³Ì¡±×ªÒÆ£¬Ö»ÐèÒª¸Ä±äIP¼Ä´æÆ÷µÄÖµ¡£¡°Ô¶³Ì¡±×ªÒƵÄÄ¿µÄµØÓë³ö·¢µØ²»ÔÚͬһ¸ö¶Î£¬ÎªÁËʵÏÖÕâ¸ö×ªÒÆ£¬±ØÐëͬʱ¸Ä±äCSºÍIP¼Ä´æÆ÷µÄÖµ¡£
37 ÒÑÖª£¨AX£©= 836BH£¬X·Ö±ðÈ¡ÏÂÁÐÖµ£¬Ö´ÐС°CMP AX, X¡±ºó£¬±ê־λZF¡¢
CF¡¢OF¡¢SF¸÷ÊÇʲô£¿
£¨1£©X=3000H £¨2£©X=8000H £¨3£©X=7FFFFH £¨4£©X=0FFFFH £¨5£©X=0 ´ð£ºÉÏÊöÖ¸ÁîÖ´Ðк󣬱ê־λZF¡¢CF¡¢OF¡¢SF µÄ״̬·Ö±ðÊÇ£º
£¨1£© ZCOS=0010 £¨2£© ZCOS=0000 £¨3£© ZCOS=0010 £¨4£© ZCOS=0101 £¨5£© ZCOS=0001
38 ÒÑÖª£¨AX£©= 836BH£¬X·Ö±ðÈ¡ÏÂÁÐÖµ£¬Ö´ÐС°TEST AX, X¡±ºó£¬±ê־λZF¡¢
CF¡¢OF¡¢SF¸÷ÊÇʲô£¿
£¨1£©X=0001H £¨2£©X=8000H £¨3£©X=0007H £¨4£©X=0FFFFH £¨5£©X=0 ´ð£ºÉÏÊöÖ¸ÁîÖ´Ðк󣬱ê־λZF¡¢CF¡¢OF¡¢SF µÄ״̬·Ö±ðÊÇ£º
£¨1£© ZCOS=0000 £¨2£© ZCOS=0001 £¨3£© ZCOS=0000 £¨4£© ZCOS=0001 £¨5£© ZCOS=1000
39 ²âÊÔÃûΪXµÄÒ»¸ö×Ö½Ú£¬Èç¹ûXµÄµÚ1£¬3λ¾ùΪ1£¬×ªÒƵ½L1£¬Èç¹ûÖ»ÓÐÒ»
λΪ1£¬×ªÒƵ½L2£¬Èç¹ûÁ½Î»È«Îª0£¬×ªÒƵ½L3¡£Ð´³ö¶ÔÓ¦µÄÖ¸ÁîÐòÁС£ ´ð£º MOV AL, X AND AL, 0000 1010B JZ L3 CMP AL, 0000 1010B JE L1 JMP L2
40 ¼ÙÉèXºÍX+2×Öµ¥Ôª´æ·ÅÓÐË«¾«¶ÈÊýP£¬YºÍY+2×Öµ¥Ôª´æ·ÅÓÐË«¾«¶ÈÊýQ£¬
ÏÂÃæ³ÌÐòÍê³ÉÁËʲô¹¤×÷£¿ MOV DX, X+2 MOV AX, X £»Ë«¾«¶ÈÊýPËÍÈëDX, AX
ADD AX, X ADC DX, X+2 £»¼ÆËã2*PËÍÈëDX, AX
CMP DX, Y+2 £»2PÓëQµÄ¸ßλ±È½Ï JL L2 £»2PQ£¬×ªL1 £¨Z=1£© CMP AX, Y £»Èç¹û¸ßλÏàµÈ£¬Ôò±È½ÏµÍλ JBE L2 £»2PµÄµÍλСÓÚµÈÓÚQµÄµÍλ£¬×ªL2£¨Z=2£© L1: MOV Z, 1 JMP SHORT EXIT L2: MOV Z, 2
EXIT: ??
´ð£º³ÌÐò¸ù¾Ý2PÓëQµÄ´óС£¬È·¶¨ZµÄÖµ¡£ Èç¹û2P¡ÜQ£¬ÔòZ=2 Èç¹û2P>Q£¬ ÔòZ=1 Çë²ÎÔijÌÐò×¢½â
41 ±àдָÁîÐòÁУ¬½«AXºÍBXÖнϴóµÄ¾ø¶ÔÖµ´æÈëAX£¬½ÏСµÄ¾ø¶ÔÖµ´æÈëBX¡£ ´ð£º AND AX, AX
JGE SKIP1 NEG AX SKIP1: AND BX, BX JGE SKIP2 NEG BX SKIP2: CMP AX, BX JGE SKIP3 XCHG AX, BX SKIP3: ??
42 ±àдָÁîÐòÁУ¬±È½ÏAX¡¢BXÖеÄÊýµÄ¾ø¶ÔÖµ£¬¾ø¶ÔÖµ½Ï´óµÄÊý´æÈëAX£¬¾ø
¶ÔÖµ½ÏСµÄÊý´æÈëBX¡£ ´ð£º PUSH AX PUSH BX
AND AX, AX JGE SKIP1 NEG AX SKIP1: AND BX, BX JGE SKIP2 NEG BX SKIP2: CMP AX, BX POP BX POP AX JGE SKIP3 XCHG AX, BX SKIP3: ??
43 ±àдָÁîÐòÁУ¬Èç¹ûAL¼Ä´æÆ÷´æ·ÅµÄÊÇСд×Öĸ£¬°ÑËüת»»³É´óд×Öĸ£¬·ñ
Ôò²»¸Ä±äALÄÚÈÝ¡£ ´ð£º CMP AL, ¡®a¡¯ JB DONE CMP AL, ¡®z¡¯ JA DONE SUB AL, ¡®a¡¯-¡®A¡¯ DONE: ??