문제:
32비트 정수에 대한 간단한 부울 계산기로 동작하는 프로그램을 작성하시오. 이 프로그램은 사용자에게 다음 리스트에서 선택하도록 요청하는 메뉴를 표시해야 한다.
1. x AND y
2. x OR y
3. NOT x
4. x XOR y
5. Exit program
사용자가 선택하면 수행할 연산의 이름을 표시하는 프로시저를 호출한다. (우리는 다음 연습문제에서 이 연산들을 구현할 것이다.)
INCLUDE Irvine32.inc
.data
menu BYTE "1. x AND y",0dh,0ah
BYTE "2. x OR y",0dh,0ah
BYTE "3. NOT x",0dh,0ah
BYTE "4. x XOR y",0dh,0ah
BYTE "5. Exit Program",0
menu1 BYTE "x AND y",0
menu2 BYTE "x OR y",0
menu3 BYTE "NOT x",0
menu4 BYTE "x XOR y",0
menu5 BYTE "Exit Program",0
str1 BYTE "Select the menu: "
int1 DWORD ?
int2 DWORD ?
.code
main PROC
START:
mov edx,OFFSET menu
call WriteString
call Crlf
call Crlf
mov edx, 0
mov edx,OFFSET str1
call WriteString
call ReadInt
cmp eax, 1
je STATE1
cmp eax, 2
je STATE2
cmp eax, 3
je STATE3
cmp eax, 4
je STATE4
cmp eax, 5
je QUIT
STATE1:
call AND_op
jmp START
STATE2:
call OR_op
jmp START
STATE3:
call NOT_op
jmp START
STATE4:
call XOR_op
jmp START
QUIT:
mov edx,OFFSET menu5
call WriteString
call Crlf
exit
main ENDP
AND_op PROC
mov edx,OFFSET menu1
call WriteString
call Crlf
ret
AND_op ENDP
OR_op PROC
mov edx,OFFSET menu2
call WriteString
call Crlf
ret
OR_op ENDP
NOT_op PROC
mov edx,OFFSET menu3
call WriteString
call Crlf
ret
NOT_op ENDP
XOR_op PROC
mov edx,OFFSET menu4
call WriteString
call Crlf
ret
XOR_op ENDP
END main
'언어 > Assembly' 카테고리의 다른 글
명령어 (0) | 2015.12.16 |
---|---|
0dh,0ah (0) | 2015.12.16 |
어셈블리 과제: 점수 입력 받아서 점수에 해당하는 등급 출력하는 코드 (0) | 2015.12.05 |