본문 바로가기
IT/Assembler

[ASM]구구단중 2단의 결과값 구하는 예제소스

by Jang HyunWoong 2014. 12. 19.

; 문제 2단... 
; 2 
; 4 
; 6 
; 8 
; 10 
; 12 
; 14 
; 16 
; 18 

.286 
SSEG SEGMENT STACK 
DB    256 DUP(?) 
SSEG ENDS 

DSEG SEGMENT 

NUM DB 2 ; 2단의 단수 선언 
RESULT DB ?, ?, 0DH, 0AH, '$' 
DIVNUM DB 10 

DSEG ENDS 

CSEG SEGMENT 'CODE' 
ASSUME  CS:CSEG, SS:SSEG, DS:DSEG 

MAIN PROC FAR 

PUSH DS 
PUSH 0 

MOV AX, DSEG 
MOV DS, AX 


MOV BL, 0 ; 증가하는 값의 초기화 
MOV CX, 9 ; 9번반복 
L1: 
ADD BL, 1 ; 1씩 증가하는 값 

MOV AL, BL ; 곱하는 값은 AL 그래서 BL의 값을 넣어준다. 
MUL NUM  ; 결과는 AX에 저장이 된다. 
;---------------------------- AL*NUM = AX 
; 00001001 (1BYTE) 
; 00000000 00001001 (2BYTE) <- AX 
CMP AL, 10 
JL L2 
; 10이상인경우 
DIV DIVNUM 
MOV RESULT, AL 
ADD RESULT, '0' 
MOV RESULT+1, AH 
ADD RESULT+1, '0' 

JMP L3 
L2: 
MOV RESULT, ' ' 
MOV RESULT+1, AL 
ADD RESULT+1, '0' 

L3: 
LEA DX, RESULT 
MOV AH, 09H 
INT 21H 

LOOP L1 

RET 

MAIN ENDP 
CSEG ENDS 
END MAIN

반응형

'IT > Assembler' 카테고리의 다른 글

1부터 5까지의 합  (0) 2014.12.19
어셈블리어 곱하기 소스  (0) 2014.12.19
[ASM]구구단 1단 출력  (0) 2014.12.19
[어셈블러] LOOP을 이용한 1부터 10까지 더하기  (0) 2014.12.19
어셈블리어 기본  (0) 2014.12.19