»ã ±à Óï ÑÔ Êµ Ñé ±¨ ¸æ
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
ÔËÐнá¹û£º
____________________________________________________________________________ Î壮ʵÑéÐĵÃÒÉÎʽ¨Òé
ͨ¹ý±¾´ÎʵÑéµÄѧϰ£¬Á˽âÁËÖжϳÌÐòÉè¼ÆµÄ»ù±¾Ë¼Â·ºÍ·½·¨£¬Ã÷°×ÁËÖжϳÌÐòÔËÐеķ½Ê½£¬Ñ§»áÁ˺ÏÀíʹÓñ£»¤ÏÖ³¡ºÍ»Ö¸´ÏÖ³¡Ê¹³ÌÐòÓÐЧÔËÐС£