¾î¼Àºí¸®¾î °Ô½ÃÆÇ
(http://bi.snu.ac.kr/~skim/lecture/assem03)
¾Ë¸²: ÆíÀÇ»ó Á¦¸ñ¿¡ ¸î¹ÝÀÎÁö¸¦ Àû¾îÁÖ¼¼¿ä. ¿¹: [x¹Ý] Á¦¸ñ

May 22, 2004 (02:57) from 211.191.246.62
Written by ¼±ÀÌ (skim@bi.snu.ac.kr) Hits : 4188 , Lines : 86
[½Ç½À] Å°º¸µå ÀÔ·ÂÀ» ¼ýÀÚ·Î º¯È¯ (1¹Ý)(5/21)
; Å°º¸µå·Î ÀԷ¹ÞÀº ¼ýÀÚ·Î ±¸¼ºµÈ xÀÚ¸® ¹®ÀÚ¿­À»
; ½ÇÁ¦ÀÇ ¼ýÀÚ·Î º¯È¯ÇØ º¯¼ö¿¡ ÀúÀåÇÏ´Â ÇÁ·Î±×·¥ ÀÛ¼º

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

DSEG SEGMENT
BUFFER DB 5 DUP(?)
NUM    DW ?
MULS   DW ?
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 BUFFER, 4   ; ÀÔ·ÂÇÒ ÃÖ´ë¹®ÀÚ¼ö(+1)
MOV AH, 0AH
LEA DX, BUFFER ; ¿ÀÇÁ¼Â
INT 21H

; ¹®ÀÚ¿­ -> ¼ýÀÚ (ÆíÀÇ»ó NUM, MULS ¸ðµÎ WORDÇü)

MOV NUM, 0 ; °á°ú º¯¼ö ÃʱâÈ­  
MOV MULS, 1000 ; °ö¼À¿¡ ´ëÇÑ ÃʱⰪ (*10)
MOV CX, 3 ; ¹Ýº¹È½¼ö ÁöÁ¤
MOV SI, 2 ; ¹öÆÛ À妽º ÃʱâÈ­
L1:

; ¼ýÀÚÀÇ °¢ ÀÚ¸®¼ö¿¡ °öÇØÁú ¼ýÀÚ °è»ê(1 or 10 or 100...)
; DIV operand(byte;Á¦¼ö)
; DIV ¸í·É¹® -> AX(word;ÇÇÁ¦¼ö) / operand(byte)
; DIV °á°ú -> AL(¸ò), AH(³ª¸ÓÁö)

MOV BL, 10 ; Á¦¼ö ¼¼ÆÃ
MOV AX, MULS ; ÇÇÁ¦¼ö ¼¼ÆÃ
DIV BL ; ¸òÀº AL¿¡...ÀúÀå

MOV AH, 0 ; AL->AX·Î È®ÀåÇϱâ À§ÇÔ. BUT, À̹®Á¦¿¡¼­´Â OPTIONAL
MOV MULS, AX ; °öÇØ¾ß ÇÏ´Â ¼ö MULS¿¡ ÀúÀå

; ÇöÀç ó¸®ÇÒ ÀÚ¸®ÀÇ ¹®ÀÚ¸¦ ¼ýÀÚ·Î º¯È¯

SUB BUFFER[SI], '0'

; ÇöÀç ó¸®ÇÒ ÀÚ¸®¼ö¿¡ À§¿¡ ±¸ÇÑ ¼ýÀÚ(1 or 10 or 100....)¸¦ °öÇÔ
; MUL operand(byte)
; MUL ¸í·É¹® -> operand * AL(operand)
; MUL °á°ú -> AX(word)

MOV AX, MULS
MUL BUFFER[SI] ; AX = º¯È¯µÈ ¼ýÀÚ(BUFFER[SI]) * MULS

; Áß°£°á°ú °è»ê(NUM = NUM + °ö¼À °á°ú°ª)
ADD NUM, AX

ADD SI, 1 ; ´ÙÀ½ LOOP¸¦ À§ÇØ ¹öÆÛ À妽º Áõ°¡

LOOP L1

; Å×½ºÆ®(Áß¿äºÎºÐÀº ¾Æ´Ô. ´Ü¼ø üũ¿ë)
MOV DL, 0DH
MOV AH, 02H
INT 21H

MOV DL, 0AH
MOV AH, 02H
INT 21H

MOV DL, BYTE PTR NUM
MOV AH, 02H
INT 21H

RET
MAIN ENDP
CSEG ENDS
END MAIN

Modify Delete Post Reply Backward Forward List