dispa
dispa
dldisp
dldisp1:
dldisp ¢Ç
wdata
.exit 0 ; proc push cx push dx mov cl,4
mov dl,byte ptr wordtemp+1 shr dl,cl call dldisp
mov dl,byte ptr wordtemp+1 and dl,0fh call dldisp
mov dl,byte ptr wordtemp shr dl,cl call dldisp
mov dl,byte ptr wordtemp and dl,0fh call dldisp pop dx pop cx ret endp ; proc push ax or dl,30h cmp dl,39h jbe dldisp1 add dl,7 mov ah,2 int 21h pop ax ret endp end
.model small .stack .data dw 34abh .code .startup push wdata call dispa
17
pop ax ;add sp,2 .exit 0 ; dispa proc push bp mov bp,sp push ax push cx push dx mov ax,[bp+4] mov cl,4 mov dl,ah shr dl,cl call dldisp mov dl,ah and dl,0fh call dldisp mov dl,al shr dl,cl call dldisp mov dl,al and dl,0fh call dldisp pop dx pop cx pop ax pop bp ret dispa endp ; dldisp proc push ax or dl,30h cmp dl,39h jbe dldisp1 add dl,7 dldisp1: mov ah,2 int 21h pop ax ret dldisp endp end 3.36 ½â£º
Èç¹ûÀûÓù²Ïí±äÁ¿´«µÝº¯Êý£¬ÇÒ±äÁ¿¶¨ÒåºÍʹÓò»ÔÚͬһ¸öÔ´³ÌÐòÖУ¬ÐèÒªÀûÓÃ
18
PUBLIC¡¢EXTERNÉùÃ÷¡£
3.37 ½â£º
£¨1£©ºê¶¨ÒåÓÉÒ»¶Ôºê»ã±àαָÁîMACROºÍENDMÀ´Íê³É£¬¸ñʽÈçÏ£º ºêÃû MACRO [Ðβαí] ¡¡ £»ºê¶¨ÒåÌå ENDM ºê¶¨ÒåÖ®ºó¾Í¿ÉÒÔʹÓÃËü£¬¼´ºêµ÷Ó㺠ºêÃû [ʵ²Î±í]
£¨2£©ºêµ÷Óõĸñʽͬһ°ãÖ¸ÁîÒ»Ñù£ºÔÚʹÓúêÖ¸ÁîµÄλÖÃдϺêÃû£¬ºó¸úʵÌå²ÎÊý£»Èç¹ûÓжà¸ö²ÎÊý£¬Ó¦°´ÐβÎ˳ÐòÌîÈëʵ²Î£¬Ò²ÓöººÅ·Ö¸ô
£¨3£©ºêÕ¹¿ª£ºÔÚ»ã±àʱ£¬ºêÖ¸Áî±»»ã±à³ÌÐòÓöÔÓ¦µÄ´úÂëÐòÁÐÌæ´ú£¬Õâ¾ÍÊǺêÕ¹¿ª ºêÕ¹¿ªµÄ¾ßÌå¹ý³ÌÊÇ£ºµ±»ã±à³ÌÐòɨÃèÔ´³ÌÐòÓöµ½ÒÑÓж¨ÒåµÄºêµ÷ÓÃʱ£¬¼´ÓÃÏàÓ¦µÄºê¶¨ÒåÌåÍêÈ«Ìæ´úÔ´³ÌÐòµÄºêÖ¸ÁͬʱÓÃλÖÃÆ¥ÅäµÄʵ²Î¶ÔÐβνøÐÐÈ¡´ú
3.38 ½â£º
ºêµ÷ÓõIJÎÊýͨ¹ýÐβΡ¢Êµ²Î½áºÏʵÏÖ´«µÝ£¬¼ò½ÝÖ±¹Û¡¢Áé»î¶à±ä¡£ºê»ã±àµÄÒ»´óÌØÉ«ÊÇËüµÄ²ÎÊý¡£ºê¶¨Òåʱ¼È¿ÉÒÔÎÞ²ÎÊý£¬Ò²¿ÉÒÔÓÐÒ»¸ö»ò¶à¸ö²ÎÊý£»ºêµ÷ÓÃʱʵ²ÎµÄÐÎʽҲ·Ç³£Áé»î£¬¿ÉÒÔÊdz£Êý¡¢±äÁ¿¡¢´æ´¢µ¥Ôª¡¢Ö¸Á²Ù×÷Â룩»òËüÃǵÄÒ»²¿·Ö£¬Ò²¿ÉÒÔÊDZí´ïʽ£»Ö»ÒªºêÕ¹¿ªºó·ûºÏ»ã±àÓïÑÔµÄÓï·¨¹æÔò¼´¿É¡£
3.39 ½â£º
ºê£º½öÊÇÔ´³ÌÐò¼¶µÄ¼ò»¯£ººêµ÷ÓÃÔÚ»ã±àʱ½øÐгÌÐòÓï¾äµÄÕ¹¿ª£¬²»ÐèÒª·µ»Ø£»²»¼õСĿ±ê³ÌÐò£¬Ö´ÐÐËÙ¶ÈûÓиıä
ͨ¹ýÐβΡ¢Êµ²Î½áºÏʵÏÖ²ÎÊý´«µÝ£¬¼ò½ÝÖ±¹Û¡¢Áé»î¶à±ä
×Ó³ÌÐò£º»¹ÊÇÄ¿±ê³ÌÐò¼¶µÄ¼ò»¯£º×Ó³ÌÐòµ÷ÓÃÔÚÖ´ÐÐʱÓÉCALLÖ¸ÁîתÏò¡¢RETÖ¸Áî·µ»Ø£»ÐγɵÄÄ¿±ê´úÂë½Ï¶Ì£¬Ö´ÐÐËٶȼõÂý ÐèÒªÀûÓüĴæÆ÷¡¢´æ´¢µ¥Ôª»ò¶ÑÕ»µÈ´«µÝ²ÎÊý
Ñ¡Ôñ£ººêÓë×Ó³ÌÐò¾ßÓи÷×ÔµÄÌØµã£¬³ÌÐòÔ±Ó¦¸Ã¸ù¾Ý¾ßÌåÎÊÌâÑ¡ÔñʹÓÃÄÇÖÖ·½·¨¡£Í¨³££¬µ±³ÌÐò¶Î½Ï¶Ì»òÒªÇó½Ï¿ìÖ´ÐÐʱ£¬Ó¦Ñ¡Óúꣻµ±³ÌÐò¶Î½Ï³¤»òΪ¼õСĿ±ê´úÂëʱ£¬ÒªÑ¡ÓÃ×Ó³ÌÐò
3.40 ±àдһ¸öºêÖ¸Áîmove doprnd,soprnd£¬ËüʵÏÖÈÎÒâѰַ·½Ê½µÄ×ÖÁ¿Ô´²Ù×÷ÊýsoprndË͵½Ä¿µÄ²Ù×÷Êýdoprnd£¬°üÀ¨´æ´¢µ¥Ôªµ½´æ´¢µ¥ÔªµÄ´«Ë͹¦ÄÜ¡£ ´ð£º move macro doprnd,soprnd mov ax,soprnd mov doprnd,ax endm
3.41 ¶¨ÒåÒ»¸öºêlogical£¬ÓÃËü´ú±í4ÌõÂß¼ÔËËãÖ¸Áand/or/xor/test¡£×¢ÒâÐèÒªÀûÓÃ3¸öÐÎʽ²ÎÊý£¬²¢¸ø³öÒ»¸öºêµ÷ÓÃÒÔ¼°¶ÔÓ¦ºêÕ¹¿ªµÄÀý×Ó¡£ ´ð£º logical macro lcode,dopd,sopd
19
lcode dopd,sopd endm
ÀýÈ磬Èç¹ûʹÓá°and ax,[bx]¡±Ö¸Á¿ÉÒÔÀûÓøú궨Ò壬д³öºêÖ¸ÁîÈçÏ£º logical and,ax,[bx]
3.42 ½â£º utol macro local next cmp al,¡¯A¡¯ £»Ð¡ÓÚ¡°A¡±²»×ª»» jb next cmp al,¡¯Z¡¯ £»´óÓÚ¡°A¡±²»×ª»» ja next add al,20h £»ÊÇ´óд×ÖĸÔòת»»ÎªÐ¡Ð´×Öĸ next: endm
3.43 ¶¨ÒåÒ»¸öºêmovestr strn,dstr,sstr£¬Ëü½«strn¸ö×Ö·û´ÓÒ»¸ö×Ö·ûÇøsstr´«Ë͵½ÁíÒ»¸ö×Ö·ûÇødstr ½â£º£¨¼ÙÉèËüÃǶ¼ÔÚÊý¾Ý¶Î£© movestr macro strn,dstr,sstr mov cx,ds mov es,cx mov cx,strn mov di,offset dstr mov si,offset sstr cld rep movsb £»£»Öظ´´«ËÍES:[DI]¡ûDS:[SI] endm
µÚÎåÕÂ
5.1 ½â£º
Ö÷´æµÄ×÷Ó㺱£´æÕýÔÚʹÓõġ¢´¦Óڻ״̬µÄ³ÌÐòºÍÊý¾Ý¡£
¸¨´æµÄ×÷Ó㺳¤ÆÚ±£´æ³ÌÐòÎļþºÍÊý¾ÝÎļþ£¬ÔÚÐèҪʱ½«ÕâЩÎļþµ÷ÈëRAMÄÚ´æ²¢¼¤»îʹÓá£
cacheµÄ×÷ÓÃ:Ìá¸ß¶Ô´æ´¢Æ÷µÄ·ÃÎÊËÙ¶È¡£
ÐéÄâ´æ´¢£ºÓÉÈÝÁ¿½ÏСµÄÖ÷´æºÍÈÝÁ¿½Ï´óµÄ¸¨´æ¹¹³É£¬ÆäÄ¿±êÊÇÀ©´ó³ÌÐòÔ±ÑÛÖеÄÖ÷´æÈÝÁ¿¡£
Çø±ð£ºÍ¨¹ý´æ´¢Æ÷·ÃÎÊÖ¸ÁîÓû§¿É¶ÔÖ÷´æ½øÐÐËæ»ú·ÃÎÊ£»Óû§ÀûÓòÙ×÷ϵͳÌṩµÄÓû§ÃüÁîºÍ¹¦Äܵ÷ÓöԸ¨´æ½øÐзÃÎÊ¡£
5.2 ÔÚ°ëµ¼Ìå´æ´¢Æ÷ÖУ¬RAMÖ¸µÄÊÇ Ëæ»ú´æÈ¡´æ´¢Æ÷ £¬Ëû¿É¶Á¿Éд£¬µ«¶ÏµçºóÐÅÏ¢Ò»°ã»á ¶ªÊ§ £»¶øROMÖ¸µÄÊÇ Ö»¶Á´æ´¢Æ÷ £¬Õý³£¹¤×÷ʱֻÄÜ´ÓÖÐ ¶ÁÈ¡ ÐÅÏ¢£¬µ«¶ÏµçºóÐÅÏ¢ ²»»á¶ªÊ§ ¡£ÒÔEPROMоƬ2764ΪÀý£¬Æä´æ´¢ÈÝÁ¿Îª8K¡Á8룬¹²ÓÐ 8 ÌõÊý¾ÝÏß
20