xin΢»úÔ­ÀíÓë»ã±àÓïÑÔ³ÌÐòÉè¼Æ ÏÂÔØ±¾ÎÄ

int 21h

MOV AH,4CH INT 21H CODES ENDS END START 2¡¢±àÒ»¶Î³ÌÐò£¬ÔÚÄÚ´æÖÐ×Ô SQTAB µØÖ·¿ªÊ¼µÄÁ¬Ðø 10 ¸öµ¥ÔªÖдæ·Å 0-9 µÄƽ·½Öµ¡£ÒªÇó´Ó¼üÅÌÊäÈë1λÊý£¬ÀûÓüòµ¥µÄ²é±í·¨Ö¸¶¨Êý£¨ 0-9 £©µÄƽ·½Öµ£¬²¢½«ËùÇ󯽷½Öµ´æÈë RESULT µ¥Ôª¡£µ÷ÊÔÔËÐÐʱ£¬Çë²ÉÓÃÁ½ÖÖ·½·¨£º

£¨1£©µ÷ÓÃDEBUG³ÌÐò²é¿´ÔËÐнá¹û²¢¼Ç¼ÿ²½ÔËÐнá¹û £¨2£©½«±í´ïʽµÄÖµÔÚÆÁÄ»ÉÏÏÔʾ³öÀ´ DATAS SEGMENT

sqtab db 0,1,4,9,16,25,36,49,64,81 ;´Ë´¦ÊäÈëÊý¾Ý¶Î´úÂë DATAS ENDS

STACKS SEGMENT

;´Ë´¦ÊäÈë¶ÑÕ»¶Î´úÂë STACKS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS,SS:STACKS START:

MOV AX,DATAS MOV DS,AX

mov ah,1;´Ë´¦ÊäÈë´úÂë¾Ý¶Î´úÂë int 21h and al,0fh lea bx,sqtab

xlat;ƽ·½ÖµËÍÈëALÖÐ mov bl,10 mov ah,0

div bl;(AL)=ʮ룬(AH)=¸öλ mov bh,ah or al,30h mov dl,al mov ah,2 int 21h or bh,30h mov dl,bh mov ah,2 int 21h MOV AH,4CH INT 21H

17

CODES ENDS END START ÔËÐнá¹û416

3¡¢ÔĶÁÏÂÁгÌÐò£¬Ö¸³ö´Ë³ÌÐòÖ´ÐнáÊøºó£¬ÏÔʾÆ÷ËùÏÔʾµÄÄÚÈݲ¢ÔÚÿÌõÖ¸Áîºó¼ÓÉÏ×¢ÊÍ¡£

data segment num db 00111001

buf db 0ah,0dh,¡®(NUM)=¡¯ buf0 db 4 dup (?) data ends code segment

assume cs:code,ds:data begin:mov ax,data mov ds,ax lea di,buf0 mov al,num mov cl,4 shr al,cl or al,30h mov [di],al inc di

mov al,num and al,0fh or al,30h mov [di],al inc di

mov byte ptr [di], ¡®H¡¯ inc di

mov byte ptr [di], ¡®$¡¯ lea dx,buf mov ah,9 int 21h mov ah,4ch int 21h code ends

end begin ÔËÐнá¹û=39H

¡¾Ô¤Ï°ÒªÇó¡¿

1£®×ÐϸÔĶÁ¿Î±¾¼°ÏàÓ¦½Ì²Ä¡£

2£®²ÎÕÕ³ÌÐò¿òͼ±àÖÆÔ´³ÌÐò£¬×¼±¸ºÃ¶à×éÔËËãÊý¾Ý£¬ÒÔ¹©Ð£Ñé¡£ ¡¾ÊµÑé²½Öè¡¿

1¡¢È·¶¨Ëã·¨£¬»­³ö³ÌÐòÁ÷³Ìͼ¡£ 2¡¢ÀûÓÃÎı¾±à¼­³ÌÐò£¬½¨Á¢Ô´Îļþ¡£

18

3¡¢ÀûÓûã±à³ÌÐòMASM¶ÔÔ´³ÌÐò»ã±à£¬ÐγÉÄ¿±êÎļþ 4¡¢ÀûÓÃLINK¶ÔÄ¿±êÎļþ½øÐÐÁ´½Ó£¬ÐγɿÉÖ´ÐÐÎļþ¡£

5¡¢ÔËÐпÉÖ´ÐÐÎļþ²¢Ð´³öÔËÐнá¹û£¬Èç¹ûÓдíÎó£¬ÀûÓÃDEBUGÈí¼þ½øÐе÷ÊÔ¡£

