飛上

rabe.egloos.com

포토로그



부울 연산을 하는 어셈블러 프로그램 by 재동이

16진수를 입력받아서 AND OR XOR NOT 연산을 수행하는 어셈블러 프로그램

소스코드&실행파일.zip

 

---------------------------------------------------------------

TITLE bool calculator

INCLUDE Irvine32.inc


.data

s_menu         BYTE 0dh,0ah,"->BOOL CALCULATOR<-",0dh,0ah,"1,x AND y",0dh,0ah,"2,x OR y",0dh,0ah,"3,NOT x",0dh,0ah, "4,x XOR y",0dh,0ah, "5.Exit program",0dh,0ah,"Select ->",0

s_input1         BYTE "input x (in hexadecimal):",0

s_input2         BYTE "input y (in hexadecimal):",0

s_result         BYTE "result; ",0


.code

main PROC

START:

        mov edx,OFFSET s_menu

        call WriteString

        call ReadInt

        mov ecx,eax


        cmp ecx,5      ;메뉴에서 종료를 선택

        je QUIT

        cmp ecx,0

        jle START      ;메뉴에 해당하는 값이 없으면 다시처음으로 돌아감

        cmp ecx,5

        jg START      ;메뉴에 해당하는 값이 없으면 다시처음으로 돌아감


        ;인자를 한개 받는 메뉴

        mov edx,OFFSET s_input1

        call WriteString

        call ReadHex

        cmp ecx,3      ;3번메뉴는 인자수가 하나이다.

        je C_NOT


        ;인자를 두개 받는 메뉴

        mov ebx,eax

        mov edx,OFFSET s_input2

        call WriteString

        call ReadHex

        cmp ecx,1      ;1,2,4 번 메뉴는 인자수가 두개이다.

        je C_AND

        cmp ecx,2

        je C_OR

        cmp ecx,4

        je C_XOR

        

C_AND:

        call AND_op

        jmp PRINT_RESULT

C_OR:

        call OR_op

        jmp PRINT_RESULT

C_NOT:

        call NOT_op

        jmp PRINT_RESULT

C_XOR:

        call XOR_op

        jmp PRINT_RESULT


PRINT_RESULT:         ;결과값을 출력한다.

        mov edx,OFFSET s_result

        call WriteString

        call WriteHex

        jmp START


QUIT:

        exit

main ENDP


AND_op PROC  ;인자값으로 eax와 ebx가 들어온다.

        and eax,ebx

        ret

AND_op ENDP


OR_op PROC  ;인자값으로 eax와 ebx가 들어온다.

        or eax,ebx

        ret

OR_op ENDP


NOT_op PROC  ;인자값으로 eax가 들어온다.

        not eax

        ret

NOT_op ENDP


XOR_op PROC  ;인자값으로 eax와 ebx가 들어온다.

        xor eax,ebx

        ret

XOR_op ENDP

END main


-----------------------------------------------------------------




덧글

댓글 입력 영역