xin微机原�与汇编语言程�设计 - 百度文库

ʵÑéÆß µ¥ÖØÑ­»·³ÌÐòÉè¼Æ £¨2ѧʱ£©

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

1.ÕÆÎÕµ¥ÖØÑ­»·³ÌÐòÉè¼ÆµÄ·½·¨ 2.ÕÆÎÕÕýÈ··ÖÅäÓëʹÓüĴæÆ÷¡£ 3.ÕÆÎÕ¿ØÖÆÑ­»·µÄ·½·¨¡£

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

1¡¢±àÖÆ³ÌÐòʵÏÖ½«LISTÊý×éÖеÄ×î´óÖµ´æÈëMAXµ¥Ôª£¬²¢ÔÚÆÁÄ»ÉÏÏÔʾ×î´óÖµ£¬Êý×éÔªËØÎªÎÞ·ûºÅ×ÖÊý¾Ý£¬Êý¾Ý¸öÊýÔÚCNTµ¥ÔªÖС£ ¡¾·ÖÎö¡¿:¸ù¾ÝÌâÒâ,¿É°ÑµÚÒ»¸öÊýÏÈ·ÅÈëAX¼Ä´æÆ÷,½«AXÖеÄÊýÓëºóÃæµÄCNT-1¸öÊý½øÐбȽÏ,Èç¹ûAXÖеÄÊý½ÏС,ÔòÁ½Êý½»»»Î»ÖÃ;Èç¹ûAXÖеÄÊý´óÓÚµÈÓÚÏà±È½ÏµÄÊý,ÔòÁ½Êý²»½»»»Î»ÖÃ,ÔڱȽϹý³ÌÖÐ,AXʼÖÕ±£³Ö½Ï´óµÄÊý,±È½ÏCNT-1´Î,Ôò×î´óÕß±ØÔÚAXÖÐ,×îºó°ÑAXÖеÄÊýËÍÈëMAXµ¥Ôª¡£

²Î¿¼³ÌÐò£º(ÇëͬѧÃDz¹³äÏÔʾ³ÌÐò¶Î) DATAS SEGMENT

out1 db 10 dup(?)

list dw 10,59,421,6,8 ;´Ë´¦ÊäÈëÊý¾Ý¶Î´úÂë cn dw ($-list)/2 max dw ?

DATAS ENDS

STACKS SEGMENT

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

CODES SEGMENT

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

MOV AX,DATAS MOV DS,AX

lea si,list;´Ë´¦ÊäÈë´úÂë¾Ý¶Î´úÂë mov cx,cn mov ax,[si] dec cx add si,2 a1:cmp ax,[si]

jae small mov ax,[si]

33

small:

add si,2 loop a1 mov max,ax lea si,out1+3 next:

mov dx,0 mov bx,10

div bx;(ax)=ÉÌ,(dx)=ÓàÊý or dl,30h

mov out1[si],dl dec si cmp ax,0 jnz next

mov out1+4,byte ptr'$' lea dx,out1 mov ah,9 int 21h MOV AH,4CH INT 21H CODES ENDS

END START

ÔËÐнá¹û 421

2¡¢ÉèÓÐN¸öÊý£¬Á¬Ðø´æ·ÅÔÚÒÔBUFΪÊ×Ö·µÄ×Ö´æ´¢ÇøÖС£ÊÔ±àд³ÌÐò£¬Í³¼ÆÆäÖÐ×î¸ß6λΪȫ1µÄÊýµÄ¸öÊý£¬²¢½«Í³¼Æ½á¹ûËÍÈëÆÁÄ»ÏÔʾ¡£ DATAS SEGMENT

buf dw 5678,5946,0fc41h,1234;´Ë´¦ÊäÈëÊý¾Ý¶Î´úÂë cn dw ($-buf)/2 DATAS ENDS

STACKS SEGMENT

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

CODES SEGMENT

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

MOV AX,DATAS MOV DS,AX

lea si,buf;´Ë´¦ÊäÈë´úÂë¾Ý¶Î´úÂë mov cx,cn mov dl,0 poa:mov ax,[si]

