/ASM _ c/blog/static/2482031132015581
서브루틴을 사용하면 다음과 같이 번거로울 수 있습니다.
데이터 세그먼트
ARRAY 1? DW? 0,? -1,? 2,? 3,? 4,? -5,? 6,? -7,? 8? ,? 9,? -10
세어? EQU? $? -응? 배열 1
ARRAY2? DW? 20? DUP (? ); 절대값을 찾은 후 저장된 새 배열.
LENDW 새 배열 길이?
MSG 1DB? 13,? 10,? 전에? 정렬? :? $'
MSG2DB? 13,? 10,? AfterSort? :? $'
데이터? 끝
코드? 세그먼트
가정? CS:? 야드,? DS:? 데이터
시작:
MOVAX,? 데이터?
MOVDS,? 삭감
모바,? 09H
리드 x,? MSG 1
INT2 1H? 을 눌러 섹션을 인쇄할 수도 있습니다 프롬프트 문자열 표시 MSG 1
레이스? 배열 1
전화하세요? 출력; 출력 배열 서브루틴 OUTPUT 을 호출하여 원시 데이터를 표시합니다.
전화하세요? 절대적으로요? 을 눌러 섹션을 인쇄할 수도 있습니다 Absolute 서브루틴을 호출하여 절대값을 구합니다.
전화하세요? 정렬? 을 눌러 섹션을 인쇄할 수도 있습니다 정렬 서브루틴 sort 를 호출하여 배열을 정렬합니다.
모바,? 09H
리드 x,? MSG2
INT2 1H? 을 눌러 섹션을 인쇄할 수도 있습니다 프롬프트 문자열 MSG2 표시?
레이스? 배열 2
전화하세요? 출력; 출력 배열 하위 프로그램 OUTPUT 을 호출하여 절대값을 구한 후의 데이터를 표시하시겠습니까?
종료:
모바,? 4CH
INT2 1H? 을 눌러 섹션을 인쇄할 수도 있습니다 마스터 프로그램이 DOS 를 반환합니다
을 눌러 섹션을 인쇄할 수도 있습니다 -응?
을 눌러 섹션을 인쇄할 수도 있습니다 하위 프로그램 이름: 정렬
을 눌러 섹션을 인쇄할 수도 있습니다 기능:?
정렬? PROC? 근처?
을 눌러 섹션을 인쇄할 수도 있습니다 여기에 코드를 추가하십시오.
MOVCX,? 숫자를 세다
SHRCX,? 1
DECCX
S0:? 밀어? CX
모프디? 국제 측정 단위계
S 1:? MOVAX,? [디]
CMPAX,? 디? +? 2]
JAS3
XCHG? 엑스,? 디? +? 2]
XCHG? 엑스,? [디]
S3:? ADDDI? 2
순환? S 1
POPCX
순환? S0?
물에 담그면 부드러워진다
정렬? 엔디피
을 눌러 섹션을 인쇄할 수도 있습니다 -응?
을 눌러 섹션을 인쇄할 수도 있습니다 하위 프로그램 이름: 절대
을 눌러 섹션을 인쇄할 수도 있습니다 기능: 절대값 찾기?
절대적으로요? PROC? 가까운
을 눌러 섹션을 인쇄할 수도 있습니다 여기에 코드를 추가하십시오.
레이스? 배열 1
리드 I? 배열 2
MOVCX,? 숫자를 세다
SHRCX,? 1
ABS:
MOVAX,? [서]
CMPAX,? 0
JGEABS2
네게스
ABS2:
모브 [디],? 삭감
ADDSI? 2
ADDDI? 2
순환? 안티 록 브레이크
물에 담그면 부드러워진다
절대적으로요? ENDP?
을 눌러 섹션을 인쇄할 수도 있습니다 -응?
을 눌러 섹션을 인쇄할 수도 있습니다 하위 프로그램 이름: 출력
을 눌러 섹션을 인쇄할 수도 있습니다 기능: 출력 배열
출력? PROC? 근처?
을 눌러 섹션을 인쇄할 수도 있습니다 여기에 코드를 추가하십시오.
모바,? 2
MOVDL,? 13
INT2 1H
MOVDL,? 10
INT2 1H
MOVCX,? 숫자를 세다
SHRCX,? 1
ZH3:
MOVAX,? [서]
CMPAX,? 0
JGEZH0
네게스
MOV[SI],? 삭감
모바,? 2
MOVDL,? -'
INT2 1H
Zh0: 모바x,? [서]
MOVBX,? 10
밀어? CX
MOVCX,? 0
ZH 1:MOVDX,? 0
DIVBX
ADDDL,? 0'
밀어? 고급 (deluxe 의 약자)
INCCX
CMPAX,? 0
JNZZH 1
모바,? 2
ZH2:POPDX
INT2 1H
순환? ZH2
POPCX
MOVDL,? ?'
INT2 1H
ADDSI? 2
순환? ZH3
물에 담그면 부드러워진다
출력? 엔디피
을 눌러 섹션을 인쇄할 수도 있습니다 --
공단
끝 시작