프로그래밍

 3198, 1/160 회원가입  로그인  
   thunder994
   [어셈]초본데용 성적출력을 table을 이용해서 출력하는건데 좀 봐주세요 ㅜㅜ

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=3201 [복사]


오늘 성적출력하는걸 배웠는데..그냥 변수로 선언하는건 했어요. 그런데..table을 이용해서 process 각각으로 이동해서 하라는데..강의시간떄 이부분에서 잠깐 멍..때렸더니 지금하려니까 도저히 막막하네요..
이게 process가 함수인지.. ;;너무 초보라서..설명좀 해주시면 감사하겠습니다.
완성 소스를 짜주시면 더더욱이..감사하겠습니당(__).
아래는 기본활용 소스입니다!

.data
CaseTable BYTE 'A'        ; lookup value
        DWORD Process_A        ; address of procedure
        EntrySize = ($ - CaseTable)
        BYTE 'B'
        DWORD Process_B
        BYTE 'C'
        DWORD Process_C
        BYTE 'D'
        DWORD Process_D
NumberOfEntries = ($ - CaseTable) / EntrySize
-------------------------------------------------------
        mov ebx,OFFSET CaseTable        ; point EBX to the table
        mov ecx,NumberOfEntries        ; loop counter
L1:        cmp al,[ebx]        ; match found?
        jne L2        ; no: continue
        call NEAR PTR [ebx + 1]        ; yes: call the procedure
        jmp L3        ; and exit the loop
L2:        add ebx,EntrySize        ; point to next entry
        loop L1        ; repeat until ECX = 0
L3:
---------------------------------------------------------
여기까지가 기본 활용소스이구요.
테이블 말구 그냥 제가 만든 성적소스는
INCLUDE Irvine32.inc
.data
ahn1 BYTE "Input your point.",0dh,0ah,0
ahn4 BYTE "Your grade is",0
mem1 DWORD ?
mem2 DWORD ?
ahn3 BYTE "잘못입력",0
.code
main PROC
call Clrscr
mov edx,OFFSET ahn1
call Writestring
call Readint
mov mem1,eax
cmp eax,-1
je L7
cmp eax,90
jae L1
cmp eax,80
jae L2
cmp eax,70
jae L3
cmp eax,60
jae L4
cmp eax,0
jae L5
L1 :
mov eax,'A'
jmp L6
L2 :
mov eax,'B'
jmp L6
L3 :
mov eax,'C'
jmp L6
L4 :
mov eax,'D'
jmp L6
L5 :
mov eax,'F'
jmp L6
L6:
mov mem2,eax
mov edx,OFFSET ahn4
call Writestring
call Crlf
mov edx,OFFSET mem2
call Writechar
jmp L8
L7:
mov edx,OFFSET ahn3
call WriteString
L8:
exit
main ENDP
END main
여기까지에요.


  Hit : 6487     Date : 2011/11/02 11:48