2013-12-21 3 views
0

Я беру класс сборки, и экзамены идут, поэтому я должен спросить, каков стандартный формат и структура исходного кода на неструктурном языке, таком как сборка (специфичная для 8086)? В настоящее время мне нравится форматировать код, как показано ниже, со всем, что выполняется после метки в новом столбце вкладки, и не использовать ненужные метки, которые я не буду использовать позже.Формат сборки и структура кода

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 

Конечно, он, очевидно, знает больше, чем я о сборе, но его путь кажется мне неправильным. Каков стандартный способ форматирования кода на языках с метками?

+1

Отступ в сторону, лично, посторонние ярлыки меня тоже меняют, особенно так бессмысленно, как в последнем коде. Вы уверены, что он просто не добавляет их, чтобы он мог легко обращаться к конкретным инструкциям во время обучения? –

+0

Существует много стилей, как на любом другом языке (и неизбежные пламенные войны, которые следуют). Самая схема комментариев - это метки в крайнем левом столбце с отступом. Некоторые ассемблерные парсеры применяют это соглашение. Ваш вариант, безусловно, также используется, часто в сочетании с макро пакетами, обеспечивающими базовые структуры управления. Должен признаться, я никогда не видел, чтобы кто-либо без разбора маркировал каждую строку раньше, хотя – doynax

+0

@JoachimIsaksson, нет, он не ссылается на них позже, в приведенном выше коде, который вы не можете видеть, но он просто кладет их туда, чтобы разделить сегменты кода, которые аналогичны вещи, как если бы у него было 3 строки, которые печатали символ, он бы поставил эти 3 строки вместе под лейблом. – SteveL

ответ

1

Я не думаю, что существует стандартный стиль для наложения сборки, так как нет единого стандарта для написания на C. Это говорит о том, что я считаю ваш подход вполне разумным: циклы внутри процедуры легко обнаруживаются, счетчик циклов на том же уровне остальной части тела цикла и пустую строку для визуального отображения этого кодового блока.

Для древнего кода, написанный на ассемблере для 8-битовых компьютеров, я нашел много раз это разновидности Writting:

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 

Я думаю, что традиция положить этикетки, начиная с первой колонкой идет от времени что ассемблеры были довольно простыми программами, которые делали некоторые предположения о том, куда должны идти метки, инструкции и операнды. Мой первый, Hisoft DevPac для ZX Spectrum, предположил, что все, что написано в первом столбце, является меткой, и, следовательно, ему не нужен двоеточие после самой метки. Поскольку в то время было много людей, которые изучали ассемблер, они продолжали называть его так же, как и раньше (включая меня).

Смежные вопросы