¡¾Ë¼¿¼Ìâ¡¿

1¡¢¼Ä´æÆ÷BXÖÐÓÐ4λ0~9µÄÊ®ÁùλÊý(Èç9876H),±àд³ÌÐò¶Î,½«Æäת»»Îª¶ÔÓ¦µÄASCIIÂë,°´´Ó¸ßµ½µÍµÄ˳Ðò·Ö±ð´æÈëAH,AL,BH,BLÕâËĸö¼Ä´æÆ÷ÖÐ. ÇëͬѧÃÇÐ޸ijÌÐò½«×ª»»µÄASCIIÂëÔÙÆÁÄ»ÉÏÏÔʾ¡£ da segment xx DW 9876H da ENDS code segment

assume cs:code,DS:da begin:mov AX,DA

mov DS,AX mov bx,xx mov dx,xx and bx,0f000h mov cl,4 shr bx,cl

mov ah,bh ;high 15~12 add ah,30h mov bx,xx and bx,0f00h

mov al,bh ;high 8~11 add al,30h mov dx,xx and dx,00f0h shr dx,cl mov bh,dl

add bh,30h ;high 4~7 mov dx,xx and dx,000fh

mov bl,dl;high 0~3 add bl,30h code ends

end begin

2£®ÔĶÁÏÂÁгÌÐò£¬Ö¸³ö´Ë³ÌÐòËùÍê³É¹¦ÄÜ£¬²¢Ö¸³öÔËËã½á¹û´æ·ÅÔںδ¦¡£ DATA SEGMENT DA DW 34 DATA ENDS CODE SEGMENT

19

ASSUME CS£ºCODE£¬DS£ºDATA START£º MOV AX£¬DATA MOV DS£¬AX

MOV SI£¬OFFSET DA MOV AL, BYTE PTR [SI] MOV BL,10 MUL BL

MOV [SI]£¬AX MOV AH£¬4CH INT 21H CODE ENDS

END START

¡¾ÊµÑ鱨¸æÒªÇó¡¿

1¡¢¼Ç¼ʵÑé²½ÖèºÍ³öÏÖµÄÏÖÏ󣬰´ÕÕÒªÇóд³öÏÔʾ½á¹û£¬Ô´³ÌÐò¼ÓÉÏ×¢ÊÍ¡£ 2¡¢±È½ÏʵÑé¼Ç¼ºÍÀíÂÛ·ÖÎöµÄ½á¹ûÊÇ·ñÏàͬ£¬Èç¹û²»Í¬ÕÒ³ö²î±ð²¢·ÖÎöÔ­Òò¡£

3¡¢»Ø´ð˼¿¼Ì⣬дʵÑ鱨¸æ£¬»­³öËã·¨Á÷³Ìͼ£¬×ܽ᱾´ÎʵÑéÌå»á¡£

ʵÑéËÄ DOSϵͳ¹¦Äܺŵ÷ÓÃ

¡¾ÊµÑéÄ¿µÄ¡¿

1 ¡¢ÕÆÎÕ DOS ϵͳ¹¦Äܵ÷ÓõÄʹÓ÷½·¨¡£ÕÆÎÕ½ÓÊܼüÅÌÊý¾ÝµÄ·½·¨¡£

ѧ»á½«¼üÅÌÊý¾ÝÏÔʾʱÐëת»»ÎªASICIIÂëµÄÔ­Àí¡£

2¡¢½øÒ»²½ÊìϤµÄÓ¦ÓÃÊý¾Ý´«ËÍ¡¢Êý¾ÝÔËËã¡¢Âß¼­ÔËËãµÈÏà¹ØÖ¸ÁîµÄʹÓà 3¡¢¼ÌÐøÊìϤµ÷ÊÔ¹¤¾ßDEBUGµÄÓ¦ÓÃ

4¡¢ÊìϤ»ã±àÓïÑԱ༭¡¢»ã±à¡¢Á´½ÓºÍµ÷ÊÔµÄÈ«²¿¹ý³Ì

¡¾ÊµÑéÄÚÈÝ¡¿

1 ¡¢±àд³ÌÐòʵÏÖ´Ó¼üÅÌÉÏÊäÈë2¸ö1λʮ½øÖÆÊýÏà¼ÓºóÊä³ö£¬ÒªÇóÓн»»¥½ç

Ãæ£¨ÀýÈçÏÔʾ5+8=13£© DATAS SEGMENT input db 'input 0-9:$'

buf db 0,'+',0,'=',0,0,'$';´Ë´¦ÊäÈëÊý¾Ý¶Î´úÂë DATAS ENDS

20