1.레지스터를 이용한 Swap 프로그램
2.Stack을 이용한 Swap 프로그램
CHAR1 = 'a' 라는 변수와
CHAR2 = 'b' 라는 변수를 생성하고,
CHAR1,CHAR2를 차례대로 실행하는 OUTPUT 프로시저를 만들었습니다.
1.레지스터를 이용한 Swap 프로그램
PAGE 60,132
TITLE A04ASM2 (EXE) MOVE AND ADD OPERATION
; -------------------------------------------------------------------------
.MODEL SMALL
.STACK 64
.DATA ;DEFINE DATA
CHAR1 DW 'a' ;변수 1
CHAR2 DW 'b' ;변수 2
; -----------------------------------------------------------------------
.CODE ;코드 세그먼트의 시작입니다.
.386
MAIN PROC FAR
MOV AX,@data ;@data는 데이타 세그먼트
MOV DS,AX ;DS 레지스터에 @data 주소 삽입
MOV ES,AX ;ES 레지스터에 @data 주소 삽입
CALL OUTPUT ;CHAR1, CHAR2 차례대로 출력
MOV AX,CHAR1
MOV BX,CHAR2
MOV CHAR1,BX
MOV CHAR2,AX ;CHAR1, CHAR2 차례대로 출력
CALL OUTPUT ;CHAR1, CHAR2 차례대로 출력
MOV AX,4C00H ;프로그램 종료를 위한 INT 21H 인터럽트 속성 설정
INT 21H ;21H 인터럽트 발생 (프로그램 종료)
MAIN ENDP ;END OF PROCEDURE
; -----------------------------------------------------------------------
; 이곳에 원하는 새로운 프로시저(함수) 삽입 가능
; 사실 프로시저에 대한 설명, 스택에 대한 설명도 하지 않았지만
; 이해하시지 못한다면 그냥 출력루틴이라고 생각하시면 됩니다!.
OUTPUT PROC NEAR
MOV AH,40H ;출력을 위한 40H 인터럽트 속성 설정
MOV BX,01 ;표준 출력을 위한 화면 파일 핸들
MOV CX,1 ;1글자 출력
PUSHA
LEA DX,CHAR1 ;출력을 원하는 변수의 주소값 가져오기
INT 21H ;21H 인터럽트 발생 (문자열 출력)
POPA
LEA DX,CHAR2 ;출력을 원하는 변수의 주소값 가져오기
INT 21H ;21H 인터럽트 발생 (문자열 출력)
RET
OUTPUT ENDP
; -----------------------------------------------------------------------
END MAIN ;END OF PROGRAM
2.Stack을 이용한 Swap 프로그램
PAGE 60,132
TITLE A04ASM2 (EXE) MOVE AND ADD OPERATION
; -------------------------------------------------------------------------
.MODEL SMALL
.STACK 64
.DATA ;DEFINE DATA
CHAR1 DW 'a' ;변수 1
CHAR2 DW 'b' ;변수 2
; -----------------------------------------------------------------------
.CODE ;코드 세그먼트의 시작입니다.
.386
MAIN PROC FAR
MOV AX,@data ;@data는 데이타 세그먼트
MOV DS,AX ;DS 레지스터에 @data 주소 삽입
MOV ES,AX ;ES 레지스터에 @data 주소 삽입
CALL OUTPUT ;CHAR1, CHAR2 차례대로 출력
PUSH CHAR1
PUSH CHAR2
POP CHAR1
POP CHAR2 ;Stack을 이용한 변수 교환
CALL OUTPUT ;CHAR1, CHAR2 차례대로 출력
MOV AX,4C00H ;프로그램 종료를 위한 INT 21H 인터럽트 속성 설정
INT 21H ;21H 인터럽트 발생 (프로그램 종료)
MAIN ENDP ;END OF PROCEDURE
; -----------------------------------------------------------------------
; 이곳에 원하는 새로운 프로시저(함수) 삽입 가능
; 사실 프로시저에 대한 설명, 스택에 대한 설명도 하지 않았지만
; 이해하시지 못한다면 그냥 출력루틴이라고 생각하시면 됩니다!.
OUTPUT PROC NEAR
MOV AH,40H ;출력을 위한 40H 인터럽트 속성 설정
MOV BX,01 ;표준 출력을 위한 화면 파일 핸들
MOV CX,1 ;1글자 출력
PUSHA
LEA DX,CHAR1 ;출력을 원하는 변수의 주소값 가져오기
INT 21H ;21H 인터럽트 발생 (문자열 출력)
POPA
LEA DX,CHAR2 ;출력을 원하는 변수의 주소값 가져오기
INT 21H ;21H 인터럽트 발생 (문자열 출력)
RET
OUTPUT ENDP
; -----------------------------------------------------------------------
END MAIN ;END OF PROGRAM
'Programing > Assembley 16bit' 카테고리의 다른 글
Assembly INT 10 속성들 정리 (0) | 2010.05.31 |
---|---|
Assembly 05. 비디오, 키보드 처리 인터럽트 (0) | 2010.05.31 |
Assembly 03. 조건, 제어문 (0) | 2010.05.10 |
Assembly 02. 어셈블리 기본 구조 및 변수 (3) | 2010.05.10 |
Assembly 01. IBM assembler MASM 설치 (1) | 2010.05.10 |