::: 강좌/소스/문서 :::

강좌/소스/문서 성격에 맞지 않는 광고,비방,질문의 글은 즉시 삭제하며
내용을 복사하여 사용할 경우 반드시 이곳(http://www.howto.pe.kr)을 출처로 명시하여 주세요


Category

  김영대(2003-07-11 17:30:44, Hit : 9634, Vote : 1505
 http://www.howto.pe.kr
 calcasm32.zip (2.4 KB), Download : 1546
 [소스] MASM 간단한 계산기 어셈블리 프로그램 소스

[구현내용]
  postfix 수식을 화면으로 입력받아 결과값을 화면에 출력하는 프로그램
  32bit Protected Mode 로 구현
  모든 연산은 한자리수만 입력받도록 구현
  수식에 공백은 고려하지 않았음. unary operator도 고려하지 않았음

[실행방법]
0.수식표준 : 943*+82/- (계산결과: 17)

1.그냥 엔터만 쳤을때:
  - "수식을 입력하신 후 엔터키를 눌러 주세요..." 메시지 출력 후 다시 입력화면 나타남.

2.Divide by Zero:예)20/엔터  
  - "divide by zero 에러입니다" 메시지 출력 후 다시 입력화면 나타남

3.Invalid Expression:경우의수 잡기
  - 연산자 이외에 0부터 ~ 9이외의 숫자가 나오면
   "수식에 잘못된 문자가 있습니다"라고 메시지 출력 후 다시 입력화면 나타남.
  - 연산자 갯수와 피연산자수의 갯수확인(연산자는 피연산자의 갯수보다 항상 1개 적다)
    여기서는 별도의 개수로 확인하지 않고,
    최종결과 pop후 초기의 SP와 비교후 다르면 오류로 가정. 에러출력 후 SP를 클리어함.
  - 예)23엔터
    "연산자/피연산자가 적절하지 않습니다..." 메시지 출력 후 다시 입력화면 나타남.

4.Register overflow확인
  - 999999999********     (ok)  
  - 9999999999*********   (ok)
  - 99999999999********** (Register overflow발생)
  - "register overflow 에러입니다" 메시지 출력 후 다시 입력화면 나타남

5.화면에서 입력받는 화면 종료시:^+C

[작성자]
  김영대( http://www.howto.pe.kr )





13   [컴퓨터 전공] [소스] 이진 트리(Binary Tree)  김영대 2004/06/18 9784 1823
  [컴퓨터 전공] [소스] MASM 간단한 계산기 어셈블리 프로그램 소스  김영대 2003/07/11 9634 1505
11   [컴퓨터 전공] [소스] Top-down parsing by Recursive-Descent 을 이용한 계산기 MASM 어셈블리 생성기  김영대 2003/07/11 7481 1603
10   [컴퓨터 전공] [소스] Huffman Code Encoder  김영대 2003/03/18 7818 1503
9   [컴퓨터 전공] [소스] Windows RLE(BMP) Encoder  김영대 2003/03/18 7511 1326
8   [컴퓨터 전공] [소스] CompuServe RLE Encoder  김영대 2003/03/18 6172 1438
7   [컴퓨터 전공] [소스] 계산기를 위한 Lex & Yacc  김영대 2003/03/15 9806 1599
6   [컴퓨터 전공] [소스] ANSI-C 파서를 위한 Lex & Yacc  김영대 2003/03/13 8644 1931
5   [컴퓨터 전공] [소스] PL/0 Compiler 구현  김영대 2003/03/13 7435 1693
4   [컴퓨터 전공] [소스] Recursive-Descent 파싱을 이용한 계산기 구현  김영대 2003/03/13 10276 1613
3   [컴퓨터 전공] [소스] POSIX thread를 사용한 행렬계산  김영대 2003/03/13 7356 1510
2   [컴퓨터 전공] [소스] 0/1 배낭 문제(Knapsack Problem)  김영대 2003/03/13 9027 1601
1   [컴퓨터 전공] [소스] SIC/XE 어셈블러 구현  김영대 2003/03/13 18545 1858

1
 

Copyright 1999-2017 Zeroboard / skin by zero