34

and ax,0fc00h cmp ax,0fc00h jnz next

inc dl;(ͳ¼Æ¸ß6λΪ1) next:add si,2 loop poa mov al,dl mov ah,0 mov bl,10

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 CODES ENDS

END START ÔËÐнá¹û 01

3¡¢±àдһ¸öÏòÓû§Ìṩָ¶¨×Ö·ûµÄASCIIÂëµÄ³ÌÐò¡£ÒªÇó£ºÈôÓû§ÐèÒªÖªµÀijһ¸ö×Ö·ûµÄASCIIÂ룬Ôò´Ó¼üÅ̼üÈë¸Ã×Ö·û¡£´Ëʱ£¬³ÌÐò½«¸Ã×Ö·ûµÄASCIIÂë°´Ê®Áù½øÖÆÊýÐÎʽÔÚÏÔʾÆ÷ÉÏÊä³ö£¬ÏÔʾ¸ñʽÈçÏÂËùʾ£º THE ASCII CODE OF A IS 41H THE ASCII CODE OF 7 IS 37H THE ASCII CODE OF CR£¨¼´»Ø³µ)

µ±¼üÈëµÄÊǻسµÊ±£¬Ôò²»ÏÔʾÆäASCIIÂ𣬽áÊø³ÌÐòÖ´ÐУ¬·µ»ØDOS״̬¡£ ×¢Òâ×ÖĸAºÍÊý×Ö7ÊÇ´Ó¼üÅÌÉÏÊäÈë¡£ DATAS SEGMENT

tab db '0123456789ABCDEF';´Ë´¦ÊäÈëÊý¾Ý¶Î´úÂë OUT1 DB 0DH,0AH,'THE ASCII CODE 0F $' OUT2 DB 'IS',0,0,'H$' DATAS ENDS

STACKS SEGMENT

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

CODES SEGMENT

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

35

START:

MOV AX,DATAS MOV DS,AX

LEA BX,TAB;´Ë´¦ÊäÈë´úÂë¾Ý¶Î´úÂë LOP:LEA DX,OUT1 MOV AH,9 INT 21H MOV AH,1 INT 21H CMP AL,0DH JE EXIT MOV DH,AL AND AL,0FH XLAT

MOV OUT2+3,AL MOV AL,DH MOV CL,4 SHR AL,CL XLAT

MOV OUT2+2,AL LEA DX,OUT2 MOV AH,9 INT 21H JMP LOP EXIT:

MOV AH,4CH INT 21H CODES ENDS END START

4¡¢ÊÔ±àд³ÌÐò£¬½«ÒÔBUFAΪÊ×Ö·µÄ×Ö½Ú´æ´¢Çø´æ·ÅµÄ10¸öδѹËõBCDÂëÒÔÏà ·´µÄ˳ÐòË͵½ÒÔBUFBΪÊ×Ö·µÄ×Ö½Ú´æ´¢ÇøÖУ¬²¢½«Á½¸ö´æ´¢ÇøÖеÄÊý×Ö´®·ÖÁ½ÐÐÏÔʾ³öÀ´¡£

·ÖÎö£º¼Ä´æÆ÷·ÖÅäÈçÏ£º

CX£ºÑ­»·´ÎÊý¼ÆÊýÆ÷£¬³õֵΪ10

SI£ºÈ¡ÊýÖ¸Õ룬³õÖµÖ¸ÏòBUFA£¬Ã¿Ñ­»·Ò»´ÎÖ®ºó£¬ÆäÖµÔö1 DI£ºËÍÊýÖ¸Õ룬³õÖµÖ¸ÏòBUFB+9£¬Ã¿Ñ­»·Ò»´ÎÖ®ºó£¬ÆäÖµ¼õ1 DL£º´æ·ÅÒª´«Ë͵ÄÊý

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

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

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

¡¾ÊµÑé²½Öè¡¿

1¡¢È·¶¨Ëã·¨£¬»­³ö³ÌÐòÁ÷³Ìͼ¡£

36

ÁªÏµ¿Í·þ£º779662525#qq.com(#Ìæ»»Îª@)