xx dw ?
inerr db 0ah,0dh,input error! try again,0ah,0dh,'$'
DATAS ENDS
STACKS SEGMENT
db 200 dup(0);´Ë´¦ÊäÈë¶ÑÕ»¶Î´úÂë STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS START:
MOV AX,DATAS MOV DS,AX
next: mov dx,offser input;´Ë´¦ÊäÈë´úÂë¾Ý¶Î´úÂë mov ah,9 int 21h mov ah,1 int 21h cmp al,'0' jb err cmp al,'9' ja err add al,0fh mov x,al xor ebx,ebx mov bl,al
mov ax,tab[ebx*2] mov xx,ax exit: MOV AH,4CH INT 21H jmp enxt
CODES ENDS END START
4¡¢ÉèTAB×Ö½Ú´æ´¢ÇøÖдæ·Å×Å0¡ª9µÄƽ·½Öµ£¬ÊÔ±àдһ³ÌÐòʵÏÖÒÔϹ¦ÄÜ£º´Ó¼üÅÌÉÏÊäÈëÒ»¸öÊýX£¨0<=X<=9£©,ÊÔÀûÓÃÆ½·½±í¼ÆËãËüµÄƽ·½Öµ²¢½«½á¹ûÔÚÏÔʾÆ÷ÉÏÏÔʾ³öÀ´¡£ÆäÏÔʾ½á¹û¸ñʽΪ£º 2*2=4 5*5=25
A ILEGAL DIGIT! 9*9=81
°´»Ø³µ¼ü½áÊø¡£
29
¡¾Ô¤Ï°ÒªÇó¡¿
1¡¢×ÐϸÔĶÁ¿Î±¾¼°ÏàÓ¦½Ì²Ä¡£
2¡¢²ÎÕÕ³ÌÐò¿òͼ±àÖÆÔ´³ÌÐò£¬×¼±¸ºÃ¶à×éÔËËãÊý¾Ý£¬ÒÔ¹©Ð£Ñé¡£
¡¾ÊµÑé²½Öè¡¿
1¡¢È·¶¨Ëã·¨£¬»³ö³ÌÐòÁ÷³Ìͼ¡£ 2¡¢ÀûÓÃÎı¾±à¼³ÌÐò£¬½¨Á¢Ô´Îļþ¡£
3¡¢ÀûÓûã±à³ÌÐòMASM¶ÔÔ´³ÌÐò»ã±à£¬ÐγÉÄ¿±êÎļþ 4¡¢ÀûÓÃLINK¶ÔÄ¿±êÎļþ½øÐÐÁ´½Ó£¬ÐγɿÉÖ´ÐÐÎļþ¡£
5¡¢ÔËÐпÉÖ´ÐÐÎļþ£¬Èç¹ûÓдíÎó£¬ÀûÓÃDEBUGÈí¼þ½øÐе÷ÊÔ ¡¾Ë¼¿¼Ìâ¡¿
1£®ÊÔ·ÖÎöÏÂÁгÌÐò¶Î¡£ ADD AX£¬BX JNO L1 JNC L2
SUB AX£¬BX JNC L3 JNO L4
JMP SHORT L5
Èç¹ûAXºÍBXµÄÄÚÈݸø³öÈçÏ£º
AX BX £¨1£©14C6 80DC £¨2£©B568 54B7 £¨3£©42C8 608D £¨4£©D023 9FD0 £¨5£©9FD0 D023
ÎʸóÌÐò·Ö±ðÔÚÉÏÃæ5ÖÖÇé¿öÏÂÖ´Ðк󣬳ÌÐòתÏòÄÄÀÇëÖ±½Ó±ê×¢ÔÚÌâºó¡£
2£®Ö´ÐÐÍê³ÌÐòºó£¬»Ø´ðÖ¸¶¨µÄÎÊÌâ¡£ MOV AX£¬0 MOV BX£¬2 MOV CX£¬50 LP£º ADD AX£¬BX ADD BX£¬2 LOOP LP
ÎÊ£º (1) ¸Ã³ÌÐòµÄ¹¦ÄÜÊÇ£º
(2) ³ÌÐòÖ´ÐÐÍê³Éºó£¬(AX)=( )¡£
¡¾ÊµÑ鱨¸æÒªÇó¡¿
1¡¢¼Ç¼ʵÑé²½ÖèºÍ³öÏÖµÄÏÖÏ󣬰´ÕÕÒªÇóд³öÏÔʾ½á¹û£¬Ô´³ÌÐò¼ÓÉÏ×¢ÊÍ¡£ 2¡¢±È½ÏʵÑé¼Ç¼ºÍÀíÂÛ·ÖÎöµÄ½á¹ûÊÇ·ñÏàͬ£¬Èç¹û²»Í¬ÕÒ³ö²î±ð²¢·ÖÎöÔÒò¡£ 3¡¢Ð´ÊµÑ鱨¸æ£¬»³öËã·¨Á÷³Ìͼ£¬ÔËÐпÉÖ´ÐÐÎļþ²¢Ð´³öÔËÐнá¹û¡£
30
4¡¢»Ø´ð˼¿¼ÌâÎÊÌ⣬×ܽ᱾´ÎʵÑéÌå»á¡£
ʵÑéÁù ·ÖÖ§³ÌÐòÉè¼Æ2£¨2ѧʱ£©
¡¾ÊµÑéÄ¿µÄ¡¿
1¡¢ÊìÁ·ÕÆÎÕÂß¼ÔËËãºÍ×ªÒÆÖ¸Áî 1) Âß¼ÔËËãÖ¸Áî
2)±êºÅºÍÎÞÌõ¼þ×ªÒÆÖ¸Áî 3)±È½ÏÖ¸ÁîºÍÌõ¼þ×ªÒÆÖ¸Áî
2¡¢ÕÆÎÕ·ÖÖ§³ÌÐòÉè¼ÆµÄÔÀíºÍ·½·¨ , ÖØµãÕÆÎÕ¸÷ÖÖ·ÖÖ§³ÌÐòÖÐÐγɺÍÅжÏÌõ¼þ¶ø²úÉúµÄ³ÌÐò¶ÎµÄÉè¼Æ·½·¨ºÍ¼¼ÇÉ
¡¾ÊµÑéÄÚÈÝ¡¿
1¡¢±àÖÆ³ÌÐòʵÏÖÒÑÖªÔÚÄÚ´æÖдÓBLOCKµ¥ÔªÆð´æ·ÅÓÐ20¸ö´ø·ûºÅ×Ö½ÚÊý¾Ý£¬Í³¼ÆÆäÖиºÊýµÄ¸öÊý²¢·ÅÈëCOUNTµ¥Ôª¡£ DATA SEGMENT
BLOCK DB ¨C7£¬1£¬12£¬-90£¬-70£¬34£¬-1£¬56£¬45£¬-12 DB ¨C3£¬-4£¬23£¬0£¬12£¬11£¬-9£¬-8£¬67£¬-56 CN EQU $-BLOCK COUNT DB £¿ DATA ENDS
µ÷ÊÔÔËÐÐʱ£¬Çë²ÉÓÃÁ½ÖÖ·½·¨£º
£¨1£©µ÷ÓÃDEBUG³ÌÐò²é¿´ÔËÐнá¹û²¢¼Ç¼ÿ²½ÔËÐнá¹û£» £¨2£©¸ºÊýµÄ¸öÊýÔÚÆÁÄ»ÉÏÏÔʾ³öÀ´¡£
2¡¢±àÖÆ³ÌÐòʵÏÖÒÑÖªÁ½¸öÎÞ·ûºÅ×ÖÊý¾ÝX¡¢Y·Ö±ð´æ·ÅÔÚADRXºÍADRYµ¥Ôª£¬±àÖÆ³ÌÐò£¬ÈôXÊÇYµÄ±¶Êý£¬ÔòÔÚÏÔʾÆ÷ÉÏÏÔʾ0£¬·ñÔòÏÔʾ1¡£ DATA SEGMENT
ADRX DW 144 ADRY DW 12 DATA ENDS
3¡¢ÊÔ±àд³ÌÐò£¬¶ÔBUF×Ö½Ú´æ´¢ÇøµÄ3¸öÊý½øÐбȽϣ¬²¢°´±È½Ï½á¹ûÏÔʾÈçÏÂÐÅÏ¢£º
£¨1£© Èç¹û3¸öÊý¶¼²»ÏàµÈÔòÏÔʾ0 £¨2£©Èç¹û3¸öÊýÖÐÓÐÁ½¸öÏàµÈÔòÏÔʾ1 £¨3£© Èç¹û3¸öÊý¶¼ÏàµÈÔòÏÔʾ2
£¨Ìáʾ£º×Ô¼º¿ÉÒÔÔÚÊý¾Ý¶ÎÖÐËæÒⶨÒå3¸öÊý¾Ý£¬È»ºó±È½Ï£¬ÈôµÚÒ»ÊýºÍµÚ¶þÊýÏàµÈ£¬½Ó×űȽϵÚÈýÊý£¬ÏàµÈÔòÏÔʾ2£¬·ñÔòÏÔʾ1£»ÈôµÚÒ»ÊýºÍµÚ¶þÊý²»ÏàµÈ£¬½Ó×űȽϵÚÈýÊý£¬ÏàµÈÔòÏÔʾ1£¬·ñÔòÏÔʾ0£©. DATA SEGMENT
BUF DB 50,50,50 DATA ENDS
µ÷ÊÔ³ÌÐò£º·Ö±ðÉèÖõÚ1¸öÊý±ä»¯¡¢µÚ2¸öÊý±ä»¯¡¢µÚ3¸öÊý±ä»¯¡£
31
4¡¢±àÖÆ³ÌÐòʵÏÖÒÑÖªÔÚÊý¾Ý¶ÎÓÐÒ»´ø·ûºÅµ¥×Ö½ÚÊýX£¬ÅÐ¶ÏÆäÕý¸º£¬ÈôΪ¸ºÊý£¬ÇóÆä¾ø¶ÔÖµ²¢·Åµ½Yµ¥Ôª¡£µ÷ÓÃDEBUG³ÌÐò²é¿´ÔËÐнá¹û²¢¼Ç¼ÿ²½ÔËÐнá¹û¡£ ¡¾Ô¤Ï°ÒªÇó¡¿
1¡¢×ÐϸÔĶÁ¿Î±¾¼°ÏàÓ¦½Ì²Ä¡£
2¡¢²ÎÕÕ³ÌÐò¿òͼ±àÖÆÔ´³ÌÐò£¬×¼±¸ºÃ¶à×éÔËËãÊý¾Ý£¬ÒÔ¹©Ð£Ñé¡£
¡¾ÊµÑé²½Öè¡¿
1¡¢È·¶¨Ëã·¨£¬»³ö³ÌÐòÁ÷³Ìͼ¡£ 2¡¢ÀûÓÃÎı¾±à¼³ÌÐò£¬½¨Á¢Ô´Îļþ¡£
3¡¢ÀûÓûã±à³ÌÐòMASM¶ÔÔ´³ÌÐò»ã±à£¬ÐγÉÄ¿±êÎļþ 4¡¢ÀûÓÃLINK¶ÔÄ¿±êÎļþ½øÐÐÁ´½Ó£¬ÐγɿÉÖ´ÐÐÎļþ¡£
5¡¢ÔËÐпÉÖ´ÐÐÎļþ£¬Èç¹ûÓдíÎó£¬ÀûÓÃDEBUGÈí¼þ½øÐе÷ÊÔ
¡¾Ë¼¿¼Ìâ¡¿
1¡¢´Ó¼üÅÌÊäÈëÒ»¸öÊ®Áù½øÖÆÊýÂ룬ת»»³É¶þ½øÖÆÊý·ÅÈëHEXNUMµ¥Ôª£¬ÔÚºáÏßÉÏÌîÈëÊʵ±µÄÓï¾ä¡£
HEXNUM DB £¿ MOV AH£¬ INT 21H CMP AL£¬39H ______ NEXT
SUB AL£¬________ NEXT£ºSUB AL£¬30H
MOV HEXNUM£¬________ HLT
2£®Ö´ÐÐÍê³ÌÐòºó£¬»Ø´ðÖ¸¶¨µÄÎÊÌâ¡£ MOV AX£¬200H MOV BX£¬500H
MOV [BX+10H]£¬30H ADD AX£¬[BX+10H] LEA SI£¬[BX+10H] MOV BX£¬AX ÎÊ£º³ÌÐò¶ÎÖ´Ðкó£º
SI=( ) BX=( )
¡¾ÊµÑ鱨¸æÒªÇó¡¿
1¡¢¼Ç¼ʵÑé²½ÖèºÍ³öÏÖµÄÏÖÏ󣬰´ÕÕÒªÇóд³öÏÔʾ½á¹û£¬Ô´³ÌÐò¼ÓÉÏ×¢ÊÍ¡£ 2¡¢±È½ÏʵÑé¼Ç¼ºÍÀíÂÛ·ÖÎöµÄ½á¹ûÊÇ·ñÏàͬ£¬Èç¹û²»Í¬ÕÒ³ö²î±ð²¢·ÖÎöÔÒò¡£ 3¡¢Ð´ÊµÑ鱨¸æ£¬»³öËã·¨Á÷³Ìͼ£¬ÔËÐпÉÖ´ÐÐÎļþ²¢Ð´³öÔËÐнá¹û¡£ 4¡¢»Ø´ð˼¿¼ÌâÎÊÌ⣬×ܽ᱾´ÎʵÑéÌå»á¡£
32
Ïà¹ØÍÆ¼ö£º