GNUSim 8085
GNUSim8085GNUSim8085 - N-queens 프로그램을 디버깅합니다. | |
| 원저작자 | 스리다르 라트나쿠마르 |
|---|---|
| 초기 릴리즈 | 2003년, 18~19년 전 |
| 안정된 릴리스 | 1.4.1 / 2018년 7월 , 전( |
| 저장소 | |
| 기입처 | C |
| 운영 체제 | Linux, Microsoft Windows |
| 이용가능기간: | 영어, 아랍어, 아스투리아어, 브라질 포르투갈어, 에스페란토, 프랑스어, 독일어, 그리스어, 구자라티어, 이탈리아어, 칸나다어, 러시아어, 스페인어, 타밀어 |
| 유형 | 컴퓨터 시뮬레이션 |
| 면허증. | GNU 일반 공중 라이선스 |
| 웹 사이트 | gnusim8085 |
GNUSim8085는 Linux 및 Windows용 인텔8085 마이크로프로세서용 그래픽 시뮬레이터, 어셈블러 및 디버거입니다.이는 [1]2008년 2월에 발표된 FOSS India Awards의 20개 수상자 중 하나이다.GNUSim8085는 2003년 가을 Sridhar Ratnakumar가 Linux용 시뮬레이터가 존재하지 않는다는 것을 깨달았을 때 작성되었습니다.GNUSim8085 [2]커뮤니티에서는 몇 가지 패치, 버그 수정 및 소프트웨어 패키징을 제공하고 있습니다.GNUSim8085 사용자는 [3]시뮬레이터의 코딩, 문서화, 테스트, 번역 및 포팅을 통해 시뮬레이터에 기여할 것을 권장합니다.
GNUSim8085 개발은 2016년 [4]9월 현재 진행 중입니다.
특징들
에디터
- 모든 표준 지침을 위한 대화형 입력 마법사가 있는 프로그램 편집기
- 명령, 오퍼랜드, 코멘트 등을 구별하기 위한 에디터의 구문 강조 표시.
- 조립된 코드를 16진수로 표시하는 별도의 opcode 뷰
어셈블러
- 8085의 모든 표준 명령 지원
- 데이터 로케이션을 제어하기 위한 3개의 어셈블러 디렉티브(.equ, .db, .ds)에 대한 최소한의 지원.코드 로케이션을 직접 제어하는 디렉티브는 없습니다.
- 코드 시작은 소스 코드 외부에서 정의됩니다("load me at" entry)". 정의되지 않은 경우(기본값), 코드가 4200h(실제 리셋 벡터 0000h가 아닌)부터 생성됩니다.
- 어셈블리 결과를 목록 파일로만 저장할 수 있습니다(바이너리 파일 출력 없음).
디버거
- 레지스터 및 플래그 전체 보기
- 중단점 지원
- 프로그램의 단계별 실행/디버깅
- 16진수/10진수 변환기
- 정의된 스택 및 소스 코드 변수의 런타임 검사
- 메모리 및 I/O 포트 런타임 검사 및 조작
인쇄
- 에디터에서 프로그램 인쇄 및 조립된 16진수 코드(Windows에서는 잘 작동하지 않는 것으로 알려져 있음)
코드 예시
- 나눗셈의 기능.
jmp 개시하다 데이터 v_divisor: ds 1; v_module: ds 1; v_rest: ds 1; v_result: ds 1; 코드 function to_party는 각 "division"에 1을 추가하여 나눗셈을 수행합니다. para_parair_parte: 하지 않다 반송주소를 지정합니다. 팝 d; ; BC의 파라미터를 취득합니다. 팝 b; A의 배당금을 삭감하다 움직이다 a,b; cmp c; 제수가 배당보다 크지 않은지 비교합니다. jc end_division 여기서부터 분할이 이루어지다. 디비전: 후보선수 c; 배당 제수의 값을 감소시킵니다. 입력 h; 결과 값을 증가시킵니다. cmp c; 배당이 제수보다 큰지 여부를 비교합니다. jnc 나누기더 크지 않으면 디비전으로 뛰어내린다. fim_divisao: 움직이다 b,a;가 나머지 부분을 차지합니다. 밀다 h결과를 예측하다 밀다 b나머지를 처리하다 밀다 d;반환필 리트 시작: 하지 않다 ;모든 레지스터를 삭제합니다. mvi b,00h; mvi c,00h; mvi d,00h; mvi e,00h; mvi h,00h; mvi l,00h; ;196 = 10 mvi a,02h; 스타 v_filename(v_module); ;divisor = 2 mvi a,02h; 스타 v_divisor; ;zera 결과 mvi a,00h; 스타 v_result(결과); 값을 BC에 로드합니다. lda v_filename(v_module); 움직이다 b,a; lda v_divisor; 움직이다 c,a; 스택에 파라미터를 배치합니다. 밀다 b; 부서를 호출하다 불러 para_param_para_parts; 나머지 부서원들. 팝 b; 움직이다 a,b; 스타 v_rest 나머지 부서원들. 팝 h; 움직이다 a,h; 스타 v_result(결과) 할 수 없다; - 요인 대화형.
jmp 개시하다 ;변수: fat, i, n; v_fat: ds 1; v_i: ds 1; v_n: ds 1; 선언의 끝 시작: 하지 않다; 프로그램 시작; mvi a, 05h; n < = 5 (표준 A); 스타 v_n; 변수 v_n은 값 기록기 A를 저장합니다. 불러 보이드_지방; 메서드 void_fatiter를 호출한다. void_fatiter: 하지 않다; 메서드 뚱뚱{ mvi a, 01h; 지방 < = 1 (표준 A); 스타 v_fat; 변수 v_fat은 값 기록기 A를 저장합니다. ;contrace do if(n>0){ lda v_n; 변수 v_n의 값을 기록기 A에 로드합니다. 움직이다 b, a; 레지스터 A의 값을 기록기 B로 이동합니다. mvi a, 00h; 레지스터 A를 클리어합니다. cmp b; 레지스터 B의 값을 기록기 A와 비교한다. jnz fim_if; 0이 아닌 경우(= 0에 대해 값이 B인 경우) end_함수로 점프한다. fim_if: jnc 리턴_지방함수가 생성되지 않은 경우 return_fat case o 함수를 호출한다. inicio_용: 하지 않다; 시작(i = 1, i <= n; i++){ mvi a, 01h; i < = 1 (레코더 A); 스타 v_i; 변수 v_i는 값 기록기 A를 저장합니다. r1: 하지 않다; 로티나 1; 움직이다 c, a; 레지스터 A의 값을 기록기 C로 이동합니다. lda v_n; 변수 v_n의 값을 기록기 A에 로드합니다. cmp c; 레지스터 C의 값을 기록기 A와 비교한다. jc r4; 루틴 4 se der carry로 점프; r4: 불러 복수; 루틴 4, 함수를 멀티 호출; r3: lda v_i; 로티나 3, 변수 v_i의 값을 기록기 A에 로드한다. 입력 a; 기록기 A의 값을 증가시킨다. 스타 v_i; 변수 v_i는 값 기록기 A를 저장합니다. jmp r1; 루틴 1로 이동합니다. r2: 불러 리턴_지방; 루틴 2; 함수를 호출한다.return_fat; 멀티: 하지 않다; 펑상 멀티; lda v_fat; 변수 v_fat의 값을 기록기 A에 로드합니다. 움직이다 b, a; 레지스터 A의 값을 기록기 B로 이동합니다. lda v_i; 기록장치 A에 대한 용기 v_i; 움직이다 d, a;는 기록기 A의 값을 기록기 D에 로드합니다. 움직이다 e, a; 레지스터 A의 값을 기록기 E로 이동합니다. cmp b; 기록기 B의 값을 기록기 A와 비교한다. jz r3;가 0이 아니면 루틴 3으로 점프한다. DCR d; 기록기 D의 값을 감소시킵니다. lda v_fat; 변수 v_fat의 값을 기록기 A에 로드합니다. r5: 더하다 b; 로티나 5, soma o valor do registrador A com o valor do registrador B; DCR d; registerrador D의 용기 감소; jnz r5; pula para rotina 5 se nao der zero; 스타 v_fat; 변수 v_fat은 값 기록기 A를 저장합니다. lda v_n;는 기록기 v_n의 값을 기록기 A에 로드합니다. cmp e; 기록기 E의 값을 기록기 A와 비교한다. jz r2; 루틴 2 se der 0으로 점프; 리트; calling multi로 돌아갑니다. ;종료: } ;종료: } return_fat: 하지 않다; 함수 return_fat; lda v_fat;는 변수 v_fat para o registrador A의 값을 로드합니다. 할 수 없다;종료; 레퍼런스
- ^ FOSS India Award는... 2008-02-27 Wayback Machine에서의 아카이브
- ^ 명예의 전당
- ^ GNUSim8085에 기여
- ^ Git 커밋 로그