본문 바로가기
지난 학기들의 기록/어셈블리어

[8086 어셈블리어] AND,OR,XOR,NOT 연산기 구현하기

by 아메리카노와떡볶이 2020. 12. 14.
728x90
8086 어셈블리어 AND, OR , XOR ,NOT 연산기 구현하기

이번 포스트에서는 AND,OR,XOR,NOT 연산을 실행해주는 코드를 구현해보겠습니다. 

출력예시

사용자로부터 사용하고싶은 연산을 선택받고, 연산할 대상 숫자를 입력받습니다. 주의해야할것은 AND, OR, XOR 연산의 경우 두가지 숫자를 입력받지만 NOT연산이 선택된 경우 한가지 숫자를 입력받습니다.

또한 메뉴선택이나 숫자입력에서 조건에 맞지않는 값이 입력되었을때 에러문구를 출력하며, 다시 사용자에게 입력을 요구합니다.

메뉴 입력 오류 예시
숫자 입력 오류예시

 

풀이코드

먼저 input_number 프로시저를 호출해서, 메뉴와 숫자를 입력받습니다. 입력 프로시저에서 bh레지스터에 메뉴값을

ch,cl레지스터에 입력숫자를 저장했습니다. 그리고 메뉴값을 비교해서 해당되는 label로 이동하게합니다

 

각 연산 label에서는 AND,OR,XOR,NOT 연산을 실행하고 sum_print label로 이동해서 결과값을 출력합니다.

이때 연산에서 사용된 숫자들은 value 즉 사용자가 입력한 값의 10진수값이지만 , 출력할때는 그 숫자에 대응되는 아스키코드 값으로 바꾸어야하기때문에 sum_print label에서  add ch , '0' 의 코드가 필요합니다.

 

input_number proc -1

처음 메인에서 호출한 input_number 프로시저 내용입니다. 여기서는 메뉴번호와 숫자를 입력받고 입력오류검사까지 수행해야합니다.

input_number proc -2

오류검사를 통과한 경우 input_exit라벨로 이동하게되고, 메인으로 돌아가기전에 연산을 수행해야하므로 입력숫자에서 '0'을 빼서 아스키코드상 숫자가 아닌 value 값으로 만들어줍니다.

728x90

댓글