CPUÓë»ã±àʵÑéÎåʵÑ鱨¸æ ÏÂÔØ±¾ÎÄ

£¨2£©¡¢Ô´´úÂë

DATAS SEGMENT BUF DB 40

DB ? DB 40 DUP(0) SHUZI DB 10 DUP(0) BIAO DW 0

STRING DB 'input 10 numbers:$' DATAS ENDS

STACKS SEGMENT

STA DW 20H DUP(0) STACKS ENDS

CODES SEGMENT

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

main proc far MOV AX,DATAS MOV DS,AX MOV AX,STACKS MOV SS,AX

LEA BX,STRING ;Êä³ö CALL output CALL HUICHE

CALL input ;ÊäÈë10¸öÊ®½øÖÆÊý CALL HUICHE

CALL change ;½«ASCIIÂëת»» CALL paixu ;½«ÆäÅÅÐò LEA SI,BUF ADD SI,5 MOV DI,10 ABC:

MOV AL,[SI]

CALL output16 ;½«16½øÖÆÊýÊä³ö CALL kongge ADD SI,3 DEC DI JNZ ABC MOV AH,4CH INT 21H main endp

output proc near ;Êä³ö×Ö·û´® MOV DX,BX MOV AH,09H INT 21H RET

output endp

input proc near ;ÊäÈë×Ö·û´® LEA DX,BUF MOV AH,0AH INT 21H RET input endp

HUICHE proc near ;»Ø³µ»»ÐÐ MOV DL,0DH MOV AH,02H INT 21H MOV DL,0AH MOV AH,02H INT 21H RET

HUICHE endp

change proc near ;ASCIIÂëת»» LEA SI,BUF ADD SI,2 MOV CX,10 L1:

AND BYTE PTR [SI],0FH INC SI

AND BYTE PTR [SI],0FH ADD SI,2

LOOP L1 ;±ä³ÉÊ®½øÖÆ LEA SI,BUF ADD SI,2 MOV BL,10