어셈블리 클래스를 가져오고 있는데 시험이오고 있습니다. 그래서 어셈블리와 같은 비 구조적 언어로 된 소스 코드의 표준 형식과 구조는 무엇입니까?)? 현재 새 탭 열의 레이블 다음에 실행하고 나중에 사용하지 않을 불필요한 레이블을 사용하지 않는 모든 것을 가지고 아래처럼 코드를 포맷하고 싶습니다.어셈블리 형식 및 코드 구조
code segment
start:
mov ax,data
mov ds,ax
mov cx,2
label1:
mov dl,'a'
mov ah,2
int 21h
loop label1
mov ah,4ch
int 21h
code ends
하지만 교수님은 완전히 우스꽝스럽게 생각하는 것을하고 있습니다. 물론
PRINT_HEX PROC
H1: MOV BP,SP
MOV CX,4
H2: MOV BX,[BP+2]
H3: XOR DL,DL
PUSH CX
MOV CX,4
H4: SHL BX,1
RCL DL,1
H5: LOOP H4
POP CX
H6: CMP DL,9
JA GRAMMA
ADD DL,48
JMP H7
GRAMMA: ADD DL, 55
H7: MOV AH,2
INT 21H
H8: LOOP H3
H9: RET
PRINT_HEX ENDP
그는 분명 내가 약 조립 그러나 그의 방법은 나에게 잘못된 것보다 더 많이 알고 : 그는 불필요한 레이블을 사용하여 레이블 탭을 사용하지 않는, 아래처럼 코드를 포맷합니다. 라벨이있는 언어로 코드를 포맷하는 표준 방법은 무엇입니까?
들여 쓰기를 제외하고, 개인적으로, 외부 레이블은 나를 괴롭 히며, 특히 후자의 코드에서와 같이 무의미한 이름을 붙입니다. 그가 가르치면서 특정 지시 사항을 쉽게 참조 할 수 있도록 추가하는 것이 아니라고 확신합니까? –
다른 언어와 마찬가지로 많은 스타일이 있습니다 (그리고 필연적 인 화염 전쟁). 대부분의 주석 체계는 들여 쓰기 된 opcode가있는 가장 왼쪽 열의 레이블입니다. 일부 어셈블러 파서가이 규칙을 시행합니다. 귀하의 변형도 확실히 사용되며, 종종 기본 제어 구조를 제공하는 매크로 패키지와 결합됩니다. 고백해야합니다. 비록 아무도 무차별 적으로 모든 라인에 레이블을 붙이는 것을 본 적이 없지만 – doynax
@JoachimIsaksson, 나중에 그는 언급하지 않습니다. 위의 코드에서 명확하게 볼 수는 없지만 비슷한 코드 세그먼트를 분리하기 위해 두었습니다. 사물을 인쇄하는 줄이 3 줄이면 레이블 아래에이 세 줄을 같이 넣었을 것입니다. – SteveL