΢»úÔ­ÀíϰÌâ4-»ã±àÓïÑÔ³ÌÐòÉè¼Æ

MOV [DI],20H INC DI CMP CX,0 JNZ DO

HLT

4.18 ´Ó60H¸öÔªËØÖÐѰÕÒÒ»¸ö×î´óµÄÖµ,²¢·Åµ½ALÖУ¬¼ÙÉèÕâ60¸öÔªËØ·ÅÔÚBUF¿ªÊ¼µÄµ¥ÔªÖС£

¡¾´ð¡¿²Î¿¼³ÌÐò£º DATA SEGMENT

BUF DB 0,1,2,3,4,5,6,7,8,9 ; DATA ENDS

STACK SEGMENT

STA DB 20 DUP (?) TOP EQU $- STA STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK

START: MOV AX,DATA

MOV DS,AX MOV AX,STACK MOV SS,AX MOV AX,TOP MOV SP,AX MOV CX,10 MOV AL,0 LEA BX,BUF

AGAIN: CMP AL,[BX]

JGE NEXT ;´óÓÚµÈÓÚ×ªÒÆ MOV AL,[BX]

NEXT : INC BX

LOOP AGAIN MOV AH,4CH INT 21H

CODE ENDS

END START

4.19 ÅÅÐò³ÌÐòÉè¼Æ: °Ñ±íÖÐÔªËØ°´ÖµµÄ´óСÉýÐòÅÅÁС£ÒªÇóÏÔʾÅÅÐòǰºÍÅÅÐòºóµÄÊý¾Ý¡£ ¡¾´ð¡¿²Î¿¼³ÌÐò£º DATA SEGMENT

TAB DB '8095554'

N=$-TAB

OK DB 0DH,0AH,'OK!$' DATA ENDS

STACK SEGMENT STA DB 20 DUP(?) TOP EQU $-STA STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK

STAR: MOV AX,DATA

MOV DS,AX ;³õʼ»¯Êý¾Ý¶Î MOV AX,STACK MOV SS,AX MOV AX,TOP MOV SP,AX CALL ARRAY

DO: MOV AH,4CH

INT 21H ;·µ»ØDOS

ARRAY PROC NEAR

PUSH AX PUSH BX PUSH CX PUSH DX MOV DL,N-1 ;ÖÃÍâÑ­»·´ÎÊý MOV DH,1 ;ÉèÓн»»»±êÖ¾ XOR BX, BX

UPPER: OR DH,DH ;

JZ DISP ;ÎÞ½»»»,ÒÑÅźÃÐò,Í˳ö MOV DH,0 ;ÎÞ½»»» MOV CX,N-1 SUB CX,BX ;CX=CX-IÄÚÑ­»·´ÎÊý MOV SI,0 ;Ö¸Ïò±íÊ×

INNER: MOV AL,TAB[SI] ;×Ö·ûËÍAL

INC SI ;Ö¸Ïòϸö×Ö·û CMP AL,TAB[SI] ;±È½Ï±íÖÐÏàÁÚ×Ö·û JBE DON ;СÓÚ

XCHG AL,TAB[SI] ;·ñÔò½»»»,´ó×Ö·ûÏ MOV TAB[SI-1],AL ;С×Ö·ûÉϸ¡ MOV DH,1 ;Óн»»»,DH=1

DON: LOOP INNER ;ÄÚÑ­»·½áÊø?CX-1

INC BX ;Ò»´ÎÄÚÑ­»·Íê³É,¼ÓÒ» DEC DL ;ÍâÑ­»·´ÎÊý¼õÒ» CMP DL,0 JNZ UPPER ;ÍâÑ­»·´ÎÊý·ÇÁã,¼ÌÐø

DISP: MOV DX,OFFSET TAB

MOV AH,09H INT 21H ;ÏÔʾÅźÃÐòµÄ×Ö·û POP DX POP CX POP BX POP AX RET

ARRAY ENDP CODE ENDS

END STAR

4.20 ±àдһ¶Î³ÌÐò£¬½ÓÊÕ´Ó¼üÅÌÊäÈëµÄ10¸öÊý£¬ÊäÈë»Ø³µ·û±íʾ½áÊø£¬È»ºó½«ÕâЩÊý¼ÓÃܺó´æÓÚBUFF»º³åÇøÖС£¼ÓÃܱíΪ£ºÊäÈëÊý×Ö£º 0£¬1£¬2£¬3£¬4£¬5£¬6£¬7£¬8£¬9£»ÃÜÂëÊý×Ö£º7£¬5£¬9£¬1£¬3£¬6£¬8£¬0£¬2£¬4¡£ ¡¾´ð¡¿²Î¿¼³ÌÐò£º DATA SEGMENT

TABLE DB 7£¬5£¬9£¬1£¬3£¬6£¬8£¬0£¬2£¬4;ÃÜÂë±í BUFF DB 10 DUP(?) ,'$'´æ·Åת»»Êý×ֵĻº³åÇø DATA ENDS

STACK SEGMENT

STA DB 20 DUP(?)

TOP EQU LENGTH STA STACK ENDS

CODE SEGMENT

MOV AX,STACK MOV SS,AX

MOV DI , OFFSET BUFF LEA BX , TABLE MOV CX£¬0DH

INPUT: MOV AH , 1 £»´Ó¼üÅÌÊäÈë

INT 21H CMP AL£¬0DH ;0DHΪ»Ø³µ·û JZ DONE

