»ã±àÓïÑÔʵÑé8-ÖжϳÌÐòÉè¼Æ ÏÂÔØ±¾ÎÄ

»ã ±à Óï ÑÔ Êµ Ñé ±¨ ¸æ

Assembly Language Programming Lab Reports

______________________________________________________________________________ °à¼¶£º _________ ÐÕÃû£º___________ ѧºÅ£º___________ ʵÑéÈÕÆÚ£º_____________ ѧԺ£º _____¼ÆËã»úÓëͨÐŹ¤³ÌѧԺ____ רҵ£º_______¼ÆËã»ú¿ÆÑ§Óë¼¼Êõ___________

ʵÑé˳Ðò£º___ʵÑé____ ʵÑéÃû³Æ£º____________ÖжϳÌÐòÉè¼Æ________________ ʵÑé·ÖÊý£º_______ ¿¼ÆÀÈÕÆÚ:________ Ö¸µ¼½Ìʦ£º

______________________________________________________________________________

Ò»£®ÊµÑéÄ¿µÄ

1.ÕÆÎÕÖжϵÄÀàÐÍ£¬Èí¼þÖжϺÍÓ²¼þÖжϡ£

2.ÕÆÎÕÖжϴ¦ÀíµÄ¹ý³Ì£¬Àí½âÖжÏÀàÐÍÖµ£¬ÖжÏÏòÁ¿¡£ 3.ÕÆÎÕϵͳÖжÏÒÔ¼°¹¦Äܵ÷Óᣠ4.¿ÉÒÔ×Ô¼ºÉè¼ÆÖжϳÌÐò

______________________________________________________________________________

¶þ£®ÊµÑé»·¾³

²Ù×÷ϵͳ£ºwindows xp ±àÒë³ÌÐò£ºmasm 5.0

______________________________________________________________________________

Èý£®ÊµÑéÔ­Àí

1.CPUÏìÓ¦ÖжϵÄÌõ¼þ (1)µ±Ç°µÄÖ¸ÁîÖÜÆÚ½áÊø

(2)²ÉÑùµ½ÓÐЧµÄÖжÏÇëÇóÐͺÅ

(3)Èç¹ûÊÇ¿ÉÆÁ±ÎµÄÖжÏÇëÇóINTR£¬¼ì²éÖжÏÔÊÐí±êÖ¾IFÊÇ·ñΪ1

(4)CPUÕýÔÚÖ´ÐеijÌÐòÊDz»ÊÇÖжϷþÎñ³ÌÐò£¬»òÕßÊÇÖжÏÓÅÏȼ¶½ÏµÍµÄÖжÏ

·þÎñ³ÌÐò 2.ÖжÏÏìÓ¦¹ý³Ì

(1)Ê×ÏȽ«±êÖ¾¼Ä´æÆ÷FLAGSѹÈë¶ÑÕ» (2)½«TFÓëIFÇåÁ㣬IF=0¼´¹ØÖжÏ

(3)½«ÕýÔÚÔËÐгÌÐòµÄ¶ÏµãCSºÍIPѹÈë¶ÑÕ»

(4)´ÓÖжÏÏòÁ¿±íÖÐÈ¡³öÖжÏÏòÁ¿¸ßÁ½¸ö×Ö½ÚµÄÄÚÈÝËÍÈëCS£¬È¡³öµÍÁ½¸ö×Ö½Ú

µÄÄÚÈÝËÍÈëIP

(5)תµ½ÏàÓ¦ÖжÏÔ´µÄÖжϷþÎñ³ÌÐòÈë¿Ú£¬Ö´ÐÐÖжϴ¦Àí·þÎñ³ÌÐò

______________________________________________________________________________ ËÄ£®ÊµÑé²½Öè¼°½á¹û·ÖÎö 1.ÐÞ¸ÄÒÑÓÐÖжϴ¦Àí³ÌÐò¡£

ÐÞ¸ÄÒÑÓеÄÖжÏint 9h

£¨1£©½«Ô­ÓÐ9ºÅÖжϵijÌÐòÈë¿ÚµØÖ··ÅÔÚÒ»¸öµØ·½±£´æÆðÀ´ £¨2£©±àдÖжϴ¦Àí³ÌÐò£ºint9£»µ÷ÓÃÔ­ÓеÄint9ÖÐ¶Ï £¨3£©½«ÐÂint9ÖжϷþÎñ³ÌÐòËÍÈëÄÚ´æ0000:0200´¦£»

£¨4£©½«int9µÄÈë¿ÚµØÖ·0000:0200´æ´¢ÔÚÖжÏÏòÁ¿±í9ºÅ±íÏîÖС£

Ô´´úÂ룺

code segment

assume cs:code start:

mov ax,0 mov es,ax

mov ax,es:[9+4] mov es:[0200h],ax mov ax,es:[9+4+2] mov es:[0202h],ax cli

mov ax,offset int9 mov es:[9+4],ax mov ax,seg int9 sti

mov dx,offset int9end-offset int9start add dx,16 mov ah,31h mov al,0 int 21h

mov ah,4ch int 21h int9 proc near

int9start: push ax push bx push cx push es mov ax,0 mov es,ax in al,60h pushf

call dword ptr es:[0200h] cmp al,3Bh jne int9iret mov cx,2000 mov ax,0b800h mov es,ax mov bx,1 s:

inc byte ptr es:[bx] add bx,2 loop s int9iret:

pop es pop cx pop bx pop ax iret int9end:nop int9 endp

code ends end start

ÔËÐнá¹û£º

2.д×Ô¼ºµÄÖжÏÀý³Ì

Int 60hÓõ½ÁËdosÖжϵÄint 21h¹¦ÄÜ

£¨1£© Èç¹û´¥·¢¸ÃÖжϣ¬ÔÚÆÁÄ»ÉÏÏÔʾһ´®Ð¦Á³£» £¨2£© Ñ¡Ôñ60HºÅÖжÏÀàÐÍ×÷ΪЦÁ³ÖжÏÀàÐÍ£» £¨3£© ±àдÖжÏ×Ó³ÌÐòsmile_face£¬ÏÔʾһ´®Ð¦Á³£» £¨4£© ½«¸ÃÖжÏ×Ó³ÌÐòµÄÈë¿ÚµØÖ·Ð´ÈëÖжÏÏòÁ¿±íÖÐ

ÉèÖÃÖжÏÏòÁ¿

½«ÔÚDS:DXÖеÄÖжÏÏòÁ¿Ð´ÈëÖжÏÏòÁ¿±íÖС£ ¸ñʽ£ºAH=25H

AL=ÖжÏÀàÐͺŠDS:DX=ÖжÏÏòÁ¿ INT 21H

£¨5£© ±àдӦÓóÌÐò£¬´¥·¢60HºÅÖжϣ» £¨6£© ÖжϽáÊøºó£¬·µ»ØÓ¦ÓóÌÐò¼ÌÐøÖ´ÐУ» £¨7£©°ÑÖжÏ×Ó³ÌÐòפÁôÔÚÄÚ´æÖС£

ÖжÏפÁôÊÇÒ»ÖÖÌØÊâµÄÍ˳ö³ÌÐò¹¦ÄÜ£¬ËüÔÚÍ˳öǰ±£Áô³ÌÐòÕ¼ÓõÄÄڴ棬ʹÕâ

ЩÄÚ´æµ¥Ôª²»±»ÆäËü³ÌÐò¸²¸Ç»òÕ¼Óᣠ¸ñʽ£º AH=31H

AL=0 DX=פÁô³ÌÐò³¤¶È+16 INT 21H

AL=0±íʾ·µ»ØÂë¡£

Ô´´úÂ룺

.model small .stack .code

mess1 db 0ah,0dh,'enter interrupt!',0ah,0dh,'$' mess2 db 'exit interrupt!$'

mess3 db 0ah,0dh, 'continue or quit (c/q) ?$' main proc far start:

mov ax,@code mov ds,ax

mov dx,offset smile_face mov ax,seg smile_face mov ds,ax mov al,60h mov ah,25h int 21h

conti:

mov dx,offset mess1 mov ah,9 int 21h

int 60h

mov dx,offset mess2 mov ah,9 int 21h

mov dx,offset mess3 mov ah,9 int 21h

mov ah,1 int 21h cmp al,'c' je conti mov al,0 mov ah,31h

mov dx,smiend-smigin+16 int 21h main endp

smile_face proc far smigin:

sti

mov cx,10 leng:

mov dl,01h mov ah,2 int 21h loop leng mov dl,0dh int 21h mov dl,0ah int 21h cli iret smiend:nop smile_face endp end start

ÔËÐнá¹û£º

____________________________________________________________________________ Î壮ʵÑéÐĵÃÒÉÎʽ¨Òé

ͨ¹ý±¾´ÎʵÑéµÄѧϰ£¬Á˽âÁËÖжϳÌÐòÉè¼ÆµÄ»ù±¾Ë¼Â·ºÍ·½·¨£¬Ã÷°×ÁËÖжϳÌÐòÔËÐеķ½Ê½£¬Ñ§»áÁ˺ÏÀíʹÓñ£»¤ÏÖ³¡ºÍ»Ö¸´ÏÖ³¡Ê¹³ÌÐòÓÐЧÔËÐС£