В JavaScript не рекомендуется перебирать массив с циклом for-in, но лучше использовать цикл for, например:
for(var i=0, len=myArray.length; i < len; i++){}
Он также оптимизирован («кеширование» массива длина). Если вы хотите узнать больше, прочитайте мое сообщение по этому вопросу .
Что делает WriteString? Если функция печатает строку, возможно, вам нужно закончить «символ BYTE» c «" с помощью $ (если это DOS-программа. 09 function Int21h)
В файле WriteString [] отображается строка с нулевым завершением. Некоторые могут загрузить справку в виде CHM-файла здесь (IrvineLibHelp.exe) .
Немного небрежно сказать «EDX = указывает на строку». EDX просто указывает на адрес памяти, идентифицируемый меткой (здесь: «символ»). WriteString
получит байт для байта из этого местоположения и напишет его как директиву или директиву, независимо от его реального типа или намерения, до тех пор, пока он не встретится с байтом со значением 0. MASM не имеет директивы для определения строки с последними 0, поэтому его нужно добавить вручную:
character BYTE "c", 0
Альтернативный способ печати символа - использовать WriteChar :
...
; print the character
mov al, character
call WriteChar
loop L2
mov ecx, count ; reset our outside loop
loop L1
...
character BYTE "c"
Должно быть:
character BYTE "c",0dh,0ah,0