SUB AL,30H XLAT ADD AL,30H MOV [DI] , AL INC DI LOOP INPUT

DONE: MOV DX , OFFSET BUFF

MOV AH , 09H INT 21H MOV AH,4CH INT 21H

CODE ENDS

4.21 ±à³ÌÐò´Ó¼üÅ̽ÓÊÕÒ»¸ö4λ16½øÖÆÊý£¬×ª»»Îª10½øÖÆÊýºó£¬ËÍÏÔʾ¡£

¡¾´ð¡¿Ëã·¨:£¨1£©ÏȽ«ÊäÈëµÄÊ®Áù½øÖÆÊýµÄASCIIÂ룬´¦Àí³É16½øÖÆÊý±£´æµ½BXÖУ¬BXÖеÄÊý·¶Î§ÔÚ+32767~-32768Ö®¼ä£»£¨2£©Ïȼì²éBXÖеķûºÅ룬ÒÔ¾ö¶¨Êä³ö¡°+¡±»¹ÊÇ¡°-¡±£»ÈôÊǸºÊý£¬Ó¦ÏÈÇó²¹£¬µÃµ½Ô­Âëºó¼´¿ÉÓëÕýÊý×÷ͳһ´¦Àí¡£×ª»»·½·¨¿ÉÒÔµ÷ÓÃÌâ4.14ÖеÄBINASCII×Ó³ÌÐò¡£

DATA SEGMENT

ADR DB 6 DUP(0),'$' ;Ê®½øÖÆÊýÒÔASCIIÂë´æ´¢ DATA ENDS

STACK SEGMENT

STA DB 20 DUP(0) TOP EQU $- STA STACK ENDS

CODE SEGMENT

ASSUME CS :CODE,DS:DATA,SS:STACK main proc far START: MOV AX,DATA

MOV DS,AX MOV AX,STACK MOV SS,AX MOV AX,TOP MOV SP,AX MOV CX , 4 ;ÊäÈë4´Î MOV DX , CX ;ת»»4´Î MOV BX , 0 ;ÓÃBX±£´æÊäÈëÊý INPUT: MOV AH , 1 ;´Ó¼üÅÌÊäÈë INT 21H

CALL COVERT ;ͨ¹ý×Ó³ÌÐòת»» SHL BX , CL ;×éºÏ³ÉÊ®Áù½øÖÆÊý ADD BL , AL DEC DX JNZ INPUT ;Ñ­»·ÊäÈëËĸöÊý MOV AX,BX LEA DI,ADR

CALL BINASCII ;Ê®Áùλ¶þ½øÖÆÊýת»»ÎªÊ®½øÖÆasciiÂë MOV AH,4CH INT 21H ;·µ»ØDOS

main endp

;-------------------------------------------------------------------

;½«ASCIIÂëת»»Îª16½øÖÆ,Èë¿Ú=AL=asciiÂ룬³ö¿ÚAL=16½øÖÆÊý COVERT PROC CMP AL, '9' ;½«ASCIIÂëת»»Îª16½øÖÆ JBE A2 ;¼üÈëÖµ¡Ü'9'£¨'0'-'9'£©Ôò¼õ30H CMP AL, 'a' ;¼üÈëÖµ£¼'a'('A'-'F') Ôò¼õ37H JB A1 SUB AL , 20H ;ÖµÔÚ'a' -'f'ÔòÏȼõ20H,ÔÙ¼õ37H A1: SUB AL, 7

A2: SUB AL ,30H RET

COVERT ENDP

;----------------------------------------------------------------------------

;×Ó³ÌÐòBINASCII¹¦ÄÜ£º½«16λ¶þ½øÖÆÊýת»»ÎªASCIIÂ룬´æÓÚADR¿ªÊ¼µÄÁ¬Ðø6¸öµ¥Ôª£¬²¢ÏÔʾ

;Èë¿Ú²ÎÊý£ºAX=´ýת»»µÄÊý, Ô¤¶¨ÒåÒ»¸ö»º´æÇøADR£¬7¸ö×Ö½Ú£¬×îÄ©×Ö½ÚΪ'$'×Ö·û¡£ ;³ö¿Ú²ÎÊý£ºDI=ת»»ºÃµÄASCIIÂëÊ×µØÖ·£¬ÏÔʾ¸ÃÊ®½øÖÆÊý¾Ý

BINASCII PROC PUSH BX PUSH CX PUSH DX TEST AX,8000H ;ÅжÏÊý¾ÝµÄ·ûºÅ JNS PLUS

MINUS: MOV BYTE PTR[DI],'-' ;½«·ûºÅ´æ´¢

NEG AX ;ÈçÊǸºÊý,È¡Ïà·´ÊýÈ¥µô·ûºÅλ JMP GO

PLUS: MOV BYTE PTR[DI],'+' ;½«·ûºÅÂë´æ´¢

GO: ADD DI,5 ;DIÖ¸Ïò¸öλ

MOV CX,5 MOV BX,10

LP: MOV DX,0

DIV BX ;Ë㷨Ϊa/10 £¬ÓàÊýΪһ¸öµÍλʮ½øÖÆÊý ADD DL,30H ;ת»»ÎªASCIIÂë MOV BYTE PTR[DI],DL ;´Ó¸öλ¿ªÊ¼´æ´¢ DEC DI LOOP LP MOV DX,DI MOV AH,09H INT 21H ;ÏÔʾ POP DX POP CX POP BX RET

BINASCII ENDP

;------------------------------------------------------ CODE ENDS

END START

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