?? huibian.asm
字號:
;本試驗的任務是將輸入的已知長度字節數組按遞增排序并顯示結果,然后輸入一個數在該數組中查找。
DATA SEGMENT COMMON
INPUT_MESSAGE DB 'Please input ten numbers(-999 to +999 with "-" or "+"),press "Entey" after input one number:',13,10,'$'
SEARCH_MESSAGE DB 'Please input the number(-999 to +999) you want to search',13,10,'$'
FIND_MESSAGE DB 13,10,'The number is in the arrray ','$'
UNFIND_MESSAGE DB 13,10,'The number is not in the array',13,10,'$'
OUT_MESSAGE DB 'The numbers that from max to min are:',13,10,'$'
IN_ASC_BUF DB 5
DB ?
DB 5 DUP(?)
BIN_BUF1 DW ?
OUTPUT_MESSAGE DB 0AH , 'THE SUM IS:' , '$'
OUT_ASC_SUM DB 4 DUP(?) , '$'
CRLF DB 13,10,'$'
A DB 10 DUP(?)
DATA ENDS
;......................................................
CSEG SEGMENT
MAIN PROC FAR
ASSUME CS:CSEG , DS:DATA
MOV AX , DATA
MOV DS , AX
CALL PAIXU
CALL CHAZHAO
MOV AX,4C00H
INT 21H
MAIN ENDP
PAIXU PROC NEAR
INPUT: MOV AX,DATA
MOV DS,AX
MOV DX , OFFSET INPUT_MESSAGE
MOV AH , 9
INT 21H
MOV DI,0
INA: MOV DX , OFFSET IN_ASC_BUF
MOV AH , 10
INT 21H
MOV CL , IN_ASC_BUF+1
MOV CH , 0
DEC CL
MOV BX , OFFSET IN_ASC_BUF+3
PUSH BX
PUSH CX
L1:
MOV AL , [BX]
AND AL , 0FH
MOV [BX] , AL
INC BX
LOOP L1
POP CX
POP BX
MOV AX , 0
MOV SI , 10
L2:
MUL SI
ADD AL , [BX]
ADC AH , 0
INC BX
LOOP L2
AND AL,7FH
CMP IN_ASC_BUF+2 , '+'
JZ AB
NEG AL
AB: MOV A[DI],AL
ADD DI,1
CMP DI,10
JZ ORDER
MOV AH,9
LEA DX,CRLF
INT 21H
JMP INA
ORDER:
MOV CX,10
DEC CX
LOOP1: MOV DI,CX
MOV BX,0
LOOP2: MOV AL,A[BX]
CMP AL,A[BX+1]
JGE COTINUE
XCHG AL,A[BX+1]
MOV A[BX],AL
COTINUE: ADD BX,1
LOOP LOOP2
MOV CX,DI
LOOP LOOP1
OUTPUT: MOV AH,9
LEA DX,CRLF
INT 21H
MOV AH,9
LEA DX,OUT_MESSAGE
INT 21H
MOV DI,0
OUTPUTONE:
MOV AH,9
LEA DX,CRLF
INT 21H
MOV AL,A[DI]
MOV OUT_ASC_SUM , '+'
CMP AL , 0
JGE L4
NEG AL
MOV OUT_ASC_SUM , '-'
L4:
CBW
MOV BL , 100
DIV BL
ADD AL , 30H
MOV OUT_ASC_SUM+1 , AL
MOV AL , AH
CBW
MOV BL , 10
DIV BL
ADD AL , 30H
MOV OUT_ASC_SUM+2 , AL
ADD AH , 30H
MOV OUT_ASC_SUM+3 , AH
MOV AH,9
LEA DX, OUT_ASC_SUM
INT 21H
ADD DI,1
CMP DI,10
JZ EXIT
JMP OUTPUTONE
EXIT: MOV AH,9
LEA DX,CRLF
INT 21H
MOV AH,9
LEA DX,SEARCH_MESSAGE
INT 21H
MOV DX , OFFSET IN_ASC_BUF
MOV AH , 10
INT 21H
MOV CL , IN_ASC_BUF+1
MOV CH , 0
DEC CL
MOV BX , OFFSET IN_ASC_BUF+3
PUSH BX
PUSH CX
LL1: MOV AL , [BX]
AND AL , 0FH
MOV [BX] , AL
INC BX
LOOP LL1
POP CX
POP BX
MOV AX , 0
MOV SI , 10
LL2: MUL SI
ADD AL , [BX]
ADC AH , 0
INC BX
LOOP LL2
AND AX,7FH
CMP IN_ASC_BUF+2 , '+'
JZ PEXIT
NEG AL
PEXIT:
RET
PAIXU ENDP
CHAZHAO PROC NEAR
SEARCH: MOV DI,0
SEARCHONE: CMP AL,A[DI]
JE EXIT1
ADD DI,1
CMP DI,10
JE EXIT3
JMP SEARCHONE
EXIT1: LEA DX,FIND_MESSAGE
MOV AH,9
INT 21H
JMP CEXIT
EXIT3: MOV AH,9
LEA DX,UNFIND_MESSAGE
INT 21H
JMP CEXIT
CEXIT: RET
CHAZHAO ENDP
CSEG ENDS
END MAIN
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -