комментирование каждой строки цикла копирования с тем, что делает строка - PullRequest
2 голосов
/ 01 апреля 2019

Мне нужна помощь, комментируя этот код.

В моем задании указано, что мне нужно "написать, что каждая строка делает в виде комментария в коде".

Я не уверен, что прокомментировал их правильно

    .386
    .model flat

    .data
    quote byte "Machines do feel",0   ; message output 
    message byte SIZEOF quote DUP(0),0    

    .code
start proc              ; start of the procedure
mov esi, 0              ; value of esi is zero
mov ecx, SIZEOF quote   ; stores size of the text in ecx
    LP:

mov al, quote[esi]
mov message[esi],al
inc esi               ; increment esi's value
loop LP               ; loop


ret 
    start endp
    end start

Ответы [ 2 ]

1 голос
/ 01 апреля 2019

Если ваше задание говорит, что вам нужно «написать, что каждая строка делает как комментарий в коде»; затем вам нужно написать, что делает каждая строка (а не только то, что делает каждая инструкция).

Предполагается, что вам не нужно комментировать пустые ("только пробелы") строки; Есть 11 строк, которые вы не прокомментировали.

Например (только первые несколько строк), вы, вероятно, хотите что-то вроде:

    .386        ;Tell assembler that the code is intended for an 80386 CPU (e.g. allow 32-bit instructions)
    .model flat ;Tell assembler to use the "flat" memory model (no use of segments and segment registers)

    .data       ;Tell assembler that subsequent lines are for the ".data" section of the output file

Конечно (как уже упоминали другие), вы бы никогда не сделали это в обычном программировании - это просто для удовлетворения требований задания.

1 голос
/ 01 апреля 2019

Я не вижу причин, по которым правила комментариев существенно отличаются только из-за языка сборки. «Прокомментируйте почему». Но поскольку регистры имеют плохие имена, мы должны прокомментировать, для чего они используются, как и в любом другом случае, когда мы не можем использовать хорошее имя.

    .386
    .model flat

    .data
    quote byte "Machines do feel",0   ; message output 
    message byte SIZEOF quote DUP(0),0    

    .code
start proc
mov esi, 0             ; esi = offset counter
mov ecx, SIZEOF quote  ; ecx = loop counter
    LP:

mov al, quote[esi]     ; Copy bytes from quote to message
mov message[esi],al
inc esi
loop LP


ret 
    start endp
    end start

Этот абзац не идиоматичен, но он непротиворечив, поэтому я не собираюсь его совать.

Но почему вы назвали это началом, потому что это ваша точка входа? Это не имеет смысла как точка входа.

...