문제:

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
Posted by 知彼知己百戰不殆
,

INCLUDE Irvine32.inc

.data
str1 BYTE "Input the exam grade: ",0
str2 BYTE "Grade: ",0
str3 BYTE 'A','B','C','D','F'

.code
main PROC
Grade:
 mov  edx, OFFSET str1
 call WriteString
 call ReadInt
 
 mov  ebx,41h
 cmp  eax,90
 jge  L1
 inc  ebx

 cmp  eax,80
 jge  L1
 inc  ebx

 cmp  eax,70
 jge  L1
 inc  ebx

 cmp  eax,60
 jge  L1
 
 mov  ebx,46h
 jmp  L1

L1:
 mov  edx,OFFSET str2
 call WriteString
 mov  eax,ebx
 call WriteChar
 call Crlf
 jmp  Grade

main ENDP
END main

 

90~100 : A등급

80~89 : B등급

70~79 : C등급

60~69 : D등급

0~59 : F등급

'언어 > Assembly' 카테고리의 다른 글

명령어  (0) 2015.12.16
0dh,0ah  (0) 2015.12.16
어셈블리 과제: 32비트 정수 부울 계산기  (0) 2015.12.05
Posted by 知彼知己百戰不殆
,