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 ÔËÐнá¹û
¡¾Ô¤Ï°ÒªÇó¡¿
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