Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터와 같은 여러 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 공급자에서 실행할 수 있는 as31 명령입니다.
프로그램:
이름
as31 - 인텔 8031/8051 어셈블러
개요
as31 [-h] [-l] [-s] [-v] [-인수] [-Ffmt] [-Ofile] infile.asm
기술
As31 조립하다 infile.asm 여러 출력 형식 중 하나로 변환합니다. 출력은
infile.obj라는 파일에서. .asm 확장자가 필요합니다.
옵션
옵션은 입력 파일 이름 앞에 나타나야 합니다. 두 옵션 모두 선택 사항입니다. 의 텍스트
각 플래그는 플래그와 동일한 인수에 나타나야 합니다. 예를 들어 "-Fod"는 유효한
인수이지만 "-F od"는 그렇지 않습니다.
-h 이로 인해 어셈블러는 해당 옵션을 설명하는 자세한 메시지를 출력합니다.
메시지는 표준 오류에 기록됩니다.
-l 이 옵션은 어셈블러에게 목록 파일도 생성하도록 지시합니다. 목록은
파일 infile.lst에 배치됩니다. 여기서 'infile'은 조립 중인 파일입니다.
이 옵션은 infile.asm 앞의 아무 곳에나 나타날 수 있습니다. 옵션은 격리되어 발생해야 합니다.
명령 행에서.
목록 파일은 60진수 및 최대 XNUMX자의 어셈블러 생성 코드를 보여줍니다.
소스 파일에서 유지됩니다.
-s 이렇게 하면 어셈블러가 출력을 표준 출력에 씁니다.
-v 이렇게 하면 어셈블러가 표준 출력에 버전 번호를 인쇄합니다.
-아르그 이 옵션은 형식에 전달되는 형식별 문자열을 지정합니다.
발전기. "tdr" 형식과 srecord 형식 모두 이 옵션을 사용합니다.
-형식
이 옵션은 사용할 출력 형식을 지정합니다.
현재 사용할 수 있는 유일한 옵션은 다음과 같습니다.
hex 이 형식은 여러 EPROM에서 예상되는 Intel HEX 형식입니다.
프로그래머와 PAULMON 디버거. 일부 프로그래머와 함께 사용하기 위해
출력 파일의 확장자를 .HEX로 변경해야 인식할 수 있습니다.
프로그래머. 아니오 - 옵션이 사용됩니다. 이 형식은 다음과 같은 경우 기본값이어야 합니다.
-F 옵션이 사용되지 않습니다.
tdr 이 형식은 이러한 방식으로 형식화된 XNUMX진수의 asci 파일을 생성하므로
tdr의 디버거에서 읽을 수 있습니다. 인수를 지정할 수 있습니다(참조
-A 옵션) 형식 특정 문자열을 형식 생성기에 전달합니다.
이 경우 인수 문자열은 추가할 오프셋을 나타냅니다.
위치 카운터. 이 오프셋은 XNUMX진수로 지정되며 기본값은
64*1024(0x10000). 100을 지정하고 오프셋하려면 "-Ftdr
-A100" 어셈블러를 호출할 때.
byte 이 형식은 단순히 ascii에서 각 줄의 주소와 바이트입니다. 아니오 -A
옵션이 사용됩니다.
od 이 형식은 다음의 출력과 유사합니다. od(1). 형식은
주소 다음에 XNUMX진수 바이트가 오고 그 뒤에 등가
ASCII. 아니오 - 옵션이 사용됩니다.
srec2, srec3, srec4
srecord 생성기는 2, 3,
또는 4바이트 주소. -A 옵션을 사용하여 기본 주소를 설정할 수 있습니다.
오프셋, 여기서 기본값은 0x0000입니다. TDR).
참고: 이 어셈블러를 사용하면 출력 형식을 확장하여 많은 것을 포함할 수 있습니다.
다른 출력 형식.
-오파일 이 옵션은 출력을 파일에 쓰도록 어셈블러에 지시합니다.
어셈블러 등록절차
이 어셈블러는 표준 8031/8051 명령어 형식을 허용합니다. 아래는
명령 및 주소 지정 모드.
명령 바이트 주기
----------- ----- ------
ACALL 주소11 2 24
추가 A, #data8 2 12
추가 A, @Ri 1 12
A 추가, Rn 1 12
ADD, 직접 2 12
ADDC A, #data8 2 12
ADDC A, @Ri 1 12
ADDC A, Rn 1 12
ADDC A, 직접 2 12
AJMP 주소11 2 24
ANL A, #data8 2 12
ANL A, @Ri 1 12
ANL A, Rn 1 12
ANL A, 직접 2 12
ANL C, /비트 2 24
ANL C, !비트 2 24
ANL C, 비트 2 24
ANL 다이렉트, #data8 3 24
ANL 다이렉트, A 2 12
CJNE @Ri, #data8, 상대 3 24
CJNE A, #data8, 상대 3 24
CJNE A, 직접, 관계 3 24
CJNE Rn, #data8, 상대 3 24
CLR A 1 12
CLR C 1 12
CLR 비트 2 12
CPL A 1 12
CPL C 1 12
CPL 비트 2 12
DA A 1 12
1월 @Ri 12 XNUMX
1월 12일 XNUMX
1월 DPTR 12 XNUMX
1월 12일 XNUMX일
2월 직행 12 XNUMX
DIV AB 1 48
DJNZ Rn, 관계 2 24
DJNZ 직접, 관계 3 24
INC @리 1 12
INC A 1 12
INC DPTR 1 24
INC Rn 1 12
INC 다이렉트 2 12
JB 비트, 관계 3 24
JBC 비트, 관계 3 24
JC 친척 2 24
JMP @A + DPTR 1 24
JMP @DPTR + A 1 24
JNB 비트, 관계 3 24
JNC 친척 2 24
JNZ 친척 2 24
JZ 친척 2 24
LCALL 주소16 3 24
LJMP 주소16 3 24
운동 @Ri, #data8 2 12
MOV @리, 에이 1 12
MOV @Ri, 직접 2 24
MOV A, #data8 2 12
운동 A, @Ri 1 12
MOV A, Rn 1 12
MOV A, 직접 2 12
MOV C, 비트 2 12
MOV DPTR, #data16 3 24
MOV Rn, #data8 2 12
운동 Rn, A 1 12
MOV Rn, 직접 2 24
MOV 비트, C 2 24
MOV 직접, #data8 3 24
MOV 직접 @Ri 2 24
MOV 직접, A 2 12
MOV 직접, Rn 2 24
MOV 직접, 직접 3 24
MOVC A, @A + DPTR 1 24
MOVC A, @A + PC 1 24
MOVC A, @DPTR + A 1 24
MOVC A, @PC + A 1 24
MOVX @DPTR, 에이 1 12
MOVX @리, A 1 24
MOVX A, @DPTR 1 24
MOVX A, @Ri 1 24
MUL AB 1 48
NOP 1 12
ORL A, #data8 2 12
ORL A, @Ri 1 12
ORL A, Rn 1 12
ORL A, 직접 2 12
ORL C, /비트 2 24
ORL C, !비트 2 24
ORL C, 비트 2 24
ORL 다이렉트, #data8 3 24
ORL 다이렉트, A 2 12
POP 다이렉트 2 24
PUSH 다이렉트 2 24
레트 1 24
레티 1 24
RL A 1 12
RLC A 1 12
RR A 1 12
RRC A 1 12
세트 A 1 12
SETB 비트 2 12
SJMP 친척 2 24
자막 A, #data8 2 12
자막 A, @Ri 1 12
서브 A, Rn 1 12
SUBB A, 직접 2 12
스왑 A 1 12
XCH A, # 데이터8 2 12
XCH A, @Ri 1 12
XCH A, Rn 1 12
XCH A, 직접 2 12
XCHD A, #data8 2 12
XCHD A, @리 1 12
XCHD A, Rn 1 12
XCHD A, 직접 2 12
XRL A, #data8 2 12
XRL A, @Ri 1 12
XRL A, Rn 1 12
XRL A, 직접 2 12
XRL 다이렉트, #data8 3 12
XRL 다이렉트, A 2 12
어셈블러 지시문
As31에는 다음과 같은 어셈블러 지시문이 포함됩니다.
.ORG 만료
표현식 expr로 지정된 주소에서 조립을 시작합니다. 오류가 발생합니다
어셈블러가 이전에 생성된 주소 공간에서 어셈블을 시작하면
로 조립.
.EQU 기호, expr
기호를 expr 값으로 설정합니다. expr에 대한 값은 첫 번째 중에 알려야 합니다.
통과, .EQU가 포함된 라인을 만나면.
.BYTE expr, expr, ...
식으로 지정된 바이트를 메모리에 어셈블합니다. 문자열이 될 수도 있습니다.
이 지시문으로 지정됩니다.
.WORD expr, expr, ...
표현식으로 지정된 단어를 메모리에 어셈블합니다. 바이트 순서
used는 8031에서 사용하는 것입니다.
.FLAG 기호1, 기호.[0-7]
symbol1을 symbol.[0-7] 표현식으로 지정된 비트 주소로 설정합니다. 어디
[0-7]은 0과 7 사이의 문자를 나타냅니다. 결과 비트 주소는
유효한 비트 주소인지 확인하십시오.
.END 이 지시문은 무시됩니다.
.SKIP 만료
expr 값을 위치 카운터에 추가합니다. 의 블록을 예약하는 데 사용
초기화되지 않은 데이터 Expr은 바이트 단위여야 합니다.
어휘 대회
- 세미콜론 다음의 모든 문자는 새 줄을 만날 때까지 무시됩니다.
- 숫자가 다음 중 하나로 시작하지 않는 한 모든 숫자는 기본적으로 XNUMX진수입니다.
0x 또는 0X
이것은 0진수를 나타냅니다. 즉. 00xXNUMXff
0b 또는 0B
이것은 이진수를 나타냅니다. (1과 0). 즉. 0b1100110010
0 0377진수를 나타냅니다. 즉. XNUMX
- 숫자가 다음 중 하나로 끝나지 않는 한 모든 숫자는 기본적으로 XNUMX진수입니다.
문자 :
b 또는 B 이진수를 나타냅니다. 위에서 0x를 사용하지 않는 한. 즉. 1010101b
h 또는 H 이것은 항상 XNUMX진수를 나타내지만 첫 번째 문자가
숫자가 아닌 경우 0x 또는 0을 지정해야 합니다. 이것은 혼란을 피합니다
어셈블러는 0진수를 기호로 생각합니다. 예: XNUMXffh,
0xffh, 0XffH, 20h, 0x20 및 020h는 유효한 XNUMX진수를 지정하는 수단입니다. 하지만
다음은 ffh, 0ff가 아닙니다.
d 또는 D 숫자를 0진수로 만듭니다. 129X가 사용되지 않는 한. 즉. XNUMXd
o 또는 O 이렇게 하면 숫자가 377진수로 해석됩니다. 즉. XNUMXo
- 문자 상수는 'c'로 입력할 수 있습니다. 여기서 c는 문자입니다. \b, \n, \r,
\t, \' \0도 유효합니다. 문자 상수는 정수가 사용되는 모든 곳에서 사용할 수 있습니다.
값 수 있습니다.
- 문자열은 큰따옴표 ""로 묶인 문자 집합으로 입력됩니다. 문자열
.BYTE 지시문에서만 유효합니다. \b, \n, \r, \t, \"도 유효한 이스케이프입니다.
그러나 \0은 그렇지 않습니다.
- 지침, 지시문 및 기호: R0, R1, R2, R3, R4, R5, R6, R7, A, AB,
C는 어셈블러 혼동 없이 대문자 또는 소문자로 입력할 수 있습니다. 이것들
그러나 단어는 사용자 기호로 정의할 수 없습니다. 모든 사용자 기호를 사용할 수 있으며
케이스는 보존됩니다. 따라서 사용자 기호 "foo"와 "Foo"는 다르지만
"addc"는 "aDdC"와 동일합니다.
- 기호는 밑줄('_')을 더한 영숫자 문자일 수 있습니다.
- 값이나 기호가 필요한 대부분의 위치에서 표현식이 허용됩니다. 안
식은 다음 연산자로 구성됩니다. 모든 연산자는 정수로 평가됩니다.
개체(우선 순위가 높은 연산자가 먼저 나열됨):
- 단항 빼기
& 비트별 AND.
| 비트별 OR.
* 정수 곱셈.
/ 정수 나눗셈
% 정수 계수
+ 정수 덧셈.
- 정수 빼기.
- 이러한 연산자 외에도 특수 기호 '*'를 사용하여
현재 위치 카운터.
사용 예
아래는 샘플 조립 프로그램입니다.
.org 0
시작: mov P3, #0xff ; P3에서 대체 fns 사용
; P1의 LED가 반전됩니다.
설정 F0 ; 위로 오르다
이동 A, #0x01 ; 초기 비트
쓰기: cpl A ; 써
이동 P1, A
CPL A
호출 지연
jb F0, 상승 ; 어떤 방법으로 등반?
Climbdn: rr A ; 아래로 - 오른쪽으로 이동
jnb ACC.0, 쓰기 ; 더 많은 것을 위해 뒤로
설정 F0
ajmp 쓰기
상승: rl A ; 위로 - 왼쪽으로 이동
jnb ACC.7, 쓰기 ; 더 많은 것을 위해 뒤로
CLR F0
ajmp 쓰기
.끝 ; 이 지시문은 무시되었습니다.
작가
Ken Stauffer(캘거리 대학교)[이메일 보호]>
마틴 랑거[이메일 보호]>
AS31(1)
onworks.net 서비스를 사용하여 온라인에서 as31